0

.NET 3.5 で動作する winForm アプリケーションがあります。私は VS 2010 を使用しており、私の StartUp プロジェクト「WinFormUI」は他のライブラリを参照しています。

ターゲットインストーラーと呼ばれるVS 2010(.NET 3.5を保持)を使用してMSIインストーラーを作成し、アプリケーションをインストールしました。プログラムの追加と削除は、最初のバージョン 1.0.0 のインストールを確認します。インストーラ プロパティ RemovePreviousVersion=True。

ここで、MessageBox("This is updated project") を追加してスタートアップ プロジェクト "WinFormUI" を変更し、startpu プロジェクト winFormUi.exe のアセンブリ バージョンを 1.0.0.0 から 1.0.0.1 に変更しました。

2 番目のアップグレードされた MSI を作成し、インストーラーのバージョンを 1.0.0 から 1.0.1 に変更しましたが、「製品コード」は同じままにしました。

次の手順フォーム http://www.codeproject.com/install/dotnetpatching.aspおよび http://social.msdn.microsoft.com/Forums/en-US/winformssetup/thread/7dda2e5f-70df-47d5-a62d-100a2bfd0394 .

MsiMsp.exe バージョン 5.0 と Ocra バージョン 5.0 を含む Windows SDK V7.1 があります。

私の PCP ファイルには次のデータがあります。

ImageFamilies テーブル : Family -> fam1

MsiPatchSequence テーブル : PatchFamily -> fam1 ; シーケンス -> 1.0.0

プロパティ テーブル: MinimumRequiredVersion -> 200 およびその他の列

TargetImages テーブル : IgnoreMissingSrcFiles -> 0 およびその他の列

UpgradedImages テーブル : Family -> fam1 およびその他の列

MsiMsp.exe を使用して MSP を生成し、msiexec /p を使用して実行します。

インストーラー (パッチ) を実行します。アップグレード後、プログラムの追加と削除でアップグレードされたバージョン 1.0.1 を確認しますが、問題は、exe を実行しても変更が反映されないことです。つまり、MessageBox("This is updated project") を表示するように変更しました。

私は何か間違っていますか?ヘルプが必要です。ありがとう。

4

2 に答える 2

0

パッチには基本的に2つの設定の違いが含まれています。ファイルを上書きするには、違いを見つける必要があります。ファイルの日付とサイズから始まります。この基準では不十分な場合があります。つまり、バージョン管理と署名が役立つ瞬間です。

于 2013-02-20T13:12:03.093 に答える
0

VS2010の「アセンブリ情報」ダイアログを介して、アップグレードされたプロジェクトのスタートアッププロジェクトWinFormUI.exeの「ファイルバージョン」を変更すると、問題は解決しました。ターゲットexeのファイルバージョンがアップグレードされたexeと同じ場合、パッチアップグレードは何もしないと思います(ただし、アセンブリバージョンとコンテンツとファイルサイズは前述のように異なります)またはREINSTALLMODE = dmusはこの場合に機能するはずです。

于 2013-02-21T05:57:12.077 に答える