任何验证之前的Windows Installer自定义操作

时间:2010-04-27 12:26:44

标签: windows-installer custom-action orca

我根据此处的教程编写了一个Windows Installer自定义操作: http://www.codeproject.com/kb/install/msicustomaction.aspx

我的自定义操作正在终止某个名称的后台进程,该进程仍可由用户打开。原因是我不希望用户看到给定EXE正在运行的警告,必须关闭才能继续安装。当MSI通过UI序列时,这可以正常工作,因为操作是在“InstallUISequence”表中创建的,如教程中所示。
但是,当静默使用MSI(右键单击并选择修复或卸载)时,我的自定义操作当然不会执行。

我必须在哪里放置自定义操作,以便在静默运行时立即执行?

我尝试将其添加到“InstallExecuteSequence”,但仍会显示“app running”警告。然后我尝试将自定义操作的序列号降低到5,但这也没有帮助。

注意:
我正在使用Orca来修改从Visual Studio安装项目生成的MSI。然后我使用转换文件来应用它。

2 个答案:

答案 0 :(得分:6)

您需要将操作安排两次,一次在UI序列中,一次在执行序列中,然后安排,以便它只在尝试执行它的第一个序列中运行。 (例如,WiX中的CustomAction/@execute='firstSequence'

更新:如果您使用的是Orca,请参阅Custom Action Execution Scheduling Options上的文档,您只需要确保msidbCustomActionTypeFirstSequence位已设置。

答案 1 :(得分:-1)

您正确地将自定义操作放在“InstallExecuteSequence”中。谁显示“'app running'警告”?您是否验证了自定义操作是否已实际执行? Orca是否将您的自定义操作按顺序显示为第一个操作?什么说安装日志?