我是Wix的新手。我创建了一个Wix bootstrapper项目。我打算使用从注册表搜索定义的变量来检查我的.net可再发行安装是否应该运行。但是,从这个来源我看到了如何包含不同.net安装bundling .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 >= $(var.NetFx451MinRelease)" />
</Chain>
答案 0 :(得分:1)
看看这里,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>
答案 1 :(得分:0)
将.NET offline / standalone安装程序添加到安装程序并使用静默安装开关进行安装。
查看http://unattended.sourceforge.net/installers.php了解详情。可能是wix特有的信息,但应该有所帮助。
这个答案 - https://stackoverflow.com/a/2899673/1678053 - 是另一种方式。
更新:
我认为这就是你要找的东西:https://stackoverflow.com/a/14341308/1678053
答案 2 :(得分: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 = "4.5.50938") AND (NOT VersionNT64 OR (Net4x64FullVersion = "4.5.50938"))"
InstallCondition="(VersionNT >= v6.1 OR VersionNT64 >= v6.1) AND (NOT (Net4FullVersion = "4.5.50938" OR Net4x64FullVersion = "4.5.50938"))" />
</PackageGroup>