首页 > 解决方案 > 删除组件后 Installshield 不会更新文件

问题描述

基本 .msi 项目。

安装盾牌 2010。

我的安装项目 v1.0.0.0 我添加了一些组件:
1. 转到“安装设计器”选项卡 ->“组织”菜单类别 ->“组件”子菜单。
2. 右键单击​​“组件”->“新建组件”。
3. 我将一个新文件夹名称“dir1”附加到 [INSTALLDIR] 目的地。
4. 然后我添加一个文件。
5. 转到“组织”->“设置设计”
6. 创建一个新功能
7. 右键单击​​该功能并选择“分配组件”
8. 我选择组件

构建,安装。

然后我将我的安装版本升级到 v1.0.0.1
1. 再次添加新组件。
2. 使用不同的目录名称附加目标 [INSTALLDIR]dir2
3. 添加了一个文件。
4. 转到“设置设计”
5. 右键单击​​功能并选择“分配组件”
6. 选择我创建的第二个组件。
7.然后转到“组件”并删除第一个组件。

构建,安装。

此时,没有任何更新。我仍然看到 Dir1 并且在应用程序安装目录中没有 Dir2。

如果我尝试卸载,它将删除“卸载程序”列表的应用程序,但根本不会删除任何文件。

我做错了什么,我该如何解决?

谷歌对此的帮助为零。我可能不知道使用什么搜索词来解决这类问题。

如果我完全卸载我的项目并手动删除所有文件,然后安装新版本,那么一切正常,它会创建 dir2,但我需要它不仅适用于全新安装,还适用于更新。

解决方案(至少对我而言)

虽然MF解决方案适用于尚未对 installshield 项目造成损坏的情况,但我将记录我自己的步骤,说明在损坏完成后如何修复此问题并且没有保存备份。

在“安装设计器”视图中:
1.安装信息 -> 一般信息 -> 产品代码,我单击Generate a new GUID按钮。
2. Media -> Upgrades -> Prepare setup for Upgrade Scenarios -> Upgrade Windows Installer Setup。右键单击它并选择Add major upgrade item
3.通用 -> 重大升级。留下Products sharing my Upgrade Code检查。
4.通用 -> 产品版本。选择Within a specific range of versions当前构建版本并将其输入到“最大”框中。

现在,当使用这个新的安装文件安装应用程序时,它将自动卸载旧版本及其所有组件,并安装带有新组件的新版本。

标签: installationinstallshield

解决方案


您不能在次要安装之间删除组件。

您可以将组件条件设置为“0”,这样该条件就不会安装和删除组件中的任何文件。但将组件保留为项目的一部分。如果要删除作为原始组件一部分安装的文件,请使用删除文件设置将文件添加到组件中。

如果您输出详细日志,您将在日志文件中看到它抱怨某个组件已被删除。或者,如果您针对旧版本验证新版本,它会说您无法删除组件。


推荐阅读