InstallShield 2011 未从服务列表中删除服务

Posted

技术标签:

【中文标题】InstallShield 2011 未从服务列表中删除服务【英文标题】:InstallShield 2011 not removing service from Services list 【发布时间】:2014-02-04 14:56:32 【问题描述】:

我有一个安装服务的 InstallShield 2011 项目 (A),并复制了该项目以用于安装不同服务的另一个项目 (B)。

在卸载期间,似乎如果安装了 (A) 或 (B),则服务会卸载并从服务列表中删除。但是,如果同时存在 (A) 和 (B),则 (B) 不会在卸载时从服务列表中删除。实际文件正在被删除,所以当我右键单击启动服务时,它说找不到文件。

我在项目的General Information页面更新了Product Code和Upgrade Code,并在复制InstallShield项目时更新了Setup Design - Advanced Settings - Services - [My Service]中的Key Name。

是否还有其他可能影响卸载的共享项目?

【问题讨论】:

【参考方案1】:

组件 GUID 也可以共享。这很可能是您的问题的根源。作为一种实践,您永远不应该复制一个项目并使用它来为另一个类似产品创建一个安装项目,这是错过更新某些必须唯一并且您的包行为不正确的 GUID 的最简单方法。

我不知道InstallShield有没有这个选项,其他工具有,但是推荐的方法是从第一个(A)创建一个项目模板,然后从那个模板创建一个新项目,在这种情况下IS 应确保您从包中获得所有敏感区域的新的唯一 GUID。

【讨论】:

将 InstallShield 项目保存为模板并从模板创建新项目时,产品/升级代码会更改,但组件代码保持不变。它们是否需要在多个项目中保持唯一? 组件 GUID 也应该是唯一的。如果您希望在两个应用程序之间共享某些文件并拥有组件的一些 GUID,更好的选择是构建一个合并模块并在两个项目中添加该合并模块。但是,如果项目被认为是完全独立地构建包,那么您应该为组件设置唯一的 GUID。

以上是关于InstallShield 2011 未从服务列表中删除服务的主要内容,如果未能解决你的问题,请参考以下文章

InstallShield - 相对文件路径

列表项已从 ListView 中删除,但未从数据库中删除

Installshield:如何更新已经运行的 Windows 服务

缓冲读取器未从套接字接收数据

使用 Workbench 从 MSSQL 迁移到 MySQL 时未从源中检索模式列表

当未从多个选择框之一中选择项目时,基于 Access 中的多个“多个选择列表框”的 VBA 查询