2

我有一个应用程序的安装程序,我在其中使用了一些自定义操作。在安装时,我一直在使用一些自定义 MSI 属性,如 DBHOST 等来确定数据库主机。

它的默认值是 localhost。

但我一直在安装时通过命令行将此 DBHOST 属性设置为其他值(如 192.168.1.3)。并且安装与通过命令行设置的属性正常工作。

但是当我使用

    MsiGetProperty

在必须在卸载期间执行的自定义功能中,我得到了默认值(localhost),而不是我在安装时通过命令行设置的值(192.168.1.3)

任何人都可以帮助我吗?为什么会这样。?卸载时是否需要做任何其他事情才能获得相同的 MSI 属性值?

提前致谢...

4

2 回答 2

5

属性值不是持久的,这意味着在卸载时它不会记住它在安装期间的最后一个值,它将使用其默认值。最好和更简单的解决方案是将此值写入注册表项,并在卸载期间使用注册表搜索检索它。

于 2012-05-16T09:48:59.227 回答
0

由于您提到 DBHOST,如果您使用 InstallShield 的本机 SQL 脚本功能,他们会在其基础架构中预先编写自定义操作,以保留 SQL 连接所需的属性,以供后续在维修、小升级和卸载期间使用。

默认属性名称是 IS_SQLSERVER_SERVER。

顺便说一句,DBHOST 是很无辜的,但要意识到一些持久化数据(例如 IS_SQLSERVER_USERNAME 和 IS_SQLSERVER_PASSWORD )是敏感的,需要加密、解密。InstallShield 会自动执行此操作。安全性是否足以满足您的需求,由您自行审查。

于 2012-05-16T14:26:38.527 回答