Wix 3.7 Burn - 如何使用动态信息制作自定义启动画面

Posted

技术标签:

【中文标题】Wix 3.7 Burn - 如何使用动态信息制作自定义启动画面【英文标题】:Wix 3.7 Burn - how to do a custom splash screen with dynamic information 【发布时间】:2013-05-04 10:42:57 【问题描述】:

我有使用 ManagedBootstrapperApplicationHost 的 Wix Burn 自定义安装程序。 我想要做的是,有一个带有版本号的闪屏。现在我不想每次更新安装时都更改闪屏图像。我希望它有一个版本 没有我在捆绑包中设置的版本。

我怎样才能做到这一点,我必须用图像创建自己的窗口并管理启动画面吗?还是有其他方法?

【问题讨论】:

【参考方案1】:

现在我不想在每次更新时都更改初始屏幕图像 安装。

我同意它应该以编程方式完成。对我来说,重要的是最终用户在管理他们的软件配置或报告问题时有一个单一的版本标签可以参考。而且,在DRY principle 之后,这意味着在构建过程中只有一个地方可以提取它。

但是,由于不同的开发和部署工具和资源(包括启动屏幕)需要不同的格式,我发现投资构建步骤以创建或更新需要版本的位置是值得的。对于启动画面,Imagemagick 可以在图像上绘制文本。使用 MsBuild(例如,通过您的引导程序 .wixproj 文件),您可以从您的 Bundle 中提取版本并在构建 bundle 之前将其绘制在您的初始屏幕上。

<Target Name="StampProjectFilesWithVersion" BeforeTargets="Compile">
  <XmlPeek Namespaces="&lt;Namespace Prefix='wi' Uri='http://schemas.microsoft.com/wix/2006/wi'/&gt;" XmlInputPath="Bundle.wxs" Query="/wi:Wix/wi:Bundle/@Version">
    <Output TaskParameter="Result" ItemName="BundleVersion" />
  </XmlPeek>
  <XmlPeek Namespaces="&lt;Namespace Prefix='wi' Uri='http://schemas.microsoft.com/wix/2006/wi'/&gt;" XmlInputPath="Bundle.wxs" Query="/wi:Wix/wi:Bundle/@Name">
    <Output TaskParameter="Result" ItemName="BundleName" />
  </XmlPeek>
  <Message Text="@(BundleName) @(BundleVersion)" />
  <Exec Command="tools\imagemagick\convert ^
       splash-template.bmp ^
       -pointsize 18 ^
       -draw &quot;text 100,300 'Version @(BundleVersion)'&quot; ^
       -pointsize 24 ^
       -draw &quot;text 100,260 '@(BundleName)'&quot; ^
       bmp3:splash.bmp" />
</Target>

显然,您应该从项目中有意义的任何来源提取版本。

【讨论】:

以上是关于Wix 3.7 Burn - 如何使用动态信息制作自定义启动画面的主要内容,如果未能解决你的问题,请参考以下文章

如何将文件添加到 WiX Burn 中的 Container 元素?

Wix/Burn - 不运行 MSIPackage 的条件,因此不卸载应用程序

Wix Burn,我如何允许降级?

如何使用 WiX Burn 在 Windows 8 和 Windows Server 2012 上安装 .NET Framework 3.5?

WiX - Burn 支持两用 msi 包吗?

wix 刻录安装程序要求