如何使用WiX制作一个完全自包含的.NET 3.5 sp1安装程序?

11
我需要将完整的.NET 3.5 sp1安装程序包含在我的WiX安装程序中。
我需要使引导程序完全自包含,不需要任何网络访问。对于此安装程序,不允许要求网络连接;我们有一些客户在外蒙古(我是认真的,并非只是因为这个地方偏远),我们会向他们发送CD,因为他们根本没有互联网访问。
WiX教程中指出:
<Target Name="AfterBuild">
    <GenerateBootstrapper ApplicationFile="$(TargetFileName)" 
                      ApplicationName="My Application Name"
                      BootstrapperItems="@(BootstrapperFile)"
                      ComponentsLocation="Relative"
                      CopyComponents="True"
                      OutputPath="$(OutputPath)"
                      Path="C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\"/>
</Target>

上述的引导程序需要网络。如何制作不需要网络的安装程序?

2个回答

8

<Project ToolsVersion="3.5"
   xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

    <ItemGroup>
        <BootstrapperFile Include="Microsoft.Net.Framework.3.5.SP1" >
           <ProductName>.NET Framework 3.5 SP1</ProductName>
        </BootstrapperFile>
        <BootstrapperFile Include="Microsoft.Windows.Installer.3.1" >
           <ProductName>Windows Installer 3.1</ProductName>
        </BootstrapperFile>
    </ItemGroup>

    <Target Name="setup">
        <GenerateBootstrapper
            ApplicationFile="myproduct.msi"
            ApplicationName="myproduct"
            BootstrapperItems="@(BootstrapperFile)"
            Path="$(bootstrapperPackagesFolder)"
            ComponentsLocation="Relative"
            OutputPath="$(cddir)"
            Culture="en"/>
    </Target>

</Project>

在您的情况下,$(bootstrapperPackagesFolder)变量将指向C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\$(cddir)变量是您组成安装CD内容的文件夹。 GenerateBootStrapper任务不仅会生成引导程序exe,还会将DotNetFX35SP1WindowsInstaller3_1文件夹复制到同一位置。在安装过程中,引导程序exe将查找这些文件夹并使用其中的文件,而不是下载它们。
我不确定我的示例是否与您已经执行的操作不同;也许您只是忘记在安装CD上包含DotNetFX35SP1文件夹了?

完成此操作后,我收到以下错误: C:\ Documents and Settings \ hudson \ .hudson \ jobs \ <Job> \ workspace \ <program> \ main \ SetupWiX \ SetupWiX.wixproj(164,5):错误MSB3152:必备条件的安装位置未设置为“组件供应商的网站”,并且项目中无法在磁盘上找到“.NET Framework 3.5 SP1”中的文件“DotNetFX35SP1 \ dotNetFX20 \ aspnet.msp”。有关更多信息,请参见帮助。 - mmr
此外,似乎引导程序引擎目录中的setup.bin无法找到sp1的正确目录,这对我来说很奇怪。 - mmr
你是否设置了$(bootstrapperPackesFolder)变量,或者将Path属性设置为构建服务器上引导程序包所在的位置? - Wim Coenen
我也遇到了“无法定位”的同样问题。 - tofutim

0
你可以查看这个微软示例代码,问题是WiX没有提供引导程序/链接器 - 直到WiX 3.5才会有“Burn”工具。
我不确定你在原始示例中使用的是什么,我假设是msbuild或其他东西 - 这不是WiX组件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接