問題タブ [major-upgrade]
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.
tfs - WiX MajorUpdate 要素が期待どおりに機能しない
WiX 3.10 を使用しています
次の Wxs ファイルは、私の WiX インストーラーを定義します。ただし、最近、新しいバージョンをインストールする前に古いバージョンを削除したいと考えていました。驚いたことに、ローカルで動作しますが、tfs でビルドすると動作が異なります。次の例を参照してください。
バージョン 2.0.1 がインストールされていると仮定します。
- プロジェクトの新しいビルドをキューに入れ、tfs で 2.0.2 msi を作成します
- 私は2.0.2 msiを実行しています
- プログラムと機能のインターフェイスを確認すると、2.0.1 と 2.0.2 の両方が表示されます
- 別の tfs ビルドを開始し、2.0.3 msi を取得します
- 私は2.0.3 msiを実行します
- プログラムと機能ウィンドウを確認すると、2.0.2 と 2.0.3 が表示されます (2.0.1 は削除されました!)
なぜ私がそのような奇妙な振る舞いをしているのか、誰かが説明できますか? product Id
要素を新しい GUID に更新し、要素を tfs ビルド番号に一致させるビルド前のスクリプトがありますversion
(したがって、ビルドごとに新しい GUID と新しいバージョン番号が保証されます)。
これが私のWxです
installshield - InstallScript プロジェクト内でのマイナー アップグレードまたはメジャー アップグレードの設定
InstallShield 2012 Spring - Premier Edition を使用しており、セットアップ スクリプトが再度実行されたときに、ソフトウェアの既存のインストール (存在する場合) を新しいセットアップ スクリプトに置き換えようとしています。
マイナーおよびメジャー アップグレードの設定を構成するように書かれているオンラインの記事をいくつか読みました。
InstallScript プロジェクトを持っていますが、基本の MSI プロジェクトで行うことができるマイナー アップグレードとメジャー アップグレードの方法が見つかりません。これは、Installation Designer に移動してから Media/Upgrades に移動し、アップグレードを構成することで、MSI プロジェクトで実行できることをオンラインで読みました。このオプションは、InstallScript プロジェクト内では使用できません。
この動作を変更するには、InstallScript プロジェクトで何を使用できますか? 前もって感謝します。
c# - WIX: サービスの開始に失敗した場合のアップグレード時の RemoveExistingProducts (完全にアンインストール)
アップグレード中にサービスを開始した後、ユーザーが [キャンセル] をクリックするユースケースがあります。リポジトリのアップグレード コードは Windows サービス (C# で記述) にあり、ダウングレードすることはできません。したがって、サービスがレポをアップグレードするため、ユーザーはアップグレードのキャンセルをクリックし、wix はロールバックして古いサービスを元の場所にインストールし、サービス (古い) を開始しようとします。リポジトリは既にアップグレードされているため、サービスを開始できません。この場合、製品のアンインストールをトリガーする必要があります。MajorUpgrade の Scheduleプロパティが 5 つの異なるオプションを提供していることがわかります
- インストール検証後、
- インストール後の初期化、
- インストール実行後、
- インストール実行後、
- afterInstallFinalize。
しかし、どれも目的を果たしません。基本的には「beforeStartServices」のようなものが必要です。
誰にもアイデアはありますか?
wix - WIX インストーラー: 新しいインストール ディレクトリへのメジャー アップグレード
インストール パッケージのビルドには WiX を使用します。私は WiX テクノロジーに不慣れで、現在インストールされているアプリケーションのメジャー アップグレードを行おうとしていますが、以前のバージョンとは異なるディレクトリの場所にあります。たとえば、製品の v2 が Program Files (x86)\Old_path\Product にインストールされている場合、アップグレードされたバージョンの v3 を別のフォルダー C:\Program Files (x86)\New_path\Product にインストールしたいと思います。
新しい場所のパスを持つように msi プロパティ INSTALLDIR を変更しました。InstallExecuteSequence を変更しようとしました。InstallValidate の後に RemoveRegistryValues を追加して、レジストリに格納された古いパスを削除し、WriteRegistryValues を実行して新しいレジストリ値を追加しました。
しかし、インストール プロセスに変更は見られず、新しいファイルは古いディレクトリ パスにのみコピーされます。INSTALLDIR パスを変更した後でも、この古いパスがどこから取得されたかを知ることはできますか? メジャー アップグレード中に、このインストール パスの変更を行うにはどうすればよいでしょうか。
PhilDW によるコメントへの返信:
これは、メジャー アップグレードの正しいプロセスです。古いバージョンのファイルはすべて削除されます。しかし、私たちのアプリケーションでは、アップグレード中に新しい/必要なインストール ディレクトリを確認するための参照ダイアログがありません。以前のバージョンのパスを使用するだけです。これは、最初に下位バージョンの重要な設定/ユーザー構成ファイルのバックアップを取り、後でそれらをアップグレードされたバージョンで使用する必要があるためです。このバックアップを保存した後、このバックアップ ファイルを新しいパスに移動し、後で新しいファイルのコピーを開始します。HxPrepare ステップでこのパスを INSTALLDIR に変更し、新しいディレクトリでプロセスを続行したいと考えています。しかし、どこから古い道を考えているのかわかりません。
このインストール パスの変更を実行する理由は、製品の製造元名を変更し、製品のメジャー アップグレードを「C:\Program Files (x86)\New_manufacturer\Product installation」のような新しいパスで実行したいからです。 " . どうすればこれを達成できますか?