如何更改在 WiX MSI 包中 NGen 为 运行 时显示的文本

How to change the text shown while NGen is running in a WiX MSI package

我们在安装过程中使用 NGen 来优化应用程序的启动时间。

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
     xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
     xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension">
  ...
  <File Id="File.$(var.ProjectName.TargetName).exe" Source="$(var.ProjectName.TargetPath)" KeyPath="yes">
    <netfx:NativeImage Id="ngen.File.$(var.ProjectName.TargetName)" Platform="$(var.NgenPlatform)" Priority="0" AppBaseDirectory="INSTALLLOCATION"/>
  </File>
  ...
</Wix>

在安装生成的 MSI 时,与其他步骤相比,步骤 "removing backup files" 花费了极长的时间。深入研究,我们发现当时的 NGen 是 运行。

我们怎么能在那里写其他东西,比如 "we are now saving lots of time for you later on every startup of your application"?

这已经作为功能请求进行了讨论 here. You may move the ngen activities to the background as discussed here

另一种选择是通过替换 InstallFinalize 操作的操作文本来更改 "removing backup files" 标签的文本:

<UI>
  <ProgressText Action="InstallFinalize">Speeding up your application beforehand :)</ProgressText>
</UI>

实际上有一个更好的方法,因为在 NetFx WiX 扩展中有两个操作 NetFxExecuteNativeImageCommitInstall(在启用回滚的情况下调用)和 NetFxExecuteNativeImageInstall(在禁用回滚的情况下)。

<UI>
    <ProgressText Action="NetFxExecuteNativeImageInstall">Speeding up your application</ProgressText>
</UI>
<InstallExecuteSequence>
    <Custom Action="NetFxExecuteNativeImageCommitInstall" After="NetFxExecuteNativeImageUninstall">0</Custom>
    <Custom Action="NetFxExecuteNativeImageInstall" After="NetFxExecuteNativeImageCommitInstall" />
</InstallExecuteSequence>