1

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

//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已被授予对其的完全控制权限。

退出码是-21472133120x80042000在对应的错误指南中

由于最终用户取消了安装,安装使用 abort 关键字退出。

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

4

2 回答 2

1

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

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

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

问题是,结果并不可靠。他们可能会工作,也可能不会。

于 2013-03-18T07:45:05.127 回答
0

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

有关更多详细信息,请参阅创建响应文件

记录 installscript 设置并没有给我们太多信息,因此我们编写了一些函数来写入自定义日志文件,这对我们有很大帮助。

于 2012-10-26T11:23:39.670 回答