パッケージ化されたバージョンに置き換えることはできません

アプリをインストールできませんでした エラーと解決策
このアプリのパッケージ化されていないバージョンをすでにインストールしています

MSIXパッケージ化したWindowsのアプリをインストールしようとしたら、

アプリをインストールできませんでした。エラー メッセージ:現在のユーザーが、このアプリのパッケージ化されていないバージョンをすでにインストールしています。これをパッケージ化されたバージョンに置き換えることはできません。競合するパッケージはXXXXX、その発行元は CN=XXXX です。 (0x80073cfb)

公式サイトによると、この「0x80073cfb」エラーは、

提供されたパッケージはすでにインストールされており、パッケージの再インストールはブロックされています。
すでにインストールされているパッケージとビット単位で同一ではないパッケージをインストールすると、このエラーが発生することがあります。 デジタル署名もパッケージの一部であることに注意してください。 したがって、パッケージが再構築または再作成されると、以前にインストールされたパッケージとビット単位で同一ではなくなります。 このエラーを修正するには、次の 2 つのオプションが考えられます:
(1) アプリのバージョン番号を増やし、パッケージを再構築して再署名します。
(2) 新しいパッケージをインストールする前に、システム上のすべてのユーザーの古いパッケージを削除します。

原因と対策

原因 古いアプリをインストールしようとした

私の場合は、一度完成したMSIXパッケージ化したWindowsのアプリをWindowsにインストール。
が、その後、もっと改良・修正したくなって、Visual Studio修正。
きちんと動作するかデバッグ。

続いて、Visual Studioの「公開」のMSIXパッケージ化。

で、ちょこまかこのデバッグと公開を繰り返していたんですけれど、その後この修正は必要なかったな、と、古いパッケージ化したものを再インストールしようとしたんですね。
すると、このエラーが。

デバッグするとインストールされる

MSIXパッケージ化したWindowsアプリをVisual Studioからデバッグ実行すると、自動的にそのパッケージがローカルのWindowsにインストールされた状態で実行されます。
これは、MSIXパッケージ化したWindowsのアプリが「コンテナ」と呼ばれるサンドボックス(閉じ込められた専用の場所)で動作するようになっているからで、デバッグはこの環境できちんと動作するか確認します。

インストールされるか確認

実際にデバッグでインストールされるか確認してみました。
まずは、該当するアプリを「設定」からアンインストール。

アプリをアンインストールする

Windowsの「設定」を開き、MSIXパッケージ化したWindowsのアプリをアンインストールします。
そして、デバッグ。

デバッグの開始

Visual Studioで、メニューの中にある「デバッグ」を開き、「▶デバッグの開始」を選択すると・・・
続いてWidowsの「設定」を開き、「アプリ」>「インストールされているアプリ」を開くと・・・

アプリがインストールされた

この通り、インストールされています。
また、デバッグを停止した場合もインストールされたままです。

デバッグを終了

デバッグ停止のボタンをクリックすると・・・

インストールされた

このようにインストールされたままです。

古いファイルから更新しようとした

で、デバッグと公開を繰り返したあとに、最終的な修正は必要なかったので、デバッグ前に「公開」で作成したパッケージを再インストールしようとして、先ほどのエラーが出てしまったと。

つまり、すでにデバッグで新しいバージョンがインストールされているのに、古い公開で作成したバージョンをインストールしようとすると、

アプリをインストールできませんでした。エラー メッセージ:現在のユーザーが、このアプリのパッケージ化されていないバージョンをすでにインストールしています。

というエラーが出てしまう、と。

対策

対策はいくつかあります。

アンインストールする

デバッグでインストールされたアプリ、もしくは古いバージョンのアプリを設定からアインインストールします。
これは普通のWindowsアプリのやり方と一緒です。

アンインストール

設定を開き①の…をクリック。

表示されたメニューの中から②の「アンインストール」を選択。

この状態で「公開」でパッケージ化したアプリをインストール(もしくは更新)します。

新しいバージョンを公開する

デバッグ後に、「公開」をクリックして新しいバージョンをパッケージ化して配布状態にしたファイルからインストールすると、最初のエラーは表示されないはずです。

公開

MSIXプロジェクトを右クリックして出てきたメニューから「公開」を選択。

アプリ本体だけデバッグする

もし、デバッグするときに勝手にインストールされないようにするには、MSIXのプロジェクトではなく、プログラム本体(FormsやXAMLのexeアプリ)を選択してデバッグします。
やり方は以下。

メニューの下にあるパッケージの選択でアプリ本体(画像では①の方)を選択します。
この状態でデバッグします。

①はFomrsアプリ(もしくはXAMLアプリ)。②はMSIXパッケージ化用のプロジェクト。

ただし、この方法でデバッグすると、MSIXパッケージ化のみに動作するチェックができなくなります。
例えばMSIXパッケージ化すると、Windowsのスタートアップに登録するには、ClickOnceやexe単体で出力する方法とは違うやり方が必要ですが、これが動作しません。

公開は最後の最後

あとは「公開」は、デバッグを重ねて最後の最後に実行する。このルールを守れば、このインストールできないというエラーはお目にかからなくなると思います。

コメント

タイトルとURLをコピーしました