我使用Wix Toolset 3.8创建了一个MSI安装程序包,该程序包由在" SYSTEM"下运行的第三方安装程序服务运行。帐户。我的问题是,当尝试使用自定义操作从我的MSI安装程序启动并运行已安装的可执行文件时,它也在SYSTEM帐户下运行,而不是当前登录的管理员帐户。我花了几个小时研究网络和从我读过的,指定Impersonate =" yes"将在启动安装程序的帐户下运行该特定自定义操作,但存在问题。由于第三方安装程序服务是从SYSTEM帐户运行的,因此指定Impersonate =" yes"只是在SYSTEM帐户下运行自定义操作也是正确的吗?至少那是我的测试所显示的。我的MSI安装程序的一些背景知识:
InstallScope="perMachine"
<CustomAction Id="StartAction"
Directory="FOLDER"
ExeCommand ='cmd.exe /c start MYEXE.exe /tray'
Execute="immediate"
Impersonate="yes"
Return="check"/>
<InstallExecuteSequence>
<Custom Action='StartAction' Before='InstallFinalize'>NOT Installed</Custom>
</InstallExecuteSequence>
我已尝试过两次&#34;延期&#34;和&#34;立即&#34; for Execute以及设置&#34; Impersonate&#34;是和否。有没有办法让这项工作?我想过使用runas命令,但我不知道启动安装的用户帐户的密码。
谢谢!
答案 0 :(得分:1)
EXE文件在做什么?您是否可以控制应用程序,以便将逻辑从外部EXE移动到主应用程序的启动逻辑中?
除此之外,您可以通过ActiveSetup注册这样一个EXE文件,以便每个用户运行一次。您还可以找到another answer from me here。
以下是ActiveSetup解释的另一个链接(我更喜欢上面的那个):http://www.ewall.org/tech/msi/self-healing
另见这些答案:Stopping MSI from launching an EXE in the SYSTEM context