虽然“William Leara”提出的答案是一个很好的开始,但我在这里找到了一个更好的解决方案,值得一提。
此方法的另一个优点是您可以将批处理文件放在应用程序安装文件夹而不是根 C 文件夹中,但是我们使用特殊标志将执行推迟到FileCopy操作之后,我们还使用noImpersonate来获得运行所需的更高权限程序文件
几点注意事项:
- 使用TARGETDIR而不是INSTALLDIR
- 确保引用路径。
这是我的两个自定义操作。就我而言,我想强制本机命令处理器修复一些注册表项,因此我不使用COMSPEC。
第一个动作(类型 50)在 Source 中使用 Target 的输入参数执行命令,因为 Type 是 50+1024+2048,因为它是带有noImpersonate标志的延迟动作。
- 行动:最终行动
- 类型:3122
- 资料来源:NCOM
- 目标:/c "[TARGETDIR]Fixup.bat"
第二个动作立即定义NCOM属性:
- 行动:FinalNativeSys
- 类型:51
- 资料来源:NCOM
- 目标:[WindowsFolder]System32\cmd.exe
然后您应该将这些操作添加到InstallExecuteSequence:
和这个:
- 行动:FinalNativeSys
- 健康)状况:
- 序号:5001
请注意,在我的情况下,我也可以轻松地调整调用reg.exe import Fixup.reg的操作。最后,可以按照这里在后期构建中的建议使用msitran来自动化该过程。