MSI安装程序:帮助从基于服务的安装程序使用CustomAction运行基于UI的EXE

时间:2014-08-06 21:02:37

标签: wix windows-installer

我使用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命令,但我不知道启动安装的用户帐户的密码。

谢谢!

1 个答案:

答案 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