2014-09-19 65 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> 

相关问题