首页 文章

从WIX安装程序执行dism批处理命令

提问于
浏览
0

我创建了一个WIX msi安装程序,它使用dism.exe执行批处理命令以启用IIS窗口功能 . 当我执行msi安装程序时,执行的命令不会生效,并且未启用所需的Windows功能,控制面板也不显示已安装新应用程序,但是当我使用命令行参数运行相同的msi安装程序时:

msiexec /i BatchFileExecutor.msi /Lime logfile.txt

启用所需的Windows功能,控制面板显示已安装应用程序 .

下面是我使用的WIX代码:

<CustomAction Id="BatchCmd"
              Property="BatchRun"
              Value='"[WindowsFolder]Sysnative\dism.exe" /Online /Enable-Feature /FeatureName:IIS-WebServerRole"' 
              Execute='immediate' 
              Return='check'>
</CustomAction>

<CustomAction Id="BatchRun" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" Return="check" Impersonate="yes">
</CustomAction>

<InstallExecuteSequence>
  <Custom Action="BatchCmd" Before="BatchRun">NOT Installed</Custom>
  <Custom Action="BatchRun" After="InstallFiles">NOT Installed</Custom>
</InstallExecuteSequence>

是否有一些代码片段不合适或者我错误地设置了一些属性?

1 回答

  • 1

    习惯值属性似乎没有正确的数量 . 对于我来说,请注意,QuietExecCA需要用EXE引号括起来的完整路径,但我认为在功能名称后面不需要“ .

    此外,您不希望模拟您的延期CA.您不需要模拟,因此它在系统上下文中运行得很高 .

    最后,我一定要包含防止DISM在安装过程中强制重启的交换机 . 某些Windows功能需要重新启动才能生效 . 出于这个原因,我将DISM命令作为自己的包放在我的MSI之外的引导程序包/链中 .

相关问题