Gil*_*lad 7 windows-installer wix bootstrapper wix3.5 wix3.6
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
xmlns:netfx='http://schemas.microsoft.com/wix/NetFxExtension'>
<Bundle Name="IPDev" Version="0.6" Manufacturer="MYAPP Corporation" UpgradeCode="f380ae43-5df1-4cfe-9297-526e3e638e57">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
<Chain>
<!-- TODO: Define the list of chained packages. -->
<PackageGroupRef Id="Netfx45FullPackage"/>
</Chain>
</Bundle>
<Fragment>
<!--checking for matlab 2012a installation-->
<util:RegistrySearch Id="MatlabPath"
Variable="UniqueId"
Root="HKLM"
Key="SOFTWARE\MathWorks\MATLAB\4.17\"
Result="exists"
Win64="yes"
/>
<!--checking for matlab MCR 2012a 64 bit installation-->
<util:RegistrySearch Id="MatlabMCRPath"
Variable="UniqueId"
Root="HKLM"
Key="SOFTWARE\MathWorks\MATLAB Compiler Runtime\7.17\"
Result="exists"
Win64="yes"
/>
<PackageGroup Id="Netfx45FullPackage">
<ExePackage Id="Netfx45Xxx" Cache="no" Compressed="no" PerMachine="yes" Permanent="yes" Vital="no" InstallCommand="/q"
SourceFile="..\SetupProject\dotnetfx45_full_x86_x64.exe"
DetectCondition="(Netfx4FullVersion="4.5.50709") AND (NOT VersionNT64 OR (Netfx4x64FullVersion="4.5.50709"))"
InstallCondition="(VersionNT >= v6.0 OR VersionNT64 >= v6.0) AND (NOT (Netfx4FullVersion="4.5.50709" OR Netfx4x64FullVersion="4.5.50709"))"/>
<ExePackage Id="MatlabMCR2012a64" Cache="no" Compressed="no" PerMachine="yes" Permanent="yes" Vital="no" InstallCommand="/q"
SourceFile="..\SetupProject\MCR_R2012a_win64_installer.exe"
InstallCondition="(NOT MatlabPath) OR (NOT MatlabMCRPath)"/>
<MsiPackage Id="IPDev" Cache="no" Compressed="no" DisplayInternalUI="yes" Vital="yes" SourceFile="..\SetupProject\bin\Release\IPDevSetup.msi"/>
</PackageGroup>
</Fragment>
</Wix>
Run Code Online (Sandbox Code Playgroud)
这是我的代码:我的问题是只有.NET4.5存在才会安装.
但无论是否存在,都会安装MATLAB的MCR.
你能告诉我我的病情有什么问题吗:
InstallCondition="(NOT MatlabPath) AND (NOT MatlabMCRPath)"
Run Code Online (Sandbox Code Playgroud)
Rob回答后修复:
DetectCondition="MatlabMCRPathExists OR MatlabPathExists"
Run Code Online (Sandbox Code Playgroud)
这种情况应该是假的,以便安装
这是我的最终和正在运行的代码:
此代码检查用于.NET 4.5安装.适用于Matlab R2012a或Matlab MCR R2012a.
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
xmlns:netfx='http://schemas.microsoft.com/wix/NetFxExtension'>
<Bundle Name="IPDev" Version="0.6" Manufacturer="Intel Corporation" UpgradeCode="f380ae43-5df1-4cfe-9297-526e3e638e57">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
<Chain>
<!-- TODO: Define the list of chained packages. -->
<PackageGroupRef Id="Netfx45FullPackage"/>
</Chain>
</Bundle>
<Fragment>
<!--checking for matlab 2012a installation-->
<util:RegistrySearch Id="MatlabPath"
Variable="MatlabPathExists"
Root="HKLM"
Key="SOFTWARE\MathWorks\MATLAB\4.17"
Result="exists"
Win64="yes" />
<!--checking for matlab MCR 2012a 64 bit installation-->
<util:RegistrySearch Id="MatlabMCRPath"
Variable="MatlabMCRPathExists"
Root="HKLM"
Key="SOFTWARE\MathWorks\MATLAB Compiler Runtime\7.17"
Result="exists"
Win64="yes" />
<PackageGroup Id="Netfx45FullPackage">
<ExePackage Id="Netfx45Xxx" Cache="no" Compressed="no" PerMachine="yes" Permanent="yes" Vital="no" InstallCommand="/q"
SourceFile="..\SetupProject\dotnetfx45_full_x86_x64.exe"
DetectCondition="(Netfx4FullVersion="4.5.50709") AND (NOT VersionNT64 OR (Netfx4x64FullVersion="4.5.50709"))"
InstallCondition="(VersionNT >= v6.0 OR VersionNT64 >= v6.0) AND (NOT (Netfx4FullVersion="4.5.50709" OR Netfx4x64FullVersion="4.5.50709"))"/>
<ExePackage Id="MatlabMCR2012a64" Cache="no" Compressed="no" PerMachine="yes" Permanent="yes" Vital="no" InstallCommand="/q"
SourceFile="..\SetupProject\MCR_R2012a_win64_installer.exe"
DetectCondition="MatlabMCRPathExists OR MatlabPathExists"/>
<MsiPackage Id="IPDev" Cache="no" Compressed="no" DisplayInternalUI="yes" Vital="yes" SourceFile="..\SetupProject\bin\Release\IPDevSetup.msi"/>
</PackageGroup>
</Fragment>
</Wix>
Run Code Online (Sandbox Code Playgroud)
该InstallCondition属性用于确定是否应在计算机上安装软件包。如果为 true,则允许安装该软件包。如果为 false,则卸载该包。您需要一个DetectCondition属性来确定该包是否已存在于计算机上。
解决方法可能只是将 Matlab 更改ExePackage/@InstallCondition为ExePackage/@DetectCondition.
| 归档时间: |
|
| 查看次数: |
5556 次 |
| 最近记录: |