如何在 Installshield 2015 中使用对话框定义程序组名称

How can I use a dialog to define the program group name in Installshield 2015

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

我正在使用 InstallShield 2015。

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

下面是棘手的部分:在快捷方式下,在"Programs Menu"下我首先要添加一个程序组名称的文件夹,在该文件夹下放置几个快捷方式。 如果我输入 [PROGRAMGROUP_NAME],这就是名称的字面意思。如果我使用 {ID_STRING46},它会使用默认值,而不是我在对话框中输入的值。

顺便说一句,当我尝试将 ID_STRING46 重命名为更有意义的名称时,其他事情开始出错,所以我保留原样。

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

编辑

我现在正在尝试使用自定义操作,但我无法定义它。我设置 属性 的对话框在 CostFinalize 之后,所以我假设我必须使用 SetDirectory - 但我在定义它时遇到了麻烦。我收到一条错误消息 "could not access network location "

编辑

我进步了一步。我已经手动添加了一个带有键 DIRECTORY_PROGRAM_GROUP 的目录(重要的是它全部大写才能使它成为 public)到目录 table。然后,我使用自定义操作将该目录设置为所需的值 [ProgramMenuFolder][PROGRAM_GROUP_NAME] 在我的对话框 运行 之后,我修改了要在该文件夹中创建的快捷方式.

似乎很好用,但是,现在卸载时不再删除程序组...

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

至于重命名 ID_STRING46 的问题,很可能是您在更改字符串名称后没有更新引用。追踪这些位置的最简单方法可能是检查内置安装程序中的差异(可能使用 InstallShield 的 MSI Diff),然后如果在普通视图中找不到它们,则使用直接编辑器更新相关参考。