我的WiX的燒傷(v3.8.611.0)軟件包不誤(?)不要安裝它PrereqPackage的.NET Framework當系統有.NET 3.5安裝3.5 SP1。相反,它會啓動Managed Bootstrapper Application(在我的情況下,至少需要.NET 3.5 SP1)。維克斯包未安裝前提條件NetFx35 SP1時NetFx35已經存在
NetFx35 SP1 ExePackage安裝正確如果安裝了以前的或無NETFX版本(具有3.0 SP2,2.0 SP2和沒有.NET框架在所有測試)。但是,如果我通過NetFx 3.5進行安裝,則不會。
<Bundle>
...
<WixVariable Id="WixMbaPrereqPackageId" Value="Netfx35SP1" />
<WixVariable Id="WixMbaPrereqLicenseUrl" Value="NetfxLicense.rtf" />
...
</Bundle>
<Fragment>
<PackageGroup Id="Netfx35SP1PackageGroup">
<ExePackage Id="Netfx35SP1"
DisplayName=".NET Framework 3.5 SP1"
Cache="no"
Compressed="no"
PerMachine="yes"
Permanent="yes"
Vital="yes"
InstallCommand="/q /norestart"
SourceFile="$(var.NetFx35SetupFileName)"
DownloadUrl="$(var.NetFx35Setup)"
DetectCondition="1 > 2"
InstallCondition="2 > 1" />
</PackageGroup>
</Fragment>
請注意DetectCondition = 「1> 2」 和InstallCondition = 「2> 1」。
我在XP Pro x64(SP2),XP Pro x86(SP3)和Vista HP x86(SP2)上進行了測試,每次至少安裝一次NetFx 3.0和NetFx 3.5。我對所有測試都有同樣的行爲。
我錯過了什麼嗎?這是一個錯誤?
爲了澄清:我沒有得到任何錯誤消息。日誌文件沒有說任何可疑的東西。但是我的Managed Bootstrapper應用程序崩潰,因爲缺少.NET Framework 3.5 SP1。
日誌文件說:
刻錄v3.8.611.0時,Windows V5.2(建設3790:Service Pack 2中),路徑:Z:\ temp_install \ Setup.exe時,CMDLINE: ''
設置字符串變量 'WixBundleLog' 到值 'C:\ DOCUME〜1 \ ADMINI〜1個\ LOCALS〜1 \ TEMP \ 20130823152241.log'
設置字符串變量 'WixBundleOriginalSource' 爲值Z:\ temp_install \ SETUP.EXE '
條件'((Versio ((版本NT> = v5.2)和(ServicePackLevel> = 2))或(版本NT> = v6.0)'計算結果爲真(nNT> = v5.1)AND(ServicePackLevel> = 3)
設置字符串變量 'WixBundleName' 價值 'MyBundle'
加載管理引導器應用。
創建BA線程異步運行。
檢測開始,5包
設置字符串變量 'Netfx35Version' 爲值3.5.21022.08'
條件 '1> 2' 的計算結果爲假。
檢測包:Netfx35SP1,狀態:無,緩存:無
檢測完成後,結果是:爲0x0
謝謝您的答覆。該軟件包安裝了它的prereq。NET 3.5 SP1就好了,如果需要的話,它會啓動MBA。有一個例外:當.NET 3.5(不含SP1)存在時,它將跳過PrereqPackage .NET 3.5 SP1的安裝,立即啓動MBA。Detect-/InstallCondition不應該是問題:它們總是評估爲false/true 。當我手動運行SP1安裝程序(與ExePackage/@ DownloadUrl相同)時,它安裝正常。 – Marco