WIX工具集 - 卸载.exe文件

时间:2017-09-08 15:45:17

标签: wix windows-installer

我编写了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>

1 个答案:

答案 0 :(得分:1)

作为一般性评论,您通常不应该在MSI中运行另一个exe,特别是如果它是在添加/删除程序中显示的安装。您应该使用引导程序将多个安装链接在一起,这是您尝试执行此操作的首选方法。

<小时/>

由于您从自定义操作运行setup_exe,因此还需要相应的自定义操作才能将其卸载。

它基本上与您用来安装的格式相同,除了卸载命令行参数,无论它们是什么。

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

当您尝试使用/不升级打包的exe安装来支持升级时,此方法会遇到问题。强烈建议您使用wix burn bootstrapper(学习曲线的位)或其他可用的bootstrappers进行多次安装。这些将更加强大和正确地支持两个安装以及升级和卸载。