我正在使用WindowsInstallerXML3.0 (WIX3)来安装一些软件。
但是,一切都很好,但是,我很难处理以下用例:当用户试图卸载时,安装的软件仍在运行。默认行为似乎删除了所有文件,但允许应用程序运行(在我的示例中很难看到,因为它位于任务托盘中)。
我在我的installer.wxs文件中添加了以下代码:
<InstallExecuteSequence>
<Custom Action="WixCloseApplications" Before="RemoveFiles" />
</InstallExecuteSequence>
<util:CloseApplication Id="CloseFoobar"
CloseMessage="no"
Description="FooBar is still running!"
ElevatedCloseMessage="no"
RebootPrompt="no"
Target="foobar.exe" />但这不起作用-更糟糕的是,它显示了一个对话框,要求在安装期间重新启动!
怎样才是正确的方法呢?
发布于 2009-04-02 17:12:07
据我所知,向您的UI添加以下引用就足够了:
<DialogRef Id="FilesInUse" />
<DialogRef Id="MsiRMFilesInUse" />CloseApplication只用于在安装过程中关闭应用程序,但它是错误的(至少几个月前我尝试过它,也许它现在已经修复了?)
不幸的是,这也是WiX文档非常糟糕的一个例子,甚至没有记录像这样的标准安装/卸载场景。
发布于 2009-04-02 22:39:26
几天前,wix用户的邮件列表上也有类似的问题。给出的答案是:
这就是Windows运行前Vista和重新启动管理器的方式.必须有一个顶层窗口可用。托盘里的应用不算数。
在wix-用户档案中也有一些关于这个主题的线程。
发布于 2009-04-03 06:39:44
您能检查卸载日志(下面是如何启用它们)吗?据我所知,Windows会将您的文件置于删除挂起状态,并要求在结束时重新启动。
此外,您还可以编写一个简单的自定义操作,它将杀死您的进程。
https://stackoverflow.com/questions/710647
复制相似问题