installation - 删除组件后 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
当前构建版本并将其输入到“最大”框中。
现在,当使用这个新的安装文件安装应用程序时,它将自动卸载旧版本及其所有组件,并安装带有新组件的新版本。
解决方案
您不能在次要安装之间删除组件。
您可以将组件条件设置为“0”,这样该条件就不会安装和删除组件中的任何文件。但将组件保留为项目的一部分。如果要删除作为原始组件一部分安装的文件,请使用删除文件设置将文件添加到组件中。
如果您输出详细日志,您将在日志文件中看到它抱怨某个组件已被删除。或者,如果您针对旧版本验证新版本,它会说您无法删除组件。
推荐阅读
- android - ForegroundColorSpan 无法按预期工作(Android 9 - Pie)
- c# - 计算点到直线的距离
- python-2.7 - 更新集群上我的文件夹中的 Python
- node.js - 如何在 Unity 中通过 socket.io 发送 protobuf
- windows - Solr 在关闭 Windows 命令提示符时停止
- nginx - Nginx 配置错误
- javascript - 拼接不适用于 DOM 元素数组
- javascript - 错误和删除错误时的可访问性问题
- laravel - 多态关系laravel问题与视图
- azure - 如何设置对 Azure 应用服务的 FTP 访问?