我正在使用Installshield 5.0来创建我的应用程序的设置。
我的应用程序需要在目标计算机上安装Microsoft Visual C++ 2005 redistributable
。所以我从mys installshield seteup.rul
脚本启动vcredist_x86.exe,如下所示:
sVCREdistprog= sPackSetupDir ^ "\\SetupPack\\vcredist_x86.exe";
if (LaunchAppAndWait (sVCREdistprog, "/q:a", WAIT) < 0) then
MessageBox ("Unable to launch: "+ sVCREdistprog+".",WARNING);
这几乎是时候工作正常。但有时会失败(在WIN7 64 PC上)。 任何人都可以告诉我它失败的原因以及如何解决这个问题?
答案 0 :(得分:0)
p我们还在所有目标计算机上安装vcredist_x86.exe 2005,这不是可重新分发的,而是像你一样从脚本安装。此代码适用于所有Windows操作系统。我们从未在1000多个客户端遇到过这个问题。自从InstallShield 6.0到InstallShield 2014以来,我们使用了这个脚本。
我们将vcredist_x86.exe放在Support Files \ Language Independent中。在安装程序执行时,此文件可从SUPPORTDIR获得。
sParams = "/q";
log(" LaunchAppAndWait: " + SUPPORTDIR ^ "vcredist_x86.exe " + sParams);
nResult = LaunchAppAndWait(SUPPORTDIR ^ "vcredist_x86.exe", sParams, LAAW_OPTION_HIDDEN | LAAW_OPTION_WAIT | LAAW_OPTION_SHOW_HOURGLASS);
if (nResult < 0) then
sErrorMessage = FormatMessage(nResult);
log("**ERROR: Could not start vcredist_x86.exe. Reason: " + sErrorMessage);
endif;
我们有自定义log()函数。只需忽略对log()的调用或将它们更改为MessageBox或其他内容。
如果常数不可用:
#define LAAW_OPTION_NOWAIT 0x00000000
#define LAAW_OPTION_WAIT 0x00000001
#define LAAW_OPTION_HIDDEN 0x00000002
#define LAAW_OPTION_MINIMIZED 0x00000004
#define LAAW_OPTION_MAXIMIZED 0x00000008
#define LAAW_OPTION_SET_BATCH_INSTALL 0x00000010
#define LAAW_OPTION_SHOW_HOURGLASS 0x00000020
#define LAAW_OPTION_NO_CHANGEDIRECTORY 0x00000040
答案 1 :(得分:0)
运行安装包时创建一些日志文件。 如果您无法将exe参数添加到exe来创建日志文件,或者您不知道它们...您可以获取vcruntime的msi,该文件包装在VCRuntime.exe中。
要执行此操作:启动exe,当您获得第一个对话框时,转到%TEMP%并获取vcruntime的“GUID”文件夹。在此文件夹中,vcruntime msi驻留。将其复制到另一个位置,因为当您停止当前运行的vcruntime安装程序时,它将再次被删除。
如果你有这个msi,你可以在问题系统上创建一个日志文件,看看出了什么问题。记录就知道了!
输入msiexec.exe /?有关msi参数的更多信息。