您的位置:首页 > 其它

InstallShield 12 Premier卸载程序快捷方式

2014-11-05 14:34 369 查看
本文主要是针对艾泽拉斯之海洋女神出品(四) --高级设置二 中的【完美卸载】,做出自己的看法,不针对任何人。

程序即将发布,但面临打包问题。花了两天时间,在网上找资料及学习InstallShield。主要学习资料来源于海洋女神博客。最终将InstallShield 12 Premier 搭建好。马上动手实践,期待见证时刻。

亲身下河知深浅!因为有做程序的功底,再结合网上的资料,前段进展很是乐观。但是,快要结束时困难来了。卸载程序!卸载快捷方式!

看了海洋女神的博客---完美卸载 一节,自己动手实践。卸载程度时还是不行!以为是代码错误,继续检查,编译,DEBUG....还是不行!关键问题在于:

AddFolderIcon ( szProgramFolder, szItemName, szCommandLine, szWorkingDir, szIconPath, nIcon, szShortCutKey, nFlag );

此函数中的 szCommandLine参数!

出自海洋女神博客代码:

function OnFirstUIAfter()

STRING szfilename,szFolder ,szmsg1,szmsg2;

NUMBER nresult;

begin

//创建删除快捷方式

szfilename = UNINSTALL_STRING +" /UNINSTALL";

nresult = StrFind(szfilename,".exe");

if nresult >=0 then

StrSub(szmsg1,szfilename,0,nresult + 4);

StrSub(szmsg2,szfilename,nresult + 4,200);

LongPathToQuote(szmsg1, FALSE );

LongPathToQuote(szmsg2, FALSE );

szfilename = "/"" + szmsg1 + "/"" +szmsg2;

endif;

AddFolderIcon(FOLDER_PROGRAMS^"Test","Uninstall",szfilename,WINDIR,"",0,"",REPLACE);

End;

我们来看给AddFolderIcon函数中的szCommandLine参数,所传的值为:szfilename,而szfilename =

UNINSTALL_STRING +" /UNINSTALL";

经过查找帮助文档中对UNINSTALL_STRING的解释,这样赋值没问题;但后来联想到命令行语句,随手就查了在InstalShield中的Setup.exe命令行的解释说明,卸载参数为:/uninst。所以就想到既然UNINSTALL_STRING有预定义,那么卸载程序命令也应该有预定义,要不然InstallSheild默认自带的卸载是如何执行的;所以就在帮助文档中,查找:UNINST开头的,想不到真有。于是调试程序,取出UNINST的值与szfilename
= UNINSTALL_STRING +" /UNINSTALL";对比之,顿时拨云见日。原来szfilename =
UNINSTALL_STRING +" /UNINSTALL"; 赋值时出现问题。问题找到,解决不用2分钟。

经过在Win7
+ InstallShield 12 调试的代码应该为:

szFileName
= UNINSTALL_STRING + " -UNINSTALL";

nResult = StrFind(szFileName,".exe");

if nResult >= 0 then

StrSub(szMsg1, szFileName, 0, nResult + 4);

StrSub(szMsg2, szFileName, nResult + 4,200);

LongPathToQuote(szMsg1, FALSE);

LongPathToQuote(szMsg2, FALSE);

szFileName = "\"" + szMsg1 + "\"" + szMsg2;

endif;

AddFolderIcon(FOLDER_PROGRAMS^"Test","Uninstall",szfilename,WINDIR,"",0,"",REPLACE);

在此感谢海洋女神,感谢CSDN......
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: