Inno Setup 开始菜单卸载快捷方式未在 Windows 10 上显示

Posted

技术标签:

【中文标题】Inno Setup 开始菜单卸载快捷方式未在 Windows 10 上显示【英文标题】:Inno Setup Start menu uninstall shortcut is not shown on Windows 10 【发布时间】:2017-01-15 05:53:24 【问题描述】:

我遇到了一个似乎特定于 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 中都可以正常工作...

你对此有什么想法吗?我已经搜索过,但没有找到与此特定问题相关的任何主题。

【问题讨论】:

【参考方案1】:

Windows 8 和更新版本对 开始 菜单进行了大量优化,以减少显示的项目数量。

例如,它不会显示指向同一个目标的两个快捷方式,无论快捷方式有不同的标签或放置在不同的菜单文件夹中。

您可能是此类优化的受害者。

无论如何,您正在尝试做的是违反 Windows 准则:

您不应在 Windows 8 及更高版本中使用 开始 菜单文件夹。 您不应在任何版本的 Windows 上将卸载程序的快捷方式添加到 开始 菜单。用户应该去控制面板设置应用程序来卸载程序(这也是一个可能的解释,为什么没有显示快捷方式)。

【讨论】:

【参考方案2】:

我遇到了同样的问题。 在我的情况下,有时只有 Windows 开始菜单中的卸载快捷方式消失。

不知何故,我修复了它。

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

例如:

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

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

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

【讨论】:

可能是一个红鲱鱼,但我发现将卸载程序作为最后一个创建的图标似乎使它保持不变。奇怪的是,虽然它有时 - 并不总是 - 从开始菜单本身消失,但快捷方式图标仍然在程序文件夹中。 (尽管在技术上这不是处理 Windows 中程序卸载快捷方式的正确方法,但应充分尊重这一事实)【参考方案3】:

对小组和 INNO 来说都是新手。 :)

我想出了一个解决方法,在开始菜单中有一个卸载条目。

[Icons]

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

对 EXE 进行硬编码并不优雅,但它可以在 Win10 64-bit 中使用。我的更新计划是卸载 Access 前端,不理会后端,然后只重新安装前端。

(理论上...)

罗伯特 :)

【讨论】:

你能解释一下这如何回答这个问题吗?您的代码与 OP 中的代码有何不同?我看到的唯一区别是您使用#MyUninstallFilesDir\unins000.exe,而OP 使用uninstallexe。尽管无论如何他们都可能会解决相同的路径。 我也认为#MyUninstallFilesDir\unins000.exe 不应该与uninstallexe 有任何区别,但这里与我正在做的区别是Tasks: startmenu。所以我尝试在图标卸载行中添加Tasks: startmenu,但是当我编译时出现编译器错误Parameter "Tasks" includes an unknown task 好吧,OP 说“我遇到了一个似乎特定于 Windows 10 的问题,我在设置中创建了开始菜单卸载快捷方式。快捷方式根本没有显示。”我遇到了完全相同的问题,我的卸载 EXE 没有出现在开始菜单中。我将 uninstallexe 更改为 unins000.exe 并且它有效。 Win10似乎暂时通过寻找uninstallexe来限制它在开始菜单中对卸载程序的阻止,直到他们决定检查unins000.exe。 Ben,您必须添加一个匹配的 [TASKS] 条目:名称:startmenu;说明:“cm:CreateStartMenu” 天啊,不知道 5 分钟的编辑限制。也不知道如何在回复中换行,回复看起来很乱。 @BenDev,添加一个任务入口 [TASKS] Name: startmenu;说明:“cm:CreateStartMenu” Ben、TASKs 和 COMPONENTs 在设置 FILE、ICON 等条件时很有用。它们的作用类似于 IF 语句;当您想为标准安装安装文件 A 和为自定义安装安装文件 B 时非常有用。您使用两个 [FILE] 条目,具有不同的文件名和不同的 [COMPONENT] 值;只有具有正确组件值的组件才会被安装。相同的过程适用于 [TASK]。【参考方案4】:
Name: "group\cm:UninstallProgram,#MyAppName"; Filename: "uninstallexe"
Name: "group\cm:UninstallProgram,#MyAppName"; Filename: "uninstallexe

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

【讨论】:

您能否解释一下为什么这可以解决问题,或者您是否也只是发现它是一种解决方法? 重复答案。

以上是关于Inno Setup 开始菜单卸载快捷方式未在 Windows 10 上显示的主要内容,如果未能解决你的问题,请参考以下文章

Windows 7 上错误的桌面快捷方式图标(Inno Setup)

Inno setup打包程序,怎么实现默认勾选创建快捷方式?

inno setup 创建桌面快捷方式的代码

使用 inno setup 卸载默认图标

inno setup打包的安装文件更换位置后图标改变了

inno setup将 exe文件和.NETFramework如何一起打包