2017-09-15 114 views
1

我在我的Install Shield腳本中創建了DOS命令調用 C:\ Windows \ System32 \ PnPutil.exe -a「C:\ Program Files(x86)\ Anite \ Drivers \ SPS \ ftdiport.inf「從InstallShield運行DOS命令失敗

在Windows 64位PC上運行我的InstallShield程序時(雙擊Setup.exe文件),此命令總是給出返回代碼2(系統找不到指定的文件。文件無法在指定位置找到)。但是,當我在同一臺PC上打開一個CMD窗口(以管理員身份)並從setup.exe文件的相同位置運行完全相同的DOS命令時,它始終可用。我知道當我們的InstallShield腳本運行時,它在升高模式下運行,所以從InstallShiled發出這個命令應該與在管理員模式下從CMD運行它一樣。然而,它在第一種情況下失敗,但在第二種情況下成功。

另請注意,當我在Windows 32位PC上運行相同的InstallShield程序時,該命令始終可以工作 C:\ Windows \ System32 \ PnPutil.exe -a「C:\ Program Files \ Anite \ Drivers \ SPS \ ftdiport.inf「

Win 64位操作系統似乎存在一個問題,即從InstallShield腳本運行此DOS命令,因爲它無法在程序文件(x86)區域找到該文件。此外,這個問題似乎只在調用pnputil實用程序時纔會發生 - 所有其他實用程序(例如regsvr32.exe)都沒有任何問題被調用。

任何意見或幫助給予將不勝感激。提前謝謝了。

+0

你打開一個32位或64位的命令提示符,你的代碼是什麼? InstallScript始終以32位代碼運行,因此32位命令提示符將是其最佳並行。 –

回答

1

我發現瞭如何解決這個問題issue.What我發現當你使用32位Install Shield程序創建一個映像時,它有一個設置(WOW64FSREDIRECTION),它自動將所有64位應用程序和系統調用重定向到C:\ Windows \ SysWOW64目錄,所以在這種情況下,這個導致pnputil命令調用失敗,因爲它不在該目錄中(因此錯誤代碼爲「Th e系統找不到指定的文件「),但在system32目錄中。我使用了installshield例程「Disable(WOW64FSREDIRECTION)」,它覆蓋了這個屬性,這就解決了這個問題 - 這些命令是從system32目錄中成功執行的。

相關問題