2013-08-23 44 views
2

我的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

回答

1

維克斯3.8使用boostrapper應用程序管理當安裝.NET 4.0的前提條件。這可以讓你的.Net 4.0 MBA運行。如果您的應用程序需要,您可以在鏈中部署.Net 3.5 SP1。示例如下(在我的一束工作): http://neilsleightholm.blogspot.com/2012/05/wix-burn-tipstricks.html

+0

謝謝您的答覆。該軟件包安裝了它的prereq。NET 3.5 SP1就好了,如果需要的話,它會啓動MBA。有一個例外:當.NET 3.5(不含SP1)存在時,它將跳過PrereqPackage .NET 3.5 SP1的安裝,立即啓動MBA。Detect-/InstallCondition不應該是問題:它們總是評估爲false/true 。當我手動運行SP1安裝程序(與ExePackage/@ DownloadUrl相同)時,它安裝正常。 – Marco