2

我们决定冒险并要求我们的用户在使用我们的媒体中心插件之前安装 .NET 3.5。

我想确保安装体验尽可能流畅,并且我们的安装程序保持较小。

我需要对我的WiX 文件进行哪些更改以支持以下方案?代码示例将不胜感激。

  • 用户已安装 .Net framework 3.0,交互式安装。

期望行为:用户会收到一个窗口提示,告诉她她需要新版本的框架,如果她接受,则会下载 dotNetFx35setup.exe (2.7 MB),然后执行。最后,安装继续进行。

  • 用户安装了 .Net framework 3.0,非交互式安装。

背景:为了便于从媒体中心自动更新,如果用户选择升级现有版本,我们可能会执行“msiexec.exe /qb /i mediabrowser.msi”。

期望的行为:用户会收到一个窗口提示,告诉她她需要一个新版本的框架,如果她接受,则会下载 dotNetFx35setup.exe (2.7 MB),然后执行。最后,安装会静默进行。

是否有任何其他开源项目可以实现这些方面的东西?

相关问题.NET 3.5 是媒体中心插件的合理先决条件吗?

4

4 回答 4

2

我相信在您的 msi 启动之前安装 .NET 属于 setup.exe 引导程序的职责。WIX(还)没有自己的方式来生成引导程序(或者如果有,它没有记录在 wix.chm 中)。相反,您可以使用 GenerateBootStrapper msbuild 任务来生成 setup.exe。查看wix 文档中的主题“如何:使用引导程序安装 .NET Framework ”。要通过下载安装 .NET 3.5 SP1,您的 msbuild 文件将如下所示:

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

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

    <Target Name="SetupExe">
        <GenerateBootstrapper
            ApplicationFile="myproduct.msi"
            ApplicationName="myproduct"
            BootstrapperItems="@(BootstrapperFile)"
            Path="C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\"
            OutputPath="path/to/put/setup/"
            Culture="en"/>
    </Target>

</Project>

如果您将上述内容保存在 setup.msbuild 文件中,则可以通过调用来构建您的设置

C:\WINDOWS\Microsoft.NET\Framework\v3.5\msbuild.exe setup.msbuild

您也可以从安装 CD 安装 .NET,而不是下载它。只需添加ComponentsLocation="Relative"到 GenerateBootstrapper 的属性。

于 2009-03-09T09:18:45.843 回答
2

dotNetInstaller支持所有这些

于 2009-11-25T22:34:53.137 回答
1

您将需要使用引导程序来完成此操作。一旦一个安装程序已经运行,Microsoft Installer 将不允许您启动另一个安装程序。您可以从 Visual Studio 附带的 msbuild 文件中使用引导生成器,或者您可以查看许多开源选项。

dotNetInstaller是一个流行的选项。而“Burn”是 WiX 中即将推出的用于此任务的工具的名称。但是,它现在仍然是概念件。

于 2009-07-07T02:02:14.707 回答
1

来自WiX 首席开发人员Rob Mensching:这是 Burn(即将开发的 WiX 工具集引导程序)的关键场景。

所以不,没有内置的方法可以用 WiX pure 来简化这个过程。不过,您可以编写自己的引导程序

于 2009-08-25T01:08:58.173 回答