InstallShield MSI安装程序无法从“添加删除程序”进行修复,但可以从安装程序进行操作

时间:2014-01-14 19:59:55

标签: installer windows-installer installshield

我正在使用Installshield Spring 2012创建一个MSI安装程序。除了一个问题,我的安装程序运行良好。如果我在安装中删除某个文件,并从“添加和删除程序”运行修复,则修复将失败并显示错误:

  

错误27506.执行SQL脚本SqlScript1.sql时出错。第10行。发生文件激活错误。物理文件名“SEICube.mdf”可能不正确。诊断并更正其他错误,然后重试该操作。 (5105)

如果我从安装程序中运行修复,那么,如果我再次双击我的安装程序,然后选择修复,它就能完美运行并且我没有任何错误。

有什么想法吗?

谢谢。

1 个答案:

答案 0 :(得分:2)

在两种情况下记录安装程序并进行比较。我能想到的主要区别是ARP / PF中的修复按钮将以静默模式运行它,因此安装UI序列永远不会运行。 “修改”按钮(或双击MSI)将启动UI序列,然后选择修复。它可能是在UI中触发的自定义操作,使其工作。实际上它应该默默工作,因此自定义操作是不合适的。

其他可能相关的想法是,MSI不会保留属性,但InstallShield将出现连接字符串属性。如果您使用的是SSPI而不是数据库登录,则可能会导致各种问题,具体取决于运行安装程序的人员。

另一个想法是因为数据库层可能是另一台服务器,在安装程序中使用MDF / LDF文件并不好。数据库应完全编写脚本并由连接创建。此外,脚本应该非常强大,以支持从任何先前架构到当前架构的安装,卸载,重新安装,修复和升级。