如何在InstallShield中创建自定义对话框?

时间:2012-03-01 13:52:41

标签: installshield installscript

我正在尝试动态了解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。

我很难过。任何人都可以解释你应该如何做这样的事情,这真的应该是世界上最简单的事情吗?

4 个答案:

答案 0 :(得分:4)

Creating New Custom Dialogs in InstallScript and InstallScript MSI Projects


来自网站的引用(2015年版):

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

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

答案 1 :(得分:1)

要创建新对话框: 打开“对话框”视图。 “对话框”视图位于“视图列表”的“用户界面”部分中。 右键单击“所有对话框”资源管理器,然后单击“新建对话框”。 “对话向导”将打开。单击“下一步”关闭“欢迎”面板。 在“对话框模板”面板中,单击“内部向导面板”,然后选中“允许我在用户界面序列中插入此对话框”复选框。 在“用户界面”面板中,在“用户界面序列”列表中选择“安装”。在对话框列表中,选择InstallWelcome。根据这些选择,InstallShield将在InstallWelcome对话框后立即按顺序插入新对话框。 在“对话框位置和条件”面板中,保留默认设置,然后单击“完成”。您的新对话框将显示在“对话框”列表中。 右键单击该对话框,然后选择“重命名”。重命名对话框WelcomeBitmap。 使用相同的技术,您可以在安装的用户界面中插入其他对话框。

在此步骤中,您将修改刚刚创建的WelcomeBitmap对话框: 首先,创建一个位图(使用类似Microsoft Paint的程序),测量300乘150。 打开“对话框”视图。 展开WelcomeBitmap对话框的节点。单击“英语(美国)”以打开“对话框编辑器”。 单击对话框顶部的“对话框粗体标题”文本框。在“文本”字段中,键入“欢迎位图”。这会更改对话框的主标题。 单击对话框顶部的“对话框正常说明”文本框。在“文本”字段中,键入“显示我的欢迎位图”。这会更改对话框的说明。 单击“对话框控件”工具栏上的“位图”按钮,然后使用光标在对话框上拖动一个框。将高度设置为150,将宽度设置为300。 在“文件”字段中,浏览到在步骤1中创建的位图文件。 重建项目(按F7)并运行它(按CTRL + F5)后,“欢迎位图”对话框将出现在“安装欢迎”对话框之后。

答案 2 :(得分:0)

您需要在“安装设计器”的“其他工具”部分的“直接编辑器”中的“对话”表中编辑ResourceID(为唯一的内容)。

答案 3 :(得分:0)

通过强制标准的InstallShield对话框,如sdWelcome,sdFinish和sdFinishReboot,您将能够使用对话框默认脚本API和已执行的自定义