InstallScript:ChangeDirectory()调用仅在SILENTMODE中失败

时间:2012-10-23 21:03:42

标签: installshield installscript

我有以下测试InstallScript InstallShield代码,它在正常交互模式下正确执行,但在调用ChangeDirectory时涉及任何实际情况的setup.exe /s(静默)模式崩溃目录深度。

//Note: "C:" ^ "temp" resolves to "C:\temp", but it never successfully 
//executes when run silent mode. It works fine in interactive mode, however.
ChangeDirectory("C:" ^ "temp");
//No subsequent code gets executed at this point in silent mode 

我在具有管理员权限的命令窗口中在Windows 2008 x64服​​务器上运行此功能。 c:\temp目录存在,EVERYONE已被授予对其的完全控制权。

退出代码为-2147213312error guide中的0x80042000对应

  

安装退出时使用abort关键字,因为最终用户   取消了安装。

这可能会发生什么?我已经尝试使用try/catch语法来检查错误,但是在这种情况下catch块永远不会执行,似乎断言没有错误,而是调用了abort

2 个答案:

答案 0 :(得分:1)

Installscript引擎在幕后做了很多事情。它不断更改工作目录。因此,使用ChangeDirectory()并不是非常可靠。对所有可执行文件和其他文件使用FULL PATH肯定会更好。 LaunchAppAndWait()也有这个麻烦。所以需要使用完整路径。

此外,ChangeDirectory()的Installshield帮助清楚地提到了以下内容:

  

在脚本中指定文件时,请始终指定完整文件   path(使用适当的InstallShield系统变量,for   例如,SRCDIR)而不是依赖于当前具有的文件夹   适当的价值。该脚本在内部执行可以更改的代码   当前文件夹,因此它的值可能不是您所期望的。

事情是,结果不可靠。它们可能起作用,也可能不起作用。

答案 1 :(得分:0)

当我们记录的.iss文件缺少.iss响应文件中的条目时,我们得到此错误代码。

有关详细信息,请参阅Creating the Response File

记录一个installscript安装程序并没有给我们提供太多信息,所以我们写了一些函数来写一个自定义日志文件,这对我们帮助很大。