問題タブ [installscript]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - コンソール アプリケーションから InstallScript プロジェクトを実行する方法
exeファイルをクリックして実行すると完全に実行されるメジャーアップグレード(Installscript msi)を作成しました。
同じexeを実行するコンソールアプリケーションも作成していますが、今回はインストール後、新しいバージョンとともに、以前のバージョンがプログラムの追加/削除リストに表示されます。
すべてのコンポーネントは正しくインストールされていますが、
コンソール アプリケーションから exe を実行した場合にのみ以前のバージョンが表示されるのはなぜですか?
私が観察したもう1つのことは、コンソールアプリケーションからexeを呼び出すと、インストーラーが開き、EULAなどに同意した後、実際のインストールが開始されると、コンソールアプリケーションが再度呼び出されることです。この動作を停止するために、Main メソッドにチェックを追加して、コンソール アプリケーションを 1 回だけ実行しました。インストーラーがコンソール アプリケーションを再度実行しようとすると、プロセスが既に実行されているかどうかがチェックされます。実行されている場合は、コンソール アプリケーションから戻ります。
しかし、これを行った後も、プログラムの追加/削除リストに 2 つのエントリが表示されます。この問題を解決するにはどうすればよいですか? 私はこの問題で立ち往生しています。
InstallShield 2011 プロフェッショナル エディションを使用して exe を作成しています。
c# - Installscript で使用される .NET dll でブール値の戻り値を使用する
Installscript で使用する .NET dll を作成しました。基本的に、証明書をインストールし、証明書を削除し、証明書が既に存在するかどうかを確認します。これは私の Exists メソッドです:
これはインストールスクリプトのコードです
この例では、証明書が存在するかどうかに関係なく、Installscript でデバッグするときnReturn
は常にです。(もちろん、.NETプログラムからは正常に動作します)次に、戻り値として-1
使用しようとしましたが、これは機能しました。int
したがって、回避策があります。
bool
しかし、Installscript で使用される .NET dll の戻り値として使用できない理由を誰かが知っているかどうか疑問に思っていました。
windows-installer - installshield 2012 SUPPORTDIR
維持する必要がある 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 番目のディレクトリを参照しています。
installshield - インストール パスがルート ドライブかどうかを確認する InstallScript
ユーザーがインストール用にルート ドライブを選択したかどうかを確認する方法。ユーザーがルート ドライブを選択し、ユーザーに別のパスを選択するように求める場合、インストールは続行されません。
現在、次のコードを使用していますが、同じことを行うためのより良いオプションがあります-