0

維持する必要がある Installshield Installscript MSI インストーラーがあります。Support Files/Billboards に約 10 個のテキスト ファイルが含まれています。インストーラーが実行されたら、次のコードを使用して、カスタム Installscript 関数で編集/コピーするためにファイルを開きます。

OpenFile(nvReadFileHandle、SUPPORTDIR、LOGGER_PRM)

このコードは、おそらく 1,000 回のインストールで完全に機能し、その多くはこの正確なバージョンのインストーラーでした。そして、昨日、初めて失敗しました。

msi ログを確認すると、ファイルが次の場所に抽出されていることがわかります。

%TEMP%\3\ {GUID1}\ <-- スペースを無視

上記のコードを実行すると、SUPPORTDIR の値は次のようになります。

%TEMP%\ {GUID2}\ <-- スペースを無視

これは今まで失敗したことがありません。では、なぜ今それが起こっているのでしょうか?修正するにはどうすればよいですか? 問題をグーグルで検索すると、矛盾する情報が表示されます。状況を考慮して解決策を得るために試行錯誤を 50 回行うのは避けたいと思います。

編集:ここにいくつかの詳細があります。インストール先のサーバーが仮想マシンのクローンであることがわかりました。使用されている環境変数が間違っていると思われます。「cd %temp%」と入力すると、上記の最初のディレクトリに移動します。しかし、TEMP という名前の環境変数を見ると、それらはすべて上の 2 番目のディレクトリを参照しています。

4

2 に答える 2

2

以下を使用して SUPPORTDIR を取得します。

nvBuffSize = MAX_SIZE;
MsiGetProperty( hMSI, "SUPPORTDIR", svSUPPORTDIR, nvBuffSize);
于 2013-11-15T21:26:06.943 に答える