【问题标题】:WIX Toolset - uninstalling .exe fileWIX 工具集 - 卸载 .exe 文件
【发布时间】:2017-09-09 11:39:40
【问题描述】:

我编写了 Wix 安装程序,将 PyTangoArchiving-7.3.2.win-amd64.exe 文件包装到 PyTangoArchivingInstaller.msi 包中。 我认为安装过程是正确的,在控制面板-> 程序中我可以看到安装了两个附加程序: PyTangoArchiving-7.3.2.win-amd64.exe - 我想安装的程序 我的包装器 - PyTangoArchivingInstaller。

但是当我尝试卸载应用程序时,只有包装器被卸载并且整个程序(PyTangoArchiving-7.3.2.win-amd64.exe)仍然存在,我必须从控制面板手动卸载它。 某人可以帮我解决这个问题吗?

这是我的代码:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="*" Name="PyTangoArchivingInstaller" Language="1033" Version="1.0.0.0" Manufacturer="test" UpgradeCode="PUT-GUID-HERE">
        <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

    <WixVariable Id="WixUILicenseRtf" Value="$(var.ProjectDir)\License.rtf"/>
    <Property Id="WIXUI_INSTALLDIR" Value="INSTALLLOCATION"/>


    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
    <MediaTemplate  EmbedCab="yes"/>  
    <UIRef Id="WixUI_InstallDir"/>   

    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id='TempFolder'>       
          <Directory Id="INSTALLLOCATION" Name="MyApp" >
            <Component Id='MyComponent'   Guid='*'>
          <File Id="mysetup_exe" Source="PyTangoArchiving-7.3.2.win-amd64.exe" />
        </Component>        
        </Directory>
      </Directory>
    </Directory>
    <Feature Id="MainApplication" Title="Main Application" Level="1">
      <ComponentRef Id="MyComponent" />
    </Feature>
    <CustomAction Id="run_setup" FileKey="mysetup_exe" ExeCommand="/SP- /SILENT /SUPPRESSMSGBOXES /LANG=English 
                  /NOCANCEL /DIR=&quot;[INSTALLLOCATION]&quot;"
                  Execute="deferred" Impersonate="no"
                   Return="check" />

    <InstallExecuteSequence>
      <Custom Action="run_setup" Sequence='5401'>NOT Installed</Custom>
    </InstallExecuteSequence>
  </Product>
</Wix>

【问题讨论】:

标签: wix windows-installer


【解决方案1】:

一般来说,您通常不应该在 MSI 中运行另一个 exe,尤其是当它是显示在添加/删除程序中的安装时。您应该改为使用引导程序将多个安装链接在一起,这是执行您想做的事情的首选方式。


由于您通过自定义操作运行 setup_exe,因此您还需要相应的自定义操作来卸载它。

除了卸载命令行参数(不管它们是什么)之外,它基本上与您用于安装的格式相同。

您需要在“RemoveFiles”标准操作之前安排您的卸载自定义操作,以便在您尝试运行自定义操作时安装 exe 仍然存在。您还应该使用REMOVE~="ALL" AND NOT UPGRADINGPRODUCTCODE 调整此自定义操作。

当您尝试支持升级或不升级打包的 exe 安装时,这种方法会遇到问题。强烈建议您使用 wix burn 引导程序(有点学习曲线)或其他可用引导程序之一进行多个安装安装。这些将更加健壮和正确地支持两次安装以及升级和卸载。

【讨论】:

    猜你喜欢
    • 2018-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-22
    • 2010-09-16
    • 1970-01-01
    相关资源
    最近更新 更多