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)