1

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. 新しいバージョンをインストールしているように見えますが、実際には古いファイルが残ったままになります (そして、プログラムの追加と削除に 1 つのインスタンスが残ります)。
  2. 追加/削除プログラムでアプリの 2 つのインスタンスが作成され、どちらも同じ名前で、同じディレクトリを指しています。
  3. 最初に古いものをアンインストールしてから、新しいものをインストールします(本来の動作)。

安全のために、新しいリリースをインストールする前に古いものを手動でアンインストールする必要があることをユーザーに説明するのは非常にイライラします。

助言がありますか?なぜこれが機能しないのですか?ここで何が欠けていますか?

4

1 に答える 1

1

答えが見つかりました。

また、 AssemblyInfo.cs のAssemblyVersionAssemblyFileVersionを変更する必要があります。

于 2013-01-28T10:25:28.827 に答える