我发现了InstallShield Express(2011版本17)。很好,可以配置一些自定义操作。也就是说,我可以启动JScript脚本(似乎是一个Javascript方言,文件以* .js结尾)。
我的脚本执行一些注册工作,启动msiexec安装MSXML,并执行安装安全加密狗驱动程序的exe ...整体相当不错......但我正在提供WScript.Shell
命令使用硬编码路径。 我从不喜欢。
为了更聪明,我想知道是否可以通过* .js中的某种InstallShieldObject访问InstallShield Express属性[INSTALLDIR]
所以我可以这样写:
function doInstall()
{
installDir = InstallShieldObject.INSTALLDIR // <= this is what I'd like to do
var comandUpdateRegistry = "regedit /s" + installDir + "registryScript.reg"
oShell = WScript.CreateObject( "WScript.Shell" );
oShell.Run( updateRegistryScriptCommand );
return true;
}
答案 0 :(得分:1)
您是否了解您正在做的事情违反了几项最佳做法?如果您这样做,或者您不在乎,那么请查看Session对象。
Session Object Session.Property(&#34; MYPROP&#34;)Get;集;
如果您不知道和/或您确实关心,那么意识到1)脚本自定义操作是脆弱的2)MSI是声明性的而不是必要的。你不应该使用自定义动作来重新发明轮子,这可以使用Registry table本地完成。
在InstallShield的上下文中,您可以右键单击将Reg文件导入到注册表中,MSI将为您处理剩下的工作。