2014-09-19 61 views
1

我是Wix的新用戶。我創建了一個Wix bootstrapper項目。我打算使用從註冊表搜索定義的變量來檢查我的.net可再發行組件安裝是否應該運行。但是,從這個源中我看到了如何包含不同.net安裝的鏈接bundling .net如何在我的離線Wix刻錄包中安裝.net可再發行軟件包

但是,如本文所述,這不適用於脫機的安裝程序。

有沒有辦法將我的.net安裝捆綁到我的刻錄軟件包中,仍然使用類似的東西來運行.net安裝?我再次提到wix,我認爲PackageGroupRef在這裏工作的方式是隻在需要時才運行這個.net版本的安裝。

例子:

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" 
    xmlns:bal="http://schemas.microsoft.com/wix/BalExtension" 
    xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" 
    xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension" > 


<Bundle ...> 
    <Chain> 
     <PackageGroupRef Id="NetFx451Redist" /> 
     <MsiPackage ... /> 
    </Chain> 
</Bundle> 
</Wix> 

下面是我用什麼,它安裝在Win 7並安裝.NET 4.5.1和拆除後,我的安裝並重新安裝不調用.NET 4.5.1安裝。

使用Ricks例子,我做到了。不過,我必須包含NetFx451MinRelease的定義。有一些我錯過了,但現在它正在工作。謝謝里克。

<?define NetFx451MinRelease = 378675 ?> 
<util:RegistrySearchRef Id="NETFRAMEWORK45"/> 

    <Chain> 

    <ExePackage Id="Netfx451Full" 
       DisplayName="Microsoft .NET Framework 4.5.1" 
       SourceFile="..\..\Requirements\NDP451-KB2858728-x86-x64-AllOS-ENU.exe" 
       InstallCommand="/passive /norestart" 
       Permanent="yes" 
       Vital="yes" 
       Compressed="yes" 
       DetectCondition="NETFRAMEWORK45 &gt;= $(var.NetFx451MinRelease)" /> 


    </Chain> 
+0

請發表您的答案,因爲答案從問題中分離出來,當你決定這是最好的答案,接受它。 – 2014-09-19 23:58:08

回答

0

將.NET脫機/獨立安裝程序添加到設置中,並使用靜默安裝開關進行安裝。

檢查http://unattended.sourceforge.net/installers.php瞭解更多信息。可能特定於wix的信息,但它應該有所幫助。

這個答案 - https://stackoverflow.com/a/2899673/1678053 - 是另一種方法。

UPDATE:
我認爲這是你要找的東西:https://stackoverflow.com/a/14341308/1678053

+0

如果我明白你的答案,我不打算在一邊建立一個包含.net安裝程序的DVD。我正試圖將安裝程序嵌入到燒錄軟件包中。我知道我可以通過使用ExePackage和SourceFile以及一個變量來顯示安裝的.net版本。我試圖看看內置的wix .net ext是否可以一起處理並可以打包以前下載的版本.net安裝程序 – dgxhubbard 2014-09-19 21:20:45

+0

@dgxhubbard我只使用Inno,從未使用過Wix。我所做的是在我的設置中包含.NET的設置。所以在安裝時將設置解壓縮到輸出目錄。然後我使用上述方法將.NET安裝爲安裝後作業,然後刪除安裝文件。再一次,我不知道維克斯是否有更好的方式來做到這一點。 – gldraphael 2014-09-19 21:37:35

+0

@dgxhubbard支票更新 – gldraphael 2014-09-19 21:39:20

0

採取這裏一看,What is the difference between NetFx45WebLink and NetFx45RedistLink

我們所做的事情(對.NET 4.0)是複製和修改源特別是將SourceFile屬性設置爲包含下載的可再發行的.Net安裝程序的路徑。

.NET 4.0例如

<Fragment> 
    <util:RegistrySearch Root="HKLM" Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full" Value="Version" Variable="Netfx4FullVersion" /> 
    <util:RegistrySearch Root="HKLM" Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full" Value="Version" Variable="Netfx4x64FullVersion" Win64="yes" /> 

<PackageGroup Id="Netfx4Full"> 
    <ExePackage Id="Netfx4Full" 
       DisplayName="Microsoft .NET Framework 4.0" 
       SourceFile="..\redist\dotNetFx40_Full_x86_x64.exe" 
       InstallCommand="/passive /norestart" 
       Permanent="yes" 
       Vital="yes" 
       Compressed="yes" 
       DetectCondition="Netfx4FullVersion AND (NOT VersionNT64 OR Netfx4x64FullVersion)" /> 
</PackageGroup> 
</Fragment> 
+0

工作就像一個魅力。我使用了你所擁有的一切,但是使用了他們的變量NetFx451MinRelease。 – dgxhubbard 2014-09-19 23:24:54

0

使用仔細/被動開關。

<Fragment> 
<WixVariable Id="WixMbaPrereqPackageId" Value="Netfx451Full" /> 
<WixVariable Id="WixMbaPrereqLicenseUrl" Value="$(var.NetFx40EulaLink)" /> 

<util:RegistrySearch Root="HKLM" Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full" Value="Version" 
        Variable="Net4FullVersion" /> 
<util:RegistrySearch Root="HKLM" Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full" Value="Version" 
        Variable="Net4x64FullVersion" Win64="yes" /> 

<PackageGroup Id="Netfx451Full"> 
    <ExePackage Id="Net45" Name="Microsoft .NET Framework 4.5.1.exe" 
       Description="Microsoft .NET Framework 4.5.1 AllOS (x86 and x64) Setup" 
       Cache="no" Compressed="no" PerMachine="yes" Permanent="yes" Vital="yes" 
       InstallCommand="/norestart" 
       SourceFile="$(var.PreRequisites_x86)DotNetFramework\NDP451-KB2858728-x86-x64-AllOS-ENU.exe" 
       DetectCondition="(Net4FullVersion = &quot;4.5.50938&quot;) AND (NOT VersionNT64 OR (Net4x64FullVersion = &quot;4.5.50938&quot;))" 
       InstallCondition="(VersionNT >= v6.1 OR VersionNT64 >= v6.1) AND (NOT (Net4FullVersion = &quot;4.5.50938&quot; OR Net4x64FullVersion = &quot;4.5.50938&quot;))" /> 
</PackageGroup> 

相關問題