我使用VS 2008安装包来分发我的应用程序,这通常很好用。当我创建新版本的应用程序时,我会进入并递增安装包上的Version
属性,并验证RemovePreviousVersions
属性是否设置为True。
这在大多数情况下都能正常工作-我只是运行新版本的安装包,旧版本被卸载,新版本替换它。
然而,偶尔安装包会成功运行,但当我启动程序时旧版本启动。显然旧版本的.exe仍然存在。
我最终不得不完全卸载软件,并安装新版本,这总是工作,但是一个痛苦。
据我所知,该文件没有使用,安装包也没有告诉我重新启动。
你知道这是怎么回事吗?
3条答案
按热度按时间vohkndzv1#
这不是一个直接的答案,但升级和卸载+重新安装之间的关键区别是,任何自定义卸载步骤都不会在2k 8中调用,而会在2k 5中调用。
这在Visual Studio 2005 -> 2008/10 Service Installer Project Upgrade issue中引用
与此相关的另一个区别是,在2k 8中,文件根据版本信息资源进行升级-如果您的模块没有更新的版本,它们不会被替换。
在某些情况下,您的强名称是否也有影响,但我很有信心,最后一段涵盖了您所看到的问题。
xxls0lw82#
第二种是利用逆戟鲸
Orca是修改msi文件的实用程序。
您可以从以下链接下载'Orca' http://www.softpedia.com/get/Authoring-tools/Setup-creators/Orca.shtml
操作步骤:
现在,当您安装它将覆盖所有文件。
u5rb5r593#
我们需要将msi文件的REINSTALLMODE属性设置为amus。
以下是了解更多有关“amus”的含义的链接http://msdn.microsoft.com/en-us/library/aa371182%28VS.85%29.aspx
有两种方法。
1.通过使用.NET SDK附带的msiexec.exe(如果您有VS 2005或VS 2008,它将附带,只需浏览到Visual Studio的命令提示符,您就会在那里找到它)
找到msiexec.exe后,只需键入以下命令,将安装程序REINSTALLMODE属性设置为amus
重新安装模式