4

インストール パッケージのビルドには WiX を使用します。私は WiX テクノロジーに不慣れで、現在インストールされているアプリケーションのメジャー アップグレードを行おうとしていますが、以前のバージョンとは異なるディレクトリの場所にあります。たとえば、製品の v2 が Program Files (x86)\Old_path\Product にインストールされている場合、アップグレードされたバージョンの v3 を別のフォルダー C:\Program Files (x86)\New_path\Product にインストールしたいと思います。

新しい場所のパスを持つように msi プロパティ INSTALLDIR を変更しました。InstallExecuteSequence を変更しようとしました。InstallValidate の後に RemoveRegistryValues を追加して、レジストリに格納された古いパスを削除し、WriteRegistryValues を実行して新しいレジストリ値を追加しました。

<InstallExecuteSequence>
....
    <Custom Action="HxPrepare" Before="InstallValidate">NOT Installed</Custom>
    <RemoveRegistryValues After="InstallValidate" />
    <WriteRegistryValues />
   <Custom Action="HxFinalize" Before="StartServices">NOT Installed</Custom>
....
<InstallExecuteSequence />

しかし、インストール プロセスに変更は見られず、新しいファイルは古いディレクトリ パスにのみコピーされます。INSTALLDIR パスを変更した後でも、この古いパスがどこから取得されたかを知ることはできますか? メジャー アップグレード中に、このインストール パスの変更を行うにはどうすればよいでしょうか。

PhilDW によるコメントへの返信:

これは、メジャー アップグレードの正しいプロセスです。古いバージョンのファイルはすべて削除されます。しかし、私たちのアプリケーションでは、アップグレード中に新しい/必要なインストール ディレクトリを確認するための参照ダイアログがありません。以前のバージョンのパスを使用するだけです。これは、最初に下位バージョンの重要な設定/ユーザー構成ファイルのバックアップを取り、後でそれらをアップグレードされたバージョンで使用する必要があるためです。このバックアップを保存した後、このバックアップ ファイルを新しいパスに移動し、後で新しいファイルのコピーを開始します。HxPrepare ステップでこのパスを INSTALLDIR に変更し、新しいディレクトリでプロセスを続行したいと考えています。しかし、どこから古い道を考えているのかわかりません。

<InstallExecuteSequence>
<RemoveExistingProducts After="InstallInitialize" />
<Custom Action="PreventDowngrade" After="FindRelatedProducts">DOWNGRADE</Custom>
<Custom Action="HxInit" After="CostFinalize">NOT Installed</Custom>
<Custom Action="HxPrepare" Before="InstallValidate">NOT Installed</Custom>
<Custom Action="HxFinalize" Before="StartServices">NOT Installed</Custom>
<Custom Action="HxPreUninstall" Before="InstallValidate">(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")</Custom>
<Custom Action="HxUninstall" After="InstallInitialize">(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")</Custom>

このインストール パスの変更を実行する理由は、製品の製造元名を変更し、製品のメジャー アップグレードを「C:\Program Files (x86)\New_manufacturer\Product installation」のような新しいパスで実行したいからです。 " . どうすればこれを達成できますか?

4

0 に答える 0