Inno setup 在使用Inno安装程序卸载期间,如何取消固定两个同名程序(不同版本)的图标?

Inno setup 在使用Inno安装程序卸载期间,如何取消固定两个同名程序(不同版本)的图标?,inno-setup,uninstallation,Inno Setup,Uninstallation,我有一个安装程序,它安装了两套同名的应用程序,但版本不同。这些应用程序必须固定在任务栏和“开始”菜单上 安装没有问题。问题是当我尝试卸载时。如果只安装了其中一个版本,则卸载将顺利进行,并且图标将从任务栏和“开始”菜单中删除。但是,如果两个版本都已安装,则会卸载第一个版本,而第二个版本会出现异常。我想这与两个同名的应用程序有关 这是TLama在这里帮助我解开图标的代码 我知道我还没有包含TLama的完美代码。我仍在使用原始版本 oShell := CreateOleObject('Shell.Ap

我有一个安装程序,它安装了两套同名的应用程序,但版本不同。这些应用程序必须固定在任务栏和“开始”菜单上

安装没有问题。问题是当我尝试卸载时。如果只安装了其中一个版本,则卸载将顺利进行,并且图标将从任务栏和“开始”菜单中删除。但是,如果两个版本都已安装,则会卸载第一个版本,而第二个版本会出现异常。我想这与两个同名的应用程序有关

这是TLama在这里帮助我解开图标的代码

我知道我还没有包含TLama的完美代码。我仍在使用原始版本

oShell := CreateOleObject('Shell.Application');
objFolder := oShell.Namespace(ExpandConstant('{localappdata}\My_Path'));
objFolderItem := objFolder.ParseName('MyApp.exe');
colVerbs := objFolderItem.Verbs();
for i := 0 to colverbs.count() do
begin
   VerbName := lowercase(colverbs.item(i).name);
   StringChangeEx(VerbName,'&','',true);
   if (CompareText(Verbname, 'Pin to Start Menu') = 0) then
     colverbs.item(i).DoIt
   if (CompareText(Verbname, 'Pin to Taskbar') = 0) then
     colverbs.item(i).DoIt
end;
我在上得到一个零指针异常

colVerbs := objFolderItem.Verbs();
这里有什么建议吗?

假设您得到的变量为空,则无法调用。调用objFolderItem对象的Verbs方法的行出现异常,这意味着objFolderItem对象为NULL,这表明ParseName方法调用失败。换句话说,在该文件夹中找不到该文件


请注意,您只能对现有文件和文件夹使用这些功能,因此请确保在卸载它们之前调用这些功能。

是的,我理解。。。这个问题在我这边是个愚蠢的错误。谢谢