我有在.NET 3.5上运行的winForm应用程序。我正在使用VS 2010,我的StartUp项目“WinFormUI”引用其他库。
我使用VS 2010(保留.NET 3.5)创建了MSI安装程序,称为目标安装程序,并且是应用程序的一部分。添加/删除程序会确认初始版本1.0.0的安装。安装程序属性RemovePreviousVersion = True。
现在我通过添加MessageBox(“这是更新的项目”)来更改我的启动项目“WinFormUI”,并且还将我的startpu项目winFormUi.exe的程序集版本从1.0.0.0更改为1.0.0.1。
创建了第二个升级的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开始执行以下步骤。
我有Windows SDK V7.1,其中包含MsiMsp.exe版本5.0和Ocra版本5.0。
我的PCP文件包含以下数据。
ImageFamilies表:家庭 - > FAM1
MsiPatchSequence表:PatchFamily - > fam1;序列 - > 1.0.0
属性表:MinimumRequiredVersion - > 200和其他columsn
TargetImages表:IgnoreMissingSrcFiles - > 0和ohter columsns
升级的图表:家庭 - > fam1和其他columsn
使用MsiMsp.exe生成MSP并使用msiexec / p。
运行它运行instller(补丁)。升级后添加/删除程序确认升级版本1.0.1,但问题是我运行我的exe时没有反映我的更改。即,我已修改为显示MessageBox(“这是更新的项目”)。
我做错了吗?需要帮助。感谢。
答案 0 :(得分:0)
补丁基本上包含两个设置之间的差异。为了覆盖文件,必须找到差异。它从文件的日期和大小开始。这个标准可能还不够,那就是版本控制和签名有用的时候。
答案 1 :(得分:0)
当我通过VS2010中的“程序集信息”对话框更改了升级项目中的启动项目WinFormUI.exe的“文件版本”时,问题解决了。我认为当目标exe的File版本与升级的exe相同时,补丁升级不会做任何事情(尽管两者的汇编版本和内容以及文件大小都不同,如前所述) 或者REINSTALLMODE = dmus应该适用于这种情况。