我使用VS2008安装包分发我的应用程序,这通常效果很好。当我创建应用程序的新版本时,我会进入并增加安装包上的Version属性,并验证RemovePreviousVersions属性是否设置为True。
这在大多数情况下都工作得很好--我只需要运行新版本的安装包,旧版本就会被卸载,新版本会替换掉它。
但是,有时安装包会成功运行,但当我启动程序时,旧版本会启动。显然,旧版本的.exe仍然存在。
我最终不得不完全卸载软件并安装新版本,这总是有效的,但这是一件痛苦的事情。
据我所知,该文件并未在使用中,安装包也没有告诉我重新启动。
你知道这是怎么回事吗?
发布于 2008-12-19 10:51:11
不是直接的答案,但升级和uninstall+ a重装之间的关键区别在于,任何自定义卸载步骤都不会在2k8中调用,而是在2k5中调用。
这在Visual Studio 2005 -> 2008/10 Service Installer Project Upgrade issue中被引用
与此相关的另一个区别是,在2k8中,文件根据版本信息资源进行升级-如果您的模块没有更新的版本,则它们不会被替换。
在某些情况下,你的强名称是否也有影响,但我很有信心最后一段涵盖了你所看到的问题。
发布于 2010-02-19 16:29:38
第二种方法是使用orca
Orca是用于修改msi文件的实用程序。
你可以从下面的链接下载“Orca”。http://www.softpedia.com/get/Authoring-tools/Setup-creators/Orca.shtml
步骤:
a. Install orca into your computer.
b. Open orca
c. Drag and drop your msi into orca UI
d. Into left panel it will list the name of tables
e. select property table
f. go to right panel and right click
g. click on 'Add Row'
h. into 'Property' type REINSTALLMODE
i. into 'Value' type amus
j. save msi file
k. and that's it现在,当你安装它时,它会覆盖所有的文件。
发布于 2010-02-19 16:20:27
我们需要将msi文件的REINSTALLMODE属性设置为amus。
下面是了解更多'amus‘http://msdn.microsoft.com/en-us/library/aa371182%28VS.85%29.aspx含义的链接
有两种方法可以做到这一点。
使用 SDK附带的msiexec.exe (如果您使用的是VS2005或VS2008,只需浏览到.NET studio的命令提示符,您就可以在那里找到它)
找到msiexec.exe后,只需输入以下命令,将安装程序的REINSTALLMODE属性设置为amus即可。
msiexec.exe /i foo.msi REINSTALLMODE=amus
https://stackoverflow.com/questions/290011
复制相似问题