我正在使用高级安装程序10.7.1。我正在添加“运行Windows PowerShell脚本”的自定义操作。此脚本的作用是检查安装程序是否在Azure虚拟机上运行。如果是,则只允许用户安装。脚本在虚拟机上运行良好,我已经检查过了。但现在我需要根据脚本的结果显示错误消息。这意味着我必须在脚本中设置某些属性,基于这些属性将显示错误消息。
有人能告诉我如何通过PowerShell脚本设置高级安装程序的属性吗?
唯一可以用于设置属性(当然要安排为立即执行)的自定义操作是VBS脚本(内联或附加文件)或使用C ++或C#编写的DLL。在C#中更容易,因为您可以访问许多.NET API(但您还需要在最终用户计算机上安装.NET Framework)。
@ravikanth
这就是Windows Installer的工作方式,也就是所有MSI包都建立在其之上的技术。更具体地说,运行到MSI中的自定义操作无法使用返回代码与主安装进度通信“任何他们想要的”。Windows Installer仅接受一组严格定义的返回代码,对于Advanced Installer中的PowerShell自定义操作,返回代码由安装程序在后台控制。它只接受脚本文本,并且没有基于返回值的关联操作。奇怪!
我不知道Advanced Installer是如何工作的,但你可以从脚本中返回一个值,然后在调用者中使用该值。例如:
#Custom Script action
#Get the VM details
If (AzureVM) {
$true
} else {
$false
}
供日后参考:
从脚本中设置属性值(用于立即自定义操作)
要设置属性,只需在脚本中包含以下语法的行:
AI_SetMsiProperty YOUR_PROP <VALUE>
其中 YOUR_PROP
是属性,<VALUE>
是分配给它的值。
注意:这仅适用于立即运行的脚本。