16

WiX バージョン 3 を使用した MSI ビルドがあります。

展開している製品の以前のインストーラーはすべて、指定された構成で正常に機能しました (つまり、以前のバージョンが存在する場合は、削除してから新しいバージョンをインストールします) - ただし、ビルドした新しい MSI は、実行時にすべてのファイルをインストールしません。 「最初に削除」パス。

既存のインストールを手動で削除してから新しいバージョンを実行すると、すべてのファイルがインストールされます。Orca で MSI ファイルを調べると、ファイルと機能が表示され、問題ないようです。

詳細ログと追加ログをオンにして実行してみましたが ( /l*vx)、ファイルが登録されていないか、インストールされていないかを確認できます。

何か考えや提案はありますか?これは私たちを壁に押し上げています。

4

4 に答える 4

3

あなたの<RemoveExistingProducts After="">ステップはどのように見えますか?インストール後にremoveexistingが実行され、以前のバージョンと現在のバージョンで同じだったすべてのファイルが削除されている可能性があります。

私はインストーラーを に設定して、<RemoveExistingProducts After="InstallInitialize">何よりも先にそれが完了していることを確認しています。正しいかどうかはわかりませんが、機能しているようです。

    <Upgrade Id="$(var.UpgradeCode)">
        <!--Upgrade code found at http://www.nichesoftware.co.nz/blog/200809/upgradable-msi-installations-with-wix -->
        <!-- Detect any newer version of this product-->
        <UpgradeVersion Minimum="$(var.version)" IncludeMinimum="no" OnlyDetect="yes" Language="1033" Property="NEWPRODUCTFOUND" />

        <!-- Detect and remove any older version of this product-->
        <UpgradeVersion Maximum="$(var.version)" IncludeMaximum="yes" OnlyDetect="no" Language="1033" Property="OLDPRODUCTFOUND" />
    </Upgrade>
    <CustomAction Id="PreventDowngrading" Error="Newer version already installed"></CustomAction>
    <InstallExecuteSequence>
        <!-- Prevent Downgrading-->
        <Custom Action="PreventDowngrading" After="FindRelatedProducts">NEWPRODUCTFOUND</Custom>
        <RemoveExistingProducts After="InstallInitialize" />
    </InstallExecuteSequence>
    <InstallUISequence>
        <!-- Prevent Downgrading-->
        <Custom Action="PreventDowngrading" After="FindRelatedProducts">NEWPRODUCTFOUND</Custom>
    </InstallUISequence>
于 2009-03-19T00:06:13.240 に答える