Windows Application のセットアップ プロジェクトを作成しました。既存のバージョンを新しいバージョンに置き換えるために、次のプロパティを設定しました。
RemovePreviousversion=True;
Productcode=change;
しかし、exe
新しくインストールされたバージョンから実行すると。新しいアップデートが表示されません。以前のバージョンの出力が得られます!
全体の説明はこちら
RemovePreviousVersions を TRUE に設定し、InstallAllUsers を TRUE に設定しています。
新しいリリースを行う必要がある場合は、インストーラーの [バージョン] フィールドを新しいバージョン番号で更新すると、VS から製品コードを更新するように求められます。これに対して [はい] と答えます。実際に製品コードが変更されることを確認しましたが、パッケージ コードも変更されます (sourcesafe を使用してプロジェクト ファイルを比較することで確認されています)。
バージョン間で UpgradeCode が変わることはありません。
私のバージョン番号の変更は、たとえば「1.1.2」->「1.1.3」の形式です(それが関係している場合に備えて)。
したがって、ビルド間で異なるのは、ProductCode、PackageCode、および ProductVersion の 3 つのフィールドだけです。
すべて完了したら、インストーラーをビルドします。新しいバージョンをインストールすると (常にすべてのユーザーに対して、常に同じディレクトリにインストールします)、さまざまな時点で 3 つの異なる結果が見られました。
- 新しいバージョンをインストールしているように見えますが、実際には古いファイルが残ったままになります (そして、プログラムの追加と削除に 1 つのインスタンスが残ります)。
- 追加/削除プログラムでアプリの 2 つのインスタンスが作成され、どちらも同じ名前で、同じディレクトリを指しています。
- 最初に古いものをアンインストールしてから、新しいものをインストールします(本来の動作)。
安全のために、新しいリリースをインストールする前に古いものを手動でアンインストールする必要があることをユーザーに説明するのは非常にイライラします。
助言がありますか?なぜこれが機能しないのですか?ここで何が欠けていますか?