替换桌面InnoSetup的相同快捷方式

6
在桌面上已经有一个与同名的快捷方式,但它是由setupfactory安装程序安装的(我想用inno替换它)。现在,当我使用innosetup创建的安装程序进行安装时,它会创建一个新图标,而不是替换当前的图标。我添加了[installDelete]部分,但没有效果。我刚刚检查了快捷方式属性。我发现的差异是一个快捷方式的所有者是管理员组,另一个则是我的用户。但是都是由同一用户安装的。这可能是原因吗?是否有任何解决方法?还是我可以检查是否存在同名的快捷方式?谢谢。
两个快捷方式都指向相同路径中的相同exe文件。 我正在安装Windows 7系统。

1
不仅所有权将是不同的路径。请检查这些快捷方式的路径并将它们包含在您的问题中。 - TLama
你可能在 Users\YOUR_PROFILE\Desktop 中有一个快捷方式,它会被称为 {userdesktop},另外一个在 Users\Public\Desktop 中,它会被称为 {commondesktop} - RobeN
1
抱歉,我指的是快捷方式的路径,而不是其目标路径。我的意思是这个条目(抱歉,由于我的计算机供应商强制安装了捷克语Windows系统,所以只能提供捷克语界面)。 - TLama
没错,那就是问题所在。非常感谢 RobeN 和 TLama,我没注意到这个。 - sjd
不用谢!@RobeN,答案现在归您了;-) - TLama
2个回答

6
在这种情况下,您应该检查两个快捷方式的位置。
可能其中一个是在公共桌面文件夹(适用于所有用户)- {commondesktop} 中创建的,而第二个则是针对当前用户桌面文件夹进行个性化设置的 - {userdesktop}
A.
[Icons]
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; 
WorkingDir: "{app}"; Tasks: desktopicon

B.

[Icons]
Name: "{userdesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; 
WorkingDir: "{app}"; Tasks: desktopicon

是的,那就是问题所在。现在我已经让它同时使用用户桌面了。再次感谢。 - sjd
@user1616785,你也可以像我几分钟前在这篇文章上所做的那样upvote答案。;-) - TLama
请注意,您安装的 {userdesktop} 可能与运行设置的用户的桌面不同。如果它必须从 LUA 提升到管理员,则用户将不同。 - Deanna
好的,我明白了。谢谢这个建议。不过由于现有的安装仅针对当前用户进行,所以现在这样也是可以的。 - sjd

1
当你在不同的安装框架之间切换时,通常最好先卸载旧版本(通过其卸载程序)再安装新版本。(您可以自动化此过程。)
如果不这样做,那么用户可能会在其驱动器上留下杂散的卸载程序文件和多个“添加/删除程序”条目;这两者都很丑陋。
(这是一次性的事情--在从一个Inno或应用程序版本切换到另一个版本时,不需要卸载旧版本,只有在从非Inno到Inno或反向切换时才需要卸载。)

是的,通常我们这样做。但是我们也使用升级安装程序,其中不包括卸载程序。因此,第一个卸载程序将正常工作,因为升级安装程序仅安装了相同文件,只是最新版本而已。感谢您的提示。 - sjd
直到某个更新版本,您添加了一个额外的文件。(通常情况下,在使用Inno进行更新安装时,由于这个原因,您确实希望它创建卸载条目-- Inno默认会聪明地添加到现有的卸载日志和条目中,但是当然只有在最初的安装是用Inno完成的时才能正常工作。) 就个人而言,我仍然建议检测此情况并要求用户改用完整的安装程序。 我不确定SetupFactory如何,但我知道基于MSI的安装程序会对其他安装程序替换其文件感到烦恼。 - Miral

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