我已经升级了[VS2008内置的[.vdproj MSI生成器项目] System.Configuration.Install.Installer,其中a ServiceProcessInstaller
和a ServiceInstaller
从Visual Studio 2005到2008.安装程序类没有任何自定义的后果(即,没有尝试启动或停止服务或注册儿童)
RemovePreviousVersions
设置为true
,我正在改变Version
和ProductCode
.这会在安装期间触发错误:
"错误1001:指定的服务已存在"
谷歌搜索产生的东西(但直到现在才开始): - 谷歌"指定的服务已经存在"
我迄今看到的最有用的是http://forums.msdn.microsoft.com/en-US/winformssetup/thread/b2d1bd22-8499-454e-9cec-1e42c03e2557 /
但是这并没有回答这个基本问题: -
鉴于用户可以选择:
a)安装位置相同
或b)安装位置不同
,最小的代码更改是否合理地确保旧服务被卸载并且新服务被安装?或者,对于将v1.0.1升级到具有相同名称的相同服务的v1.0.2的基本方案(即签名),是否需要进行其他代码更改以解决此问题
(如果在新安装程序中有一个重要的卸载步骤,那么强大的命名只会在新的安装程序中发挥作用.)
我在VS 2008中生成了一个新的安装程序,它的表现并不好.
目前,我的解决方法是停止更新Version
并ProductCode
强制用户在被告知已安装版本时手动卸载.
附录感谢divo的探测:虽然最简单的黑客攻击可能是"如果调用安装步骤及其升级,请首先调用卸载步骤",我想要一个正确的正式祝福答案!(例如,在升级过程中重命名服务时,简单的黑客如何应对?)
这应该回答你的问题
当我安装新版本的软件时,如何消除"指定的服务已存在"?