WIX:如何检测是否安装了第三方应用程序而不使用注册表搜索



我正在尝试使用WiX创建安装程序。我的问题是,我必须安装第三方软件,只有当它还没有安装或它的版本比当前的版本旧。请看下面的例子。如果你能给我一些关于这个第三方软件的建议,那就太好了。如何防止卸载它,如果它是由另一个程序使用或只是保持永久?

我不喜欢使用注册表搜索。我想添加的这个软件是Dokan驱动程序。

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
     xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension"
     xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
    <Bundle Name="MyApp" Version="1.2.0.0" Manufacturer="Me" 
      UpgradeCode="{GUID}" IconSourceFile="..icon.ico">
    <BootstrapperApplicationRef 
      Id="WixStandardBootstrapperApplication.RtfLicense" >
      <bal:WixStandardBootstrapperApplication
        LogoFile="..lo64.png" LicenseFile="License.rtf"/>
    </BootstrapperApplicationRef>
      <Chain>
        <PackageGroupRef Id="NetFx45Web"/>
        <ExePackage 
          SourceFile="..ThirdPartySoftware_0.6.0.exe" 
          Permanent="yes" 
          InstallCondition="NOT Installed"/>
        <MsiPackage SourceFile="..MyApp.msi"/>
      </Chain>
    </Bundle>
</Wix>

有了这个编辑,我现在有了检查Dokan是否安装的安装程序,如果没有安装它。

我尝试检查版本,但文件没有版本化,它给我NULL异常。

<util:FileSearch
      Id="CheckDokan"
      Path="[ProgramFilesFolder]DokanDokanLibrarydokanctl.exe"
      Variable="Dokan"
      Result="exists"/>
<Chain>
  <PackageGroupRef Id="NetFx45Web"/>
  <ExePackage
        SourceFile="Dokan.exe"
        Permanent="yes"
        InstallCommand="/q" 
        DetectCondition='Dokan'/>
   <MsiPackage SourceFile="MyApp.msi"/>
</Chain>

我可以说@Yawar帮了我。

方法1

你可以使用文件搜索

<util:FileSearch  
Id="CheckFile"
Path="[CommonAppDataFolder]thirdpartappthirdparty.dll"
Variable="THIRDPARTYFILE" 
Result="version" /> 

您可以通过以下方式检查Adobe Air

<util:FileSearch  
Id="CheckAir"
Path="[CommonFilesFolder]Adobe AIRVersions1.0Adobe AIR.dll"
Variable="ADOBEAIRFILE" 
Result="version" />

然后在检测条件中使用这个变量,比如

DetectCondition='NOT Installed AND ADOBEAIRFILE>=v2.6.0'

我希望它能帮助你:)

方法2:

如果没有找到版本则使用

<util:FileSearch  
Id="CheckFile"
Path="[CommonAppDataFolder]thirdpartappthirdparty.dll"
Variable="THIRDPARTYFILE" 
Result="exists" /> 

然后修改检测条件

DetectCondition='THIRDPARTYFILE'

要了解更多详细信息,请参阅文档。http://wixtoolset.org/documentation/manual/v3/xsd/util/filesearch.html

最新更新