【发布时间】:2019-10-05 13:35:00
【问题描述】:
我正在创建 msi 安装程序,它使用 wix 工具集为 Windows 自动启动运行服务。 msi 已成功编译和安装,并且服务工作正常。
问题是,当我尝试在控制面板中卸载程序时,它显示以下消息:
我尝试从 regedit 中删除该程序并尝试使用以下命令进行安装:
MsiExec /I installer.msi REINSTALLMODE=voums REINSTALL=ALL
这是产品和包装声明的代码:
<Product Name='Foobar 1.0' Manufacturer='Acme Ltd.' Id='6DA5C23A-86C7-4D14-AEC0-86416A69ABDE' UpgradeCode='6DA5C23A-7349-453F-94F6-BCB5110BA4FD' Language='1033' Codepage='1252' Version='1.0.0'>
<Package Id='*' Keywords='Installer' Description="Acme's Foobar 1.0 Installer" Comments='Foobar is a registered trademark of Acme Ltd.' Manufacturer='Acme Ltd.' InstallerVersion='100' Languages='1033' Compressed='yes' SummaryCodepage='1252' />
在INSTALLDIR,我有一个exe文件用于服务,并做一些操作:
<Directory Id='INSTALLDIR' Name='Foobar 1.0'>
<Component Id='ConfPathEnv' Guid='6DA5C23A-6BE3-460D-A14F-75658D16550B' KeyPath="yes">
<Environment Id="AQLIGHT_CONFIG_PATH" Name="AQLIGHT_CONFIG_PATH" Value="[INSTALLDIR]config.json" Permanent="yes" Part="last" Action="set" System="yes" />
</Component>
<Component Id='MainExecutable' Guid='6DA5C23A-83F1-4F22-985B-FDB3C8ABD471'>
<File Id='serviceEXE' Name='service.exe' DiskId='1' Source='service.exe' KeyPath='yes' />
<ServiceInstall Id="InstallService" Name="AqLightService" DisplayName="AqLightService 1.0" Start="auto" ErrorControl="normal" Arguments="install" Type="ownProcess" />
<ServiceControl Id="ControlService" Name="AqLightService" Start="install" Stop="uninstall" Remove="uninstall" Wait="yes" />
</Component>
</Directory>
为了在卸载程序时删除文件夹,我使用以下代码:
<Directory Id="ProgramMenuFolder" Name="Programs">
<Directory Id="ProgramMenuDir" Name="Foobar 1.0">
<Component Id="ProgramMenuDir" Guid="6DA5C23A-7E98-44CE-B049-C477CC0A2B00">
<RemoveFolder Id='ProgramMenuDir' On='uninstall' />
<RegistryValue Root='HKCU' Key='Software\[Manufacturer]\[ProductName]' Type='string' Value='' KeyPath='yes' />
</Component>
</Directory>
</Directory>
我多次尝试更改每个组件的 GUID,但没有帮助。
【问题讨论】:
-
这会发生在干净的测试机器、开发机器还是用户机器上?当安装程序出现明显错误并且最容易诊断和修复时,干净的测试机器会有所帮助。开发人员机器在工作时很好,但本身可能会成为问题。用户机器可以发现更多现实世界的问题,但奇怪的问题可能不值得花时间去诊断。
-
@TomBlodget,感谢您的评论。发现日志记录的问题,问题是由于 CustomAction。它在卸载过程中运行,这就是导致问题的原因。
-
卸载失败几乎都是自定义操作。希望您在干净的 VM 或可以重新映像的机器上进行测试。从机器上安装失败很有趣但可行。
-
你把这个排序了吗?
标签: wix windows-installer