如何使用对话框在Installshield 2015

时间:2017-02-01 10:27:41

标签: installshield installshield-2015

我目前正在尝试扩展我们的安装程序,并为用户指定在开始菜单下创建快捷方式的程序组的名称。 (我知道这是一个有点过时的概念)

我正在使用InstallShield 2015。

我创建了一个名为[PROGRAMGROUP_NAME]的可本地化属性。这已自动创建了{ID_STRING46},我已将其设置为所需的默认值。到现在为止还挺好。 我设法创建了一个带有编辑控件的自定义对话框,该对话框链接到上面的属性。

现在出现了棘手的部分:在快捷方式下,在"程序菜单"我首先要添加一个包含程序组名称的文件夹,在该文件夹下放置几个快捷方式。 如果我输入的是[PROGRAMGROUP_NAME]字面上的名称。如果我使用{ID_STRING46},它会使用默认值,而不是我在对话框中输入的内容。

顺便说一下,当我尝试将ID_STRING46重命名为更有意义的东西时,其他事情就开始出错了,所以我已经按原样离开了。

这里出了什么问题?如何获取用于文件夹名称的属性值?

修改

我正在尝试使用自定义操作,但我无法定义它。设置属性的我的对话框是在CostFinalize之后,所以我假设我必须使用SetDirectory - 但我无法定义它。我收到一条错误说明"无法访问网络位置"

修改

我设法迈出了一步。我已经手动添加了一个目录,其中包含密钥DIRECTORY_PROGRAM_GROUP(重要的是它的所有上限以使其公开)到目录表。然后,在我运行对话框后,我使用自定义操作将该目录设置为所需的值[ProgramMenuFolder] [PROGRAM_GROUP_NAME],并且我已修改了要在该文件夹中创建的快捷方式。

似乎工作得很好,但现在卸载时不再删除程序组...

1 个答案:

答案 0 :(得分:0)

快捷方式已安装到文件夹,ProgramMenuFolder下面的文件夹名称将成为您描述的程序组。所以你需要建立Directory table(要么直接---请注意DefaultDir列是可本地化的,并且可能已经存在可以更新的字符串---或者通过“文件和文件夹”视图)做你想做的事情,或者使用自定义动作(设置属性,如果在成本计算之前;设置目录,如果在计算成本之后)来调整快捷方式的安装位置。

对于重命名ID_STRING46的问题,在更改字符串名称后,您没有更新引用的可能性。追踪这些内容的最简单方法可能是检查构建的安装程序中的差异(可能使用InstallShield的MSI Diff),然后使用直接编辑器更新相关引用,如果您无法在正常观点。