gpt4 book ai didi

WiX 卸载 - 在重新启动管理器之前关闭应用程序

转载 作者:行者123 更新时间:2023-12-01 11:59:21 33 4
gpt4 key购买 nike

我有一个使用 WiX 完成的安装程序。安装完成后,它会启动一个应用程序,在 Explorer 进程中注入(inject)一些代码。

目前,当我卸载时,重新启动管理器会启动并关闭我的应用程序和资源管理器。相反,我想手动关闭我的应用程序(这是通过在命令行上使用 -exit 再次运行它来完成的)。我有一个自定义操作可以做到这一点。

到目前为止,这是我尝试过的:

<CustomAction ExeCommand="-exit" FileKey="MyApp.exe" Id="CloseMyApp" Impersonate="yes" Return="ignore" />

<InstallExecuteSequence>
<RemoveExistingProducts After="InstallInitialize" />
<Custom Action="CloseMyApp" Before="RemoveFiles" />
</InstallExecuteSequence>

这行不通。该操作在 Restart Manager session 之后完成。所以重启管理器弹出并要求关闭我的应用程序和资源管理器。该操作稍后运行,但此时应用程序已经消失。

然后我尝试了这个:

<InstallExecuteSequence>
<RemoveExistingProducts After="InstallInitialize" />
<Custom Action="CloseMyApp" Before="RemoveExistingProducts" />
</InstallExecuteSequence>

这也行不通。 Action 还是来不及了。我还收到“警告 LGHT1076:ICE63:某些操作介于 InstallInitialize 和 RemoveExistingProducts 之间。”。

那么基本上 - 我如何在卸载期间和重新启动管理器 session 之前执行我的自定义操作?

我猜如果我使用 Impersonate="no"它可能会在正确的时间运行,但那不是一个选项。这是因为新进程必须为与必须关闭的进程相同的用户运行,因为它会查找其窗口并发送消息。如果进程属于不同的用户,那将更加棘手。

有什么想法吗?

最佳答案

您需要在 InstallValidate 之前运行 CloseMyApp 自定义操作,因为那是处理重启管理器的时间 (doc)。或者,您可以使用 MSIDISABLERMRESTART 或 MSIRESTARTMANAGERCONTROL 属性禁用重新启动管理器。

关于WiX 卸载 - 在重新启动管理器之前关闭应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3112121/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com