0

我有在 .NET 3.5 上运行的 winForm 应用程序。我正在使用 VS 2010,我的启动项目“WinFormUI”引用了其他库。

我使用称为目标安装程序的 VS 2010(保留 .NET 3.5)创建了 MSI 安装程序并安装了应用程序。添加/删除程序确认安装初始版本 1.0.0。安装程序属性 RemovePreviousVersion=True。

现在我通过添加 MessageBox("This is updated project") 更改我的启动项目“WinFormUI”,并将我的启动项目 winFormUi.exe 的程序集版本从 1.0.0.0 更改为 1.0.0.1。

创建了第二个升级的 MSI,并将安装程序的版本从 1.0.0 更改为 1.0.1,但保持“产品代码”相同。

按照http://www.codeproject.com/install/dotnetpatching.asphttp://social.msdn.microsoft.com/Forums/en-US/winformssetup/thread/7dda2e5f-70df-47d5-a62d-100a2bfd0394的步骤 .

我有 Windows SDK V7.1,其中包含 MsiMsp.exe 5.0 版和 Ocra 5.0 版。

我的 PCP 文件有以下数据。

ImageFamilies 表:家庭-> 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(“这是更新的项目”)。

难道我做错了什么 ?需要帮助。谢谢。

4

2 回答 2

0

补丁基本上包含两种设置之间的差异。为了覆盖文件,必须找到差异。它以文件的日期和大小开头。这个标准可能还不够,那是版本控制和签名有用的时刻。

于 2013-02-20T13:12:03.093 回答
0

当我通过 VS2010 中的“程序集信息”对话框更改升级项目中的启动项目 WinFormUI.exe 的“文件版本”时,问题解决了。我猜当目标 exe 的文件版本与升级后的 exe 相同(尽管两者的程序集版本、内容和文件大小与前面描述的不同)或 REINSTALLMODE=dmus 应该在这种情况下工作时,补丁升级没有任何作用。

于 2013-02-21T05:57:12.077 回答