問題タブ [installscript-msi]
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 を作成しています。
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 - InstallShield は、アップグレード中にファイルを上書きしません
私の OnFirstUIAfter 関数では、インストールしたばかりのファイルの名前を次のように変更しています。
OnMaintUIAfter 関数で FileName1 を再度インストールしますが、最初のインストールと同様に FileName2 を上書きする必要があります。私が単に使用する場合:
何も起こりません。INSTALLDIR にはまだ両方のファイルがあり、FileName2 は古くなっています。
インストーラー スクリプトが既存のファイルの名前を変更できないことに問題があると考えて、名前を変更する前にファイルを削除することにしました。
それでも何も起こりません。どちらのファイルもまだ INSTALLDIR にあります。
FileName2 は、以前のインストールによってインストールされるファイルではないことに注意してください。すべてのインストールで FileName1 がインストールされ、その名前が FileName2 に変更されます。
知恵の言葉はありますか?私は完全にアイデアがありません。
SH
installation - インストール スクリプト MSI : 管理者として exe を実行しているときに、現在のユーザーのホーム ディレクトリに製品をインストールする方法を教えてください。
IS Installscript msi プロジェクトから作成された msi があります。この製品には、管理者として実行する必要がある昇格されたアクセス許可が必要です。すべて問題ありませんが、現在、製品はユーザーのホーム ディレクトリではなく管理者のホームにインストールされています。
GetEnvVar(USERPROFILE,svUserProfile) を使用しているとき、現在ログインしているユーザー ディレクトリではなく、管理者のホーム ディレクトリを取得しています。
これを解決するには、どんな助けでも大歓迎です。
windows-installer - コマンドラインを使用して新しい自動アップグレード項目を installscript MSI プロジェクトに追加する方法
InstallShield 2012 を使用して installscript MSI プロジェクトを作成し、製品のパッチ インストーラーを作成しています。ISCMBuild.exe を使用して、製品のビルド プロセスを自動化し、パッチを作成することを計画しています。
新しいパッチを作成するときに、アップグレード ビューの下に以前のすべてのセットアップのリストを追加して、以前のパッチ レベルからのアップグレード シナリオをサポートしたいと考えています。
新しいパッチを作成するたびに、以前のパッチ セットアップ ファイルの詳細をアップグレード セクションに追加する必要があります。ここで、コマンド ラインからアップグレード ビューにこのエントリを追加する方法があるかどうかを知りたいです。
windows-installer - 一部のファイルの削除をスキップするように .msi を強制する
アップグレード時に一部のファイルを削除しないように .msi を作成したい。削除するファイルを追加できることはわかりましたが、.msi に対して「これを削除しないでください (アップグレード時)」と言う方法に関する情報が見つかりません。
誰かがそれを手伝ってくれますか?