次のテストInstallScriptInstallShieldコードがあります。これは、通常の対話モードでは正しく実行されますが、実際のディレクトリの深さを含むChangeDirectorysetup.exe /s
の呼び出しで(サイレント)モードでクラッシュします。
//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 2008x64サーバーの管理者権限を持つコマンドウィンドウで実行しています。c:\temp
ディレクトリが存在し、そのディレクトリEVERYONE
に対する完全な制御権が付与されています。
終了コードは-2147213312
、に対応するエラーガイド0x80042000
にあります。
エンドユーザーがインストールをキャンセルしたため、インストールはabortキーワードで終了しました。
ここで何が起こっているのでしょうか?構文を使用してエラーを調べようとしましたtry/catch
が、この場合、catchブロックは実行されず、エラーはないと主張しているように見えますが、代わりにabort
呼び出されますか?