杉宫竹苑工作室

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2416|回复: 0

怎么用脚本创建一个卸载快捷方式,如何“完美卸载”

[复制链接]
发表于 2017-6-3 09:28:36 | 显示全部楼层 |阅读模式

正式会员享受无限制浏览网站功能和高速网盘下载,赶快加入本站吧!

您需要 登录 才可以下载或查看,没有账号?立即注册

x
IS自带的建立卸载快捷方式(Project A Assistant -> Application Shortcuts -> Create an uninstallation shortcut)是有问题的,会出现卸载不完全的现象。解决方法是写脚本:
Install Script -> After More Data -> OnFirstUIAfter 中添加:

  1. STRING szFile;
  2. NUMBER nResult;

  3. szFile = UNINSTALL_STRING + “/UNINSTALL”;
  4. nResult = StrFind(szFile,”.exe”);

  5. if(nResult >= 0) then
  6. StrSub(szMsg1, szFile, 0, nResult + 4);
  7. StrSub(szMsg2, szFile, nResult + 4, 200);

  8. LongPathToQuote(szMsg1, FALSE);
  9. LongPathToQuote(szMsg2, FALSE);

  10. szFile = “\” + szMsg1 + “\” + szMsg2;
  11.         endif;
  12.   
  13.   AddFolderIcon(FOLDER_PROGRAMS ^ “AliProbe”, “Uninstall AliProbe”, szFile, WINDIR, WINDIR ^ “System32\\msiexec.exe”, 0, REPLACE);
  14.    
  15.   然后在OnMaintUIAfter()中添加:

  16.   // 删除开始所有程序中的AliProbe文件夹
  17.   DeleteProgramFolder(“AliProbe”);
  18.   
  19.   // 删除桌面上的快捷方式
  20.   STRING szItemName = “AliProbe”;
  21.   STRING szProgramFolder = FOLDER_DESKTOP;
  22.   DeleteFolderIcon(szProgramFolder, szItemName);
  23.   
  24.   // 删除安装目录文件夹
  25.   DeleteProgramFolder(TARGETDIR);
  26.   
  27. ? 向注册表写入安装路径

  28. prototype AliprobeReg(); //声明函数
  29. function AliprobeReg()   
  30. number nRootKey,nType,nSize;
  31. string szKey,szNumName,szNumValue,szClass;
  32. begin     
  33.   //修改注册表
  34.   nRootKey = HKEY_LOCAL_MACHINE;
  35.   RegDBSetDefaultRoot (nRootKey);     //置根为nRootKey
  36.   //注册子项
  37.   szKey="SOFTWARE\\Aliprobe\";
  38.   if RegDBKeyExist(szKey) < 0 then    //不存在“SOFTWARE\\Aliprobe”,创建这个项
  39.      RegDBCreateKeyEx(szKey,"");
  40.   endif;
  41.   //初始化每个键的公共值
  42.   nType=REGDB_STRING;
  43.   nSize=-1;
  44.   //注册安装路径
  45.   szNumName="PATH";
  46.   szNumValue=TARGETDIR;
  47.     RegDBSetKeyValueEx(szKey,szNumName,nType,szNumValue,nSize);
  48. end;

  49. 在OnInstallFilesActionAfter()中调用上面的函数。

复制代码


安装结束后启动进程和readme文件
在OnFirstUIAfter()中添加:
  1. szMsg1 = "AliProbe已经安装完成";
  2.     szMsg2 = "";
  3. bOpt1  = TRUE;
  4. bOpt2  = TRUE;
  5. szOption1 = "打开readme文件";
  6. // szOption2 = "启动Aliprobe";     
  7. szOption2 = "";
  8. nResult = SdFinish(szTitle, szMsg1, szMsg2, szOption1, szOption2, bOpt1, bOpt2);   

  9. if(bOpt1) then   
  10.      if(FindFile(TARGETDIR, "readme.txt", szFile) = 0) then
  11.       LaunchApp(WINDIR^"Notepad.exe", TARGETDIR^"readme.txt");
  12.      endif;
  13.     endif;
  14.    
  15.     if(bOpt2) then
  16.      if(FindFile(TARGETDIR, "AliProbe.exe", szFile) = 0) then
  17.       LaunchApp(TARGETDIR^"AliProbe.exe", "");
  18.      endif;      
  19.     endif;
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SgzyStudio

GMT+8, 2024-5-15 03:38 , Processed in 0.107946 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表