我根据此处找到的教程编写了一个 Windows Installer 自定义操作: http://www.codeproject.com/kb/install/msicustomaction.aspx
我的自定义操作正在终止给定名称的后台进程,该进程仍可由用户打开。原因是我不希望用户看到给定 EXE 正在运行且必须关闭才能继续安装的警告。当 MSI 传递 UI 序列时,此操作正常,因为操作是在“InstallUISequence”表中创建的,如教程中所示。
但是,当静默使用 MSI(右键单击并选择修复或卸载)时,我的自定义操作当然不会执行。
我必须将自定义操作放在哪里,以便在静默运行时也能立即执行?
我尝试将其添加到“InstallExecuteSequence”,但仍然显示“应用程序运行”警告。然后我尝试将自定义操作的序列号降低到 5,但这也没有帮助。
注意:
我正在使用 Orca 修改从 Visual Studio 安装项目生成的 MSI。然后我使用转换文件来应用它。
最佳答案
您需要安排该操作两次,一次在 UI 序列中,一次在执行序列中,然后进行安排,以便它仅在尝试执行它的第一个序列中运行。 (例如 WiX 中的 CustomAction/@execute='firstSequence'
)
更新:如果您使用 Orca,请参阅 Custom Action Execution Scheduling Options 上的文档。 ,您只需确保设置了 msidbCustomActionTypeFirstSequence
位即可。
关于windows-installer - 任何验证之前的 Windows Installer 自定义操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2721093/