我使用Installshield 2014创建了一个MSI安装程序。在UI中运行时一切正常,但是当我使用下面的命令以静默模式运行时,我的自定义操作根本不起作用:
C:\>msiexec /i "myApplication.msi" /qn WEBURL=http://localhost/mywebapp /log out.txt
WEBURL
是自定义操作所需的属性。 WEBURL
的值作为参数传递给C#类库方法。当我在开始安装向导步骤上单击安装按钮时,我的自定义操作被调用并调用C#方法。我的自定义操作总是执行,即我已将自定义操作的执行条件保留为1
,这意味着它在所有情况下执行。
在日志文件中,我还看到WEBURL
属性的值正确设置。但是,在静默模式下运行安装程序时,我无法让自定义操作触发,不知道是什么原因?
更新:根据Michael的建议,将自定义操作放入InstallExecuteSequence
中后,它开始在静默模式下执行。但现在的问题是,当我通过一个对话框上的按钮单击执行相同的操作时,它会在UI模式下执行两次,因为相同的操作已经在InstallUISequence
中执行。因此,我想在只有在静默模式下运行安装程序时才将自定义操作放入InstallExecuteSequence
中(以便在UI模式下只执行一次)。
InstallExecute
序列中,那么它将在UI和静默模式下运行。在UI模式下,它会运行两次,一次来自UI对话框之一,另一次来自InstallExecute
序列。我不能从UI对话框中删除它,因为我可能需要根据某些UI检查在那里多次运行它。如何确保即使我在InstallExecute
序列中添加自定义操作,它也仅在静默模式下触发。 - RBTUILevel
也可能与我的情况相关,但我们的安装程序仅支持两种模式:INSTALLUILEVEL_FULL
和INSTALLUILEVEL_NONE
。如果我需要在执行自定义操作时控制级别,我会使用它。我还添加了一个屏幕截图来展示我的执行调度更改,这将有助于读者。感谢您的跟进。 - RBT