次のテスト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呼び出されますか?