我正在尝试使用Burn和WIX 3.6为我的应用程序制作安装程序。安装程序必须能够从微软网站安装.NET 3.5 SP1。我正在处理一个使用WIX 3.5创建的工作WIX项目。如果以前在目标计算机上安装了.NET 3.5 SP1,则可以正常工作。第一步似乎是创建一个包,所以我在Product.wxs文件中添加了一个元素。当我这样做的时候,我得到一个错误,告诉我模式中的无效,我必须有一个。这是否意味着我必须将所有产品定义转移到一个片段中?现在还不清楚我是怎么做到的。然后事情变得更复杂了,因为WixNetfxExtension只为.NET 4.0和4.5提供PackageRef。我还没有准备好将我的应用程序切换到该版本的框架。那么,如何从捆绑包中的web源获取.NET 3.5 SP1呢?
在任何地方都有这样做的有效例子吗?
发布于 2012-09-28 15:07:15
在你的问题中,不清楚你试图在哪里做事情,所以我将从头开始。
创建一个新的Wix刻录引导程序项目。这是您的依赖项将被安装的位置,然后您现有的Wix 3.5安装程序将从中派生。
下载.net 3.5 SP1完整包,并记下用于下载它的直接url。
使用heat.exe (在Wix3.6bin目录中)运行以下命令,这将生成一个包含.net安装程序详细信息的WXS文件。
heat.exe payload [path_to_net_installer] -o [path_to_wxs]this.will在wxs中提供了以下内容:
<RemotePayload CertificatePublicKey="F321408E7C51F8544B98E517D76A8334052E26E8"
CertificateThumbprint="D57FAC60F1A8D34877AEB350E83F46F6EFC9E5F1"
Description=".NET Framework 3.5 Setup"
Hash="3DCE66BAE0DD71284AC7A971BAED07030A186918"
ProductName=".NET Framework 3.5"
Size="242743296"
Version="3.5.30729.1" />将其作为ExePackage元素的子元素添加到引导程序项目中,并使用之前保存的下载url更新该元素。这将自动下载.net安装程序,或者您可以将其放在引导程序可执行文件旁边,它将检测到它。
在Bundle中创建一个chain,其中包含.net ExePackage和安装程序的MsiPackage。然后,您将得到类似以下内容的结果(许多必需的属性,我将留给您填写!):
<Bundle Name="$(var.SkuName)"
Copyright="$(var.Copyright)"
Manufacturer="$(var.Manufacturer)"
Version="$(var.ProductVersion)"
UpgradeCode="$(var.UpgradeCode)">
<Chain>
<ExePackage Id="dotNetFX3.5">
<RemotePayload />
</ExePackage>
<MsiPackage Id="MyMsi" />
</Chain>
</Bundle>然后你应该有一个包含你的msi的大的exe,或者如果你选择不压缩它,一个执行你的msi的exe (它将需要在同一个文件夹中)。
https://stackoverflow.com/questions/12628922
复制相似问题