我有一个安装程序,它使用相同的名称安装2组应用程序,但具有不同的版本。这些应用程序也必须固定在任务栏和开始菜单上。
安装没问题。问题是当我尝试卸载时。如果只安装了其中一个版本,则卸载顺利进行,并从任务栏和开始菜单中删除图标。但是,如果两者都已安装,则卸载第一个版本,第二个版本发出异常。我想这与两个具有相同名称的应用程序有关。
以下是解锁TLama帮助我的图标Unpin app from taskbar, startmenu using Inno Setup
的代码我知道我还没有包含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;
我在
处得到一个Nil指针异常colVerbs := objFolderItem.Verbs();
这里有什么建议吗?
答案 0 :(得分:0)
假设您有一个" Variant为null,则无法在调用Verbs
的{{1}}方法的行上调用。" 异常对象,表示objFolderItem
对象为objFolderItem
,表示NULL
方法调用失败。换句话说,在该文件夹中找不到该文件。
请注意,您只能将这些功能用于现有文件和文件夹,因此请确保在卸载之前调用它。