Wix 了解MSI卸载-EXECUTEACTION=INSTALL

Wix 了解MSI卸载-EXECUTEACTION=INSTALL,wix,windows-installer,wix3.5,wix3.6,Wix,Windows Installer,Wix3.5,Wix3.6,我想在卸载期间运行的自定义操作有问题。 自定义操作负责注销系统级windows服务 自定义操作: <CustomAction Id='UnregisterService' Directory='INSTALLDIR' ExeCommand='[INSTALLUTIL] /u &quot;/config=[INSTALLDIR]\configInstall.xml&quot; &quot; ... Return='ignore'

我想在卸载期间运行的自定义操作有问题。 自定义操作负责注销系统级windows服务

自定义操作:

     <CustomAction Id='UnregisterService'
    Directory='INSTALLDIR'
    ExeCommand='[INSTALLUTIL] /u &quot;/config=[INSTALLDIR]\configInstall.xml&quot;  &quot; ...
    Return='ignore'
    Execute='deferred' />
我的问题是:

  • msi卸载的流程是什么?(否在web上找不到它…)
  • 为什么我在卸载过程中获得“安装”操作
  • 如何强制卸载以运行“注销服务”自定义操作

  • 谢谢

    在您完全理解Windows Installer之前,应该避免自定义操作,以避免用更脆弱的解决方案重新发明轮子。要在卸载期间删除服务,您只需:

    <ServiceControl Id="myService" Name="MyService" Stop="both" Remove="uninstall"/>
    
    
    
    阅读这篇好文章:


    Windows installer安装事务可以采用多种形式。初始安装、修复、维护安装、卸载、升级、修补等。安装程序在不同级别跟踪功能、组件和产品的状态变化,因此安装/卸载的概念更为详细。

    不应该安装
    而不是升级ProductCode
    (其中包含
    )?是的,谢谢,修复了。REMOVE=“ALL”不升级ProductCode将是卸载的条件,但升级时则不是。正如Chris所说,您无论如何都不应该这样做-安装/卸载/启动/停止/删除服务有很多标准支持。我需要向服务传递参数:[INSTALLUTIL]/u”/config=[INSTALLDIR]\configInstall.xml”“…我如何使用ServiceControl做到这一点?ServiceControl将替换该调用。
    
    Property(C): EXECUTEACTION = INSTALL
    Property(C): ACTION = INSTALL
    Product: BLABLA -- Installation completed successfully.MSI (c) (BC:50) [14:35:37:067]: Windows Installer installed the product. Product Name: BLABLA . Product Version: 5.1.0. Product Language: 1033. Manufacturer: BLABLA Team. Installation success or error status: 0.
    
    <ServiceControl Id="myService" Name="MyService" Stop="both" Remove="uninstall"/>