开始菜单文件夹作为子目录 - Inno Setup

5
我想在开始菜单中添加一个如下的程序快捷方式:
MyAppPublisher\MyAppName\MyAppName

我在我的脚本中有这样的代码:

DefaultGroupName={#MyAppPublisher}
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"

但是开始菜单文件夹始终如下:

MyAppName\MyAppName

任何想法?

1
你描述的行为很奇怪。你当前的脚本一定创建了 MyAppPublisher\MyAppName 而不是 MyAppName\MyAppName 的快捷方式。确保你正在运行正确的安装程序(例如,如果你打开了多个 InnoSetup IDE),并且在运行安装程序之前已经正确重新编译了脚本。 - TLama
3个回答

5
只需在 [Icons] 部分的条目的 Name 参数中指定此路径,即可轻松完成。您当前的脚本会创建一个像 MyAppPublisher\MyAppName 这样的快捷方式,而这个将会实现您所需要的功能:
#define MyAppName "MyAppName"
#define MyAppExeName "MyProg.exe"
#define MyAppPublisher "MyAppPublisher"

[Setup]
AppName={#MyAppName}
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName={#MyAppPublisher}
OutputDir=userdocs:Inno Setup Examples Output

[Files]
Source: "{#MyAppExeName}"; DestDir: "{app}"

[Icons]
; notice the full path to the created shortcut, {group} is taken from the Select
; Start Menu Folder page edit box (if shown), which is by default taken from the
; DefaultGroupName directive value; this start menu folder path is then followed
; by the tail of the shortcut path
Name: "{group}\{#MyAppName}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"

请注意,最佳实践是在默认情况下指定“完整”路径,然后像往常一样只使用{group}。这将允许用户将它们放在任何他们想要的组中。 - Deanna
这要取决于OP实际希望允许用户选择什么。如果只是开始菜单文件夹(其他部分保持不变为{#MyAppName}),那么这是正确的方式。[对你的替代方案点个赞] - TLama
请注意,强制实施这样的子文件夹结构会使一些用户感到烦恼。正如Deanna所说,最佳实践是允许用户更改所有路径,并仅在其下安装简单的图标,而不是子文件夹。 - Miral

4
如果您想使群组位于子文件夹中,您需要指定子文件夹。
最佳方式是将其附加到DefaultGroupName指令的末尾,这样在安装向导中会显示正确的信息,并允许用户更改为单个文件夹或其他位置(如果他们愿意)。
DefaultGroupName={#MyAppPublisher}\{#MyAppName}

请注意,在Windows 8中,开始菜单并非分层式的,因此任何嵌套都不会被显示。

4
在Windows 10中似乎是一样的,它完全忽略子文件夹。 - Jerry Dodge

0
找到了,我在问题中建议的脚本是正确的,由于某种原因,我需要为脚本生成一个新的 GUID 才能使更改生效。

不,这是不正确的。你问如何在 MyAppPublisher\MyAppName\MyAppName 中创建一个快捷方式,但是你的脚本中缺少最后的 \MyAppName - TLama
抱歉,你是正确的。尽管我仍然需要更改我的GUID才能让它发生,但原因有些奇怪。 - oggmonster
2
我认为,卸载你在测试期间安装的最后一个版本应该足够了。 - TLama
正如TLama所说,您需要在测试安装程序更改之前卸载它。默认情况下,Inno会记住上一次安装期间选择的路径,并默认使用这些路径,即使您更改了脚本。(这也是用户所期望的,所以这是一件好事。) - Miral

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接