我有一个安装程序完成了WiX。安装完成后,它会启动一个应用程序,该应用程序会在Explorer进程中注入一些代码。
目前,当我卸载时,重新启动管理器开始工作,并提出关闭我的应用程序和资源管理器。相反,我想手动关闭我的应用程序(这是通过在命令行上使用-exit再次运行它来完成的)。我有一个自定义操作来完成这项工作。
这是我到目前为止尝试过的:
<CustomAction ExeCommand="-exit" FileKey="MyApp.exe" Id="CloseMyApp" Impersonate="yes" Return="ignore" />
<InstallExecuteSequence>
<RemoveExistingProducts After="InstallInitialize" />
<Custom Action="CloseMyApp" Before="RemoveFiles" />
</InstallExecuteSequence>这不管用。该操作是在重新启动管理器会话之后执行的。因此,重新启动管理器弹出,并要求关闭我的应用程序和资源管理器。该操作稍后会运行,但到那时应用程序已经消失了。
所以我试了一下:
<InstallExecuteSequence>
<RemoveExistingProducts After="InstallInitialize" />
<Custom Action="CloseMyApp" Before="RemoveExistingProducts" />
</InstallExecuteSequence>这也不起作用。行动仍然为时已晚。我还收到了"warning LGHT1076 : ICE63: Some between and RemoveExistingProducts.“。
因此,基本上-如何在卸载期间和重新启动管理器会话之前执行我的自定义操作?
我猜如果我使用Impersonate="no“,它可能会在正确的时间运行,但这不是一个选项。这是因为新进程必须以与必须关闭的进程相同的用户身份运行,因为它会查看其窗口并发送消息。如果这两个进程属于不同的用户,那么这就比较棘手了。
有什么想法吗?
发布于 2010-07-11 09:19:04
您需要在InstallValidate之前运行CloseMyApp自定义操作,因为这是处理重新启动管理器的时候(doc。或者,您可以使用MSIDISABLERMRESTART或MSIRESTARTMANAGERCONTROL属性禁用重新启动管理器。
https://stackoverflow.com/questions/3112121
复制相似问题