gpt4 book ai didi

installshield - 如何在 InstallShield 中制作自定义对话框?

转载 作者:行者123 更新时间:2023-12-04 07:29:14 27 4
gpt4 key购买 nike

我正在尝试即时理解 InstallShield (2009)/InstallScript,因为我正在修改其他人的安装脚本。

安装过程中的一个对话框以前有一个文本框,要求一个 SQL Server 实例,假定某个数据库名称。现在我刚刚完成了一项增强功能,使您可以选择任何数据库名称,而不仅仅是默认名称,我需要向该对话框添加一个字段,以便用户可以输入所选的数据库名称。猴子看,猴子做,只需创建一个新控件并复制和调整表单为第一个文本框提供的任何功能 - 很简单,对吧?

嗯...这里有问题。似乎“SdShowDlgEdit1”表单是随 InstallShield 一起提供的通用内容,并且在所有需要一个文本框的对话框中都被使用。改变那个形式,它在任何地方都会改变它被称为...所以现在我有一个虚假的第二个文本框出现在我的安装中,之前有一个文本框。

糟糕。撤消更改,并更改对“SdShowDlgEdit2”的引用,这是 - 您猜对了 - InstallShield 的标准格式,用于需要 2 个文本框的对话框。现在那就太好了……除了之前的开发人员在我之前到达那里并在该表单中添加了一个“浏览”按钮,用于他需要第二个文本框包含文件夹路径的地方。我不想要那个“浏览”按钮,我也不能删除它。

所以我想,为什么我不创建自己的自定义表单,而不是让别人受制于人呢?所以我克隆表单,将新实例重命名为“EnterDbDetails”,删除“浏览”按钮并使表单看起来恰到好处。

然后我返回到 InstallScript 以重定向到“EnterDbDetails”并发现 EzDefineDialog 函数要求我传入表单的“资源 ID”。现在又是什么……12018……太棒了……填写所有必要的细节,编译、构建,然后试一试。看起来很可爱,所有正确的默认值都填入了两个文本框 - 但是,嘿!为什么浏览按钮在那里?为什么标签上的文字不是我设置的?

返回 InstallScript,检查资源 ID - 结果原来“SdShowDlgEdit2”的资源 ID 也为 12018。嗯,这解释得很好。愚蠢的是,InstallShield 允许您拥有两个具有相同 ID 的表单,但是无论如何......所以让我们回到我的“EnterDbDetails”表单并更改 ID......

enter image description here

...但是资源标识符属性是只读的! WTF?

所以现在我不能使用任何标准表单,也不能使用自定义表单,因为它不允许我更改资源 ID。

我被难住了。谁能解释一下你应该如何做这样的事情,这真的应该是世界上最简单的事情?

最佳答案

Creating New Custom Dialogs in InstallScript and InstallScript MSI Projects


引自网站(2015 年版):

要创建自定义对话框,您需要执行以下一般步骤:

  1. 使用新建对话框向导将新的自定义对话框添加到您的项目中。有关详细信息,请参阅使用新建对话框向导将新的自定义对话框添加到 InstallScript 或 InstallScript MSI 项目。
  2. 向对话框添加控件。有关详细信息,请参阅将控件添加到 InstallScript 或 InstallScript MSI 项目中的对话框。
  3. 创建一个脚本函数,将对话框加载到内存中,将其显示在屏幕上,处理最终用户与对话框控件的交互,并在用户完成后关闭对话框。有关详细信息,请参阅使用 InstallScript 实现自定义对话框。

关于installshield - 如何在 InstallShield 中制作自定义对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9517412/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com