【问题标题】:Variable ODBC DSN name in InstallShield MSI installationInstallShield MSI 安装中的变量 ODBC DSN 名称
【发布时间】:2015-08-14 21:38:14
【问题描述】:

我正在为允许安装多个实例的产品设计新的 MSI 安装。安装的许多组件由 2 个字符的代码标识。其中包括一个 ODBC 数据源。数据源的名称包括此 2 字符代码,这是用户在安装过程中输入的内容。我注意到我不能在 InstallShield 项目中使用属性名称“[MyPropertyName]”作为 ODBC DSN 的名称。是否有任何干净的方法允许在运行时设置 ODBC DSN 名称?如果我为每个实例创建硬连线名称,我可以为每个硬连线实例名称(例如“测试”和“生产”)创建单独的 DSN,但我们允许用户指定名称。我会因此而陷入更多死胡同,还是有办法允许用户指定的特定于实例的属性值?

【问题讨论】:

    标签: windows-installer installshield


    【解决方案1】:

    您可以 a) 跳过 MSI 中的 ODBC 表并改用 Registry 表,或者 b) 使用自定义操作在安装时将自定义行动态注入 ODBC 表中。

    【讨论】:

    • 将自定义行注入 ODBC 表是否比使用直接创建 ODBC 数据源的自定义操作更好(更有可能?/更干净?)?我不知道可以在运行时修改 MSI 表。有这方面的例子吗?
    • 它更简洁,因为您仍然利用 MSI 的标准操作,这些操作本身就知道如何处理安装/卸载/修复/升级/回滚场景。缺点是您的临时数据不会在构建时通过 MSI 验证进行筛选。
    • 请参阅:blog.iswix.com/2008/07/dynamic-windows-installer-ui.html 在您的场景中,我将跳过 ODBC 表并使用注册表表。 ODBC 并没有那么难……MSI 的 ODBC 支持实际上只是注册表数据的抽象。
    • 这不是 InstallShield 的真正功能,它是 Windows Installer 基础表架构数据类型的功能。文本类型是静态的,格式化类型可以使用属性进行格式化。请参阅msdn.microsoft.com/en-us/library/aa371168(v=vs.85).aspxmsdn.microsoft.com/en-us/library/aa370546(v=vs.85).aspx 并查看 RegKey、Text 和 Formated 的数据类型定义。
    • 这就是我在之前的评论中想要告诉你的。请参阅:msdn.microsoft.com/en-us/library/aa367797(v=vs.85).aspx "•为了保持每个实例的非文件数据隔离,基本包应将非文件数据收集到每个实例的组件集中。然后应根据依赖于实例标识符的条件语句安装适当的组件。 "
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-10
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    • 1970-01-01
    相关资源
    最近更新 更多