【问题标题】:Installshield 2009, prevent reinstall of feature during MSI repairInstallshield 2009,防止在 MSI 修复期间重新安装功能
【发布时间】:2011-09-07 23:22:27
【问题描述】:
我有一个 MSI 包,它在首次安装时会将 SQL 脚本安装到 SQL Server 上。使用 Installshield 中的 SQL 脚本功能可以正常工作。
在修复 MSI 期间,重新运行 SQL 脚本。我想防止这种情况发生,我只希望脚本仅在安装时运行。
我已经尝试了很多方法来做到这一点:
- 功能条件 - 失败
- 组件条件 - 失败
- 在安装结束时修改本地功能选择的注册表项 - 失败
如何防止功能/组件(链接到 SQL 脚本)在修复时运行?
谢谢
【问题讨论】:
标签:
installation
windows-installer
installshield
【解决方案1】:
虽然 InstallShield 中的 SQL 脚本与组件(因此也与功能)相关联,但条件取决于脚本本身。查看脚本的 Runtime 标签页,您会在底部看到“Script Condition”。这存储在 Condition 列的 ISSQLScriptFile 表中。
顺便说一句,您可能需要考虑而不是尝试在修复期间强制脚本不运行,以使其在修复期间正常执行。换句话说,如果脚本的目的是创建一个表,如果表已经存在,则让它什么都不做。这样,如果表不存在,修复将起作用并且表将被重新创建。具体取决于相关脚本的性质。