我有使用 ManagedBootstrapperApplicationHost 的 Wix Burn 自定义安装程序。我想要做的是,有一个带有版本号的启动画面。现在我不想每次更新安装时都更改启动画面图像。我希望它有一个版本没有我在捆绑包中设置的内容。
我怎样才能做到这一点,我是否必须用图像创建自己的窗口并管理启动画面?还是有其他方法?
我有使用 ManagedBootstrapperApplicationHost 的 Wix Burn 自定义安装程序。我想要做的是,有一个带有版本号的启动画面。现在我不想每次更新安装时都更改启动画面图像。我希望它有一个版本没有我在捆绑包中设置的内容。
我怎样才能做到这一点,我是否必须用图像创建自己的窗口并管理启动画面?还是有其他方法?
现在我不想每次更新安装时都更改启动画面图像。
我同意它应该以编程方式完成。对我来说,重要的是最终用户在管理他们的软件配置或报告问题时可以参考一个单一的版本标签。并且,遵循DRY 原则,这意味着在构建过程中,应该只从一个地方提取它。
但是,由于不同的开发和部署工具和资源,包括启动屏幕,需要不同的格式,我发现投资构建步骤来创建或更新需要版本的地方是值得的。对于启动画面,Imagemagick可以在图像上绘制文本。使用MsBuild(例如,通过您的引导程序.wixproj文件),您可以从 Bundle 中提取版本,并在构建 bundle 之前将其绘制在初始屏幕上。
<Target Name="StampProjectFilesWithVersion" BeforeTargets="Compile">
<XmlPeek Namespaces="<Namespace Prefix='wi' Uri='http://schemas.microsoft.com/wix/2006/wi'/>" XmlInputPath="Bundle.wxs" Query="/wi:Wix/wi:Bundle/@Version">
<Output TaskParameter="Result" ItemName="BundleVersion" />
</XmlPeek>
<XmlPeek Namespaces="<Namespace Prefix='wi' Uri='http://schemas.microsoft.com/wix/2006/wi'/>" 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 "text 100,300 'Version @(BundleVersion)'" ^
-pointsize 24 ^
-draw "text 100,260 '@(BundleName)'" ^
bmp3:splash.bmp" />
</Target>
显然,您应该从项目中有意义的任何来源中提取版本。