2014-12-05 87 views
0

IM。 我的應用程序需要將Microsoft Visual C++ 2005 redistributable安裝在目標計算機上。所以我啓動,選擇vcredist_x64.exe從MYS的InstallShield seteup.rul腳本如下:
sVCREdistprog= sPackSetupDir^"\\SetupPack\\vcredist_x86.exe"; if (LaunchAppAndWait (sVCREdistprog, "/q:a", WAIT) < 0) then MessageBox ("Unable to launch: "+ sVCREdistprog+".",WARNING);從我的InstallShield安裝選擇vcredist_x64.exe seteup使用InstallShield 5.0創建我的應用程序的安裝

這是工作的罰款差不多的時間。但有時它會失敗(在WIN7 64個人電腦上)。 任何人都可以告訴我爲什麼會失敗,我該如何解決這個問題?

+0

Windows Eventlog中是否存在一些錯誤消息?是否有來自vcredist_x86安裝程序的錯誤消息或錯誤代碼? – LucasF 2014-12-05 10:15:12

+0

如何設置sPackSetupDir變量? – LucasF 2014-12-05 10:17:28

+0

沒有錯誤信息或代碼。 SPackSetupDir是安裝介質中的子文件夾。我不認爲它會引起問題,因爲其他exe是以相同的方式啓動的。 – Nabil 2014-12-08 09:08:01

回答

0

PWE還對所有目標計算機不是redistributeable但是從腳本像你這樣的安裝選擇vcredist_x64.exe 2005年。此代碼適用於所有Windows操作系統。我們從來沒有在超過1000個客戶中遇到過這個問題。我們使用,因爲6.0的InstallShield這個腳本最多的InstallShield 2014年

我們把選擇vcredist_x64.exe在支持文件\語言獨立。在安裝程序執行時,該文件將從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 
+0

我正在使用Installshield 5.0和選項'LAAW_OPTION_HIDDEN | LAAW_OPTION_WAIT | LAAW_OPTION_SHOW_HOURGLASS'不受支持。唯一可用的選項是「WAIT」或「NOWAIT」。 – Nabil 2014-12-09 07:37:26

+0

這個選項被傳遞給Windows API,如果在IS 5.0中不可用,你可以定義它們...... AFAIK ...我在我的答案中添加了這個例子 – LucasF 2014-12-09 19:38:21

0

運行安裝包時,一些創建日誌文件。 如果你不能將參數添加到exe來創建日誌文件,或者你不知道它們......你可以得到vcruntime的msi,它被打包在VCRuntime.exe中。

要做到這一點:啓動EXE,當你得到的第一個對話框,轉到%TEMP%,並獲得vcruntime的「GUID」文件夾中。在此文件夾中,vcruntime msi駐留。將其複製到另一個位置,因爲當您停止當前正在運行的vcruntime安裝程序時,它會再次被刪除。

如果你有這樣的MSI,您可以創建問題的系統日誌文件,看看什麼錯誤。記錄是知道!

鍵入msiexec.exe /?有關msi參數的更多信息。

相關問題