3

アプリケーションにマイナー アップグレードを適用しようとすると、インストーラーが起動し、(試行する設定の組み合わせに応じて) 次のいずれかが表示されます。

  • 修復/削除ダイアログ
  • インストール ディレクトリのプロンプト

これらのプロンプトのいずれかを受け取るべきではないと思います。私はほとんどの場合、インストーラーが自動的にアップグレードを適用し、プロンプトを表示しないことを期待しています。私は、Visual Studio セットアップ プロジェクトですべてを正しく行っていると思います。

  • バージョンを 1.0.0 から 1.1.0 にアップグレードしました
  • 商品コードはそのままに
  • パッケージコードを更新しました
  • アップグレードコードは同じままにしました
  • パラメータ REINSTALLMODE=vomus REINSTALL=ALL を使用してインストーラを起動します

コード/フラグとテクニックのほぼすべての組み合わせを試しましたが、更新を適用できないようです。

他に何を試すことができるかについてのアイデアはありますか?

4

2 に答える 2

1

それを機能させるには:

  • バージョンを 1.0.0 から 1.1.0 にアップグレードしました
  • 製品コードは同じままにしました (Visual Studio からプロンプトが表示されたときにいいえと言った)
  • パッケージコードを更新しました(Visual Studioはこれを自動的に行いました)
  • アップグレードコードを変更しませんでした
  • パラメータ REINSTALLMODE=vomus REINSTALL=ALL を使用してインストーラを起動します

私の質問で示したように、それはうまくいっているようです。アップグレードを正常に適用できます。ただし、インストーラーを実行すると、依然として修復/削除オプションが表示されます。しかし、それは私が推測する別の質問です。

于 2012-08-30T16:02:37.500 に答える
0

まず最初に:両方の MSI ファイルで、または展開作業とテスト中のある時点で、パッケージ GUID を再利用していませんか?

新しい GUID を使用して両方の MSI ファイルを再構築し、既存のキャッシュされたバージョンからそれらを「分離」してから、再度インストールのテストを試みます。パッケージコードと製品コードの両方を変更してください。さらに良いことに、これらの新しいバージョンをクリーンな仮想マシンでテストして、過去の罪の影響を受けない適切なテスト環境を確保してください。パッケージ GUID の競合により、開発者システムの Windows インストーラー データベースにグレムリンが含まれている可能性があります。この場合、パッケージのインストールは合計 XFile になり、最も奇妙なことが起こります。


詳細: パッケージ GUID が 2 つの MSI ファイルで同じである場合、Windows インストーラーは定義上、それらのファイルの内容に関係なくそれらを同じファイルとして扱います。これにより、クリーンアップとデバッグが困難なあらゆる種類の奇妙な問題が発生する可能性があります。MSI をインストールすると、システムの C:\Windows\Installer フォルダー (このフォルダーは非表示で保護されています) にキャッシュされるため、一度更新するのを忘れただけでも、これが発生する可能性があることに注意してください。このキャッシュされたコピーは、同じ GUID を持つ MSI ファイルが起動された場合に再利用されます (少なくとも、これは以前のバージョンの Windows インストーラーの場合でした - これは現在修正されている可能性があります)。

Installshield を使用している場合は、「パッケージ GUID を常に生成する」機能を有効にして、これが起こらないようにする必要があります。パッケージ GUID は、ビルドごとに常に変更する必要があります。ハード コードしておく理由はまったくありません。特にオーバーライドしない限り、WIX はパッケージの GUID を自動的に生成すると思います。

于 2012-08-30T08:21:55.900 に答える