使用WiX工具集构建的控制面板中的卸载程序问题

时间:2019-05-18 13:56:27

标签: wix windows-installer

我正在创建msi安装程序,该程序使用wix工具集为Windows自动运行运行服务。 msi已成功编译和安装,服务正常运行。

问题是,当我尝试在控制面板中卸载程序时,它显示以下消息:

problem

我试图从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,但这没有帮助。

1 个答案:

答案 0 :(得分:1)

自定义操作 :该错误消息可能有多种含义,但最常见的是由失败的自定义操作引起的。但是,在这种情况下,该消息似乎来自 iTunes

记录 :没有两种解决方法:您需要冗长的日志文件来尝试了解这一点(适当调整路径):

msiexec.exe /x "Setup.msi" /L*V "C:\Setup.log"
  

自我修复? :我的猜测是您的计算机/ Windows Installer数据库已损坏,或者您遇到了自我修复问题   通过入侵注册表而变成了损坏的计算机。也许。 On Self-Repair


条件 :当您需要条件仅在特定时间/安装模式下运行时-您需要处理条件。关于MSI条件,以前有很多答案。他们总是很难正确,测试是必不可少的。请参阅以下答案以获取信息:

这种情况可能对您已经足够(不保证):

NOT Installed AND NOT UPGRADINGPRODUCTCODE

请在所有安装模式下进行测试: install uninstall modify repair self-repair patching major upgrade etc... 。很难说出事情如何共谋,不能替代现实世界的测试(只是为了说明显而易见的事实)。


以下是有关记录和解释日志文件的更多详细信息: