0

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

我正在使用 InstallShield 2015。

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

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

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

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

编辑

我现在正在尝试使用自定义操作,但我无法定义它。我设置属性的对话框在 CostFinalize 之后,所以我假设我必须使用 SetDirectory - 但我在定义它时遇到了麻烦。我收到一条错误消息,指出“无法访问网络位置”

编辑

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

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

4

1 回答 1

0

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

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

于 2017-02-01T13:21:09.530 回答