我正在尝试使用 WiX 为我的软件编写 MSI 安装程序/卸载程序。该软件带有一个本地服务和一个始终一起运行的相关用户模式进程,即当服务停止时,我的服务会自动关闭用户模式进程。(否则,如果用户模式进程自行终止,服务将尝试重新启动它。)
因此,对于卸载,我想出了以下标记:
<Component Id="idCmp_MySrvc"
Guid="MY_GUID">
<File Id="idFile_srvc.exe"
Name="srvc.exe"
Source="Sources\Code\srvc.exe"
Vital="yes"
KeyPath="yes" />
<File Id="idFile_usermodule.exe"
Name="usermodule.exe"
Source="Sources\Code\usermodule.exe"
Vital="yes"
KeyPath="yes" />
<ServiceControl Id="idMySrvc"
Name="MyServiceName"
Stop="uninstall" />
</Component>
这个想法是,当服务停止时,它将关闭我的usermodule.exe
进程。
但是我想到了三个问题/问题:
1:当我编译它时,它给了我以下错误:
错误 CNDL0042:组件元素设置了多个键路径。密钥路径只能在支持它的扩展元素或以下位置之一中设置为“是”:Component/@KeyPath、File/@KeyPath、RegistryValue/@KeyPath 或 ODBCDataSource/@KeyPath。
2:如何确保MSIusermodule.exe
在卸载检查期间不打扰进程?
3:我是否需要添加任何特定于我的服务和/或用户模式进程的内容以使其符合卸载程序?