2017-09-15 54 views
1

Install ShieldスクリプトでDOSコマンド呼び出しを作成しました C:¥Windows¥System32¥PnPutil.exe -a "C:¥Program Files(x86)¥Anite¥Drivers¥SPS \ ftdiport.inf "InstallShieldからDOSコマンドを実行すると失敗する

InstallShieldプログラムをWindows 64ビットPC(Setup.exeファイルをダブルクリック)で実行すると、このコマンドは常に戻りコード2を返します(システムは指定されたファイルを見つけることができません。指定された場所にファイルが見つかりません)。しかし、同じPC上で(管理者として)CMDウィンドウを開き、setup.exeファイルと同じ場所から全く同じDOSコマンドを実行すると、それは常に機能します。私たちのInstallShieldスクリプトが実行されるとき、それがElevated Modeで実行されるので、InstallShiledからこのコマンドを発行することは、管理者モードでCMDから実行するのと同じでなければならないことがわかります。しかし、最初のケースでは失敗しますが、2番目のケースでは成功します。

Windows 32ビットPCで同じInstallShieldプログラムを実行すると、コマンドは常に C:¥Windows¥System32¥PnPutil.exe -a "C:¥Program Files¥Anite¥Drivers¥SPS \ ftdiport.inf "

このDOSコマンドをInstallShieldスクリプトから実行すると、プログラムファイル(x86)領域にファイルが見つからないという点でWin 64ビットOSに問題があるようです。また、この問題は、pnputilユーティリティを呼び出すときにのみ発生するようです。他のすべてのユーティリティ(e、g regsvr32.exe)は問題なく呼び出されます。

アドバイスや助力をいただければ幸いです。事前に多くの感謝。

+0

32ビットまたは64ビットのコマンドプロンプトを開いていて、コードは何ですか? InstallScriptは常に32ビットコードとして実行されるため、32ビットのコマンドプロンプトが最適な並列処理になります。 –

答えて

1

私はこのissue.Whatを修正する方法を発見32ビットInstall Shieldプログラムでイメージをビルドすると、C:\ Windows \ SysWOW64ディレクトリに64ビットアプリケーションとシステムコールが自動的にリダイレクトされる設定(WOW64FSREDIRECTION)があることがわかりました。 pnputilコマンド・コールがそのディレクトリにないために失敗しました(したがって、エラー・コード "Thシステムは指定されたファイルを見つけることができません ")が、system32ディレクトリにあります。私はこのプロパティを上書きするinstallshieldルーチン "Disable(WOW64FSREDIRECTION)"を使用しました。これによって問題は解決されました。コマンドはsystem32ディレクトリから正常に実行されました。

関連する問題