Inno Setup在Windows 10上安装后,开始菜单中的卸载快捷方式未显示

8

我遇到了一个问题,似乎是我在安装中创建的开始菜单卸载快捷方式在Windows 10系统上出现的特定问题。但是,其他我创建的快捷方式都显示正常...

这里是DefaultGroupName的值:

DefaultGroupName={#MyAppPublisher}\MyCompany\MySoftwareName

以下是我在[图标]部分中的快捷方式条目:

[Icons]

[Icons]
Name: "{group}\{#MyAppName} {#MyAppVersion}"; Filename: "{app}\MyExeName.exe"; WorkingDir: "{app}"
Name: "{commondesktop}\{#MyAppName} {#MyAppVersion}"; Filename: "{app}\MyExeName.exe"; WorkingDir: "{app}"; IconFilename: "{app}\MyExeName.exe"
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName} {#MyAppVersion}"; Filename: "{app}\MyExeName.exe"; WorkingDir: "{app}"; Tasks: quicklaunchicon
Name: "{group}\{cm:UninstallProgram, {#MyAppName} {#MyAppVersion}}"; Filename: "{uninstallexe}"; WorkingDir: "{app}"; IconFilename: "{app}\Remove.ico"
Name: "{group}\{cm:SHORTCUT_SAV}"; Filename: "{code:GetDataDir}"

我也尝试了一个简单的输入:

Name: "{group}\Uninstall My Program"; Filename: "{uninstallexe}"

但是快捷方式仍未显示。

请注意,在任何之前的Windows版本中都能正常工作...

你有任何想法吗?我已经搜索了,但没有找到与这个特定问题相关的主题。

4个回答

9

Windows 8及以上版本的操作系统对“开始”菜单进行了大量优化,以减少显示的项目数量。

例如,无论快捷方式是否具有不同的标签或位于不同的菜单文件夹中,它都不会显示指向相同目标的两个快捷方式。

你可能是这种优化的受害者。

无论如何,你正在尝试违反Windows的指南:

  • 在Windows 8及以上版本中,不应使用“开始”菜单文件夹。
  • 不应将卸载程序的快捷方式添加到“开始”菜单中,在任何版本的Windows上都是如此。用户应该前往“控制面板”或“设置”应用程序来卸载程序(这也是为什么快捷方式未显示的可能原因之一)。

0

我有相同的问题。 在我的情况下,有时候仅在Windows开始菜单中卸载快捷方式会消失。

不知何故,我解决了它。

只需在图标部分使用两次创建此快捷方式的命令。它们的名称需要不同。

例如:

Name: "{group}\{#Uninstall_Name} {#MyAppName}"; Filename: "{uninstallexe}";IconFilename: {app}\{#IconFileStartDesktop};

Name: "{group}\{#MyAppName} {#Uninstall_Name}"; Filename: "{uninstallexe}" ;IconFilename: {app}\{#IconFileStartDesktop};

如果第一个卸载快捷方式没有出现,第二个就会出现。

可能是一个转移注意力的手段,但我发现将卸载程序作为最后一个创建的图标似乎可以让它保持原样。不过,奇怪的是,有时候(不总是)它会从开始菜单本身消失,但快捷方式图标仍在程序文件夹中。(尽管这并不是在Windows中处理程序卸载快捷方式的技术上正确的方法,但请恕我直言) - Steve

-1

初次加入组和INNO. :)

我找到了一种解决方法,可以在“开始菜单”中有一个“卸载”选项。

[Icons]

Name: "{group}\{cm:UninstallProgram,{#MyAppNameShort}}"; Filename: "{#MyUninstallFilesDir}\unins000.exe"; Tasks: startmenu

硬编码EXE并不优雅,但在Win10 64位上可以工作。我的更新计划是卸载Access前端,保留后端,然后重新安装前端。

(理论上...)

罗伯特 :)


你能解释一下这个回答是如何回答这个问题的吗?你的代码与 OP 中的代码有什么不同?我唯一看到的区别是你使用了 {#MyUninstallFilesDir}\unins000.exe,而 OP 使用了 {uninstallexe}。虽然它们两个可能最终都会解析为相同的路径。 - Martin Prikryl
我也认为{#MyUninstallFilesDir}\unins000.exe{uninstallexe}没有任何区别,但是我在这里所做的不同之处在于Tasks: startmenu。因此,我尝试在卸载图标行中添加Tasks: startmenu,但是当我编译时,我会得到编译器错误Parameter "Tasks" includes an unknown task - BenDev
好的,OP说:“我在Windows 10上遇到了一个问题,就是我在安装程序中创建的开始菜单卸载快捷方式似乎只针对Windows 10有问题。这个快捷方式根本没有显示出来。”我也遇到了完全相同的问题,我的卸载EXE文件没有出现在“开始”菜单中。我将{uninstallexe}更改为unins000.exe,然后它就可以工作了。Win10似乎通过查找{uninstallexe}来限制其阻止“开始”菜单中的卸载程序,暂时还没有检查unins000.exe。Ben,你必须添加一个匹配的[TASKS]条目: 名称:startmenu;描述:“{cm:CreateStartMenu}” - Robert H
天啊,不知道编辑有5分钟限制。也不知道如何在回复中换行,回复看起来一团糟。@BenDev,请添加一个任务条目[TASKS] 名称:startmenu;描述:“{cm:CreateStartMenu}”。 - Robert H
Ben,TASK和COMPONENT在设置FILE、ICON等条件时非常有用。它们的作用类似于IF语句;当您想要为标准安装安装FILE A,而为自定义安装安装FILE B时,它们非常有用。您可以使用两个[FILE]条目,具有不同的文件名和不同的[COMPONENT]值;只有具有正确组件值的那个才会被安装。同样的过程也适用于[TASK]。 - Robert H
显示剩余2条评论

-1
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}

只需将命令插入两次..完成:)


2
你能解释一下这为什么能解决问题,还是你也只是找到了一个变通方法? - csabinho
重复的答案。 - Bill_Stewart

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