我尝试使用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]Dokan\DokanLibrary\dokanctl.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帮助了我。
答案 0 :(得分:4)
方法1
您可以使用文件搜索
<util:FileSearch
Id="CheckFile"
Path="[CommonAppDataFolder]thirdpartapp\thirdparty.dll"
Variable="THIRDPARTYFILE"
Result="version" />
您可以通过以下方式检查Adobe Air
<util:FileSearch
Id="CheckAir"
Path="[CommonFilesFolder]\Adobe AIR\Versions\1.0\Adobe AIR.dll"
Variable="ADOBEAIRFILE"
Result="version" />
然后在检测条件中使用此变量,如
DetectCondition='NOT Installed AND ADOBEAIRFILE>=v2.6.0'
我希望它会对你有所帮助:)。
方法2:
如果找不到版本,请使用此
<util:FileSearch
Id="CheckFile"
Path="[CommonAppDataFolder]thirdpartapp\thirdparty.dll"
Variable="THIRDPARTYFILE"
Result="exists" />
然后修改检测条件
DetectCondition='THIRDPARTYFILE'
有关详细信息,请按照文档进行操作.. http://wixtoolset.org/documentation/manual/v3/xsd/util/filesearch.html