论坛风格切换切换到宽版
  • 1921阅读
  • 6回复

卸载时如何等老虎代码执行完后再运行某个批处理文件 [复制链接]

上一主题 下一主题
离线solan
 

发帖
77
金钱
770
威望
77
只看楼主 倒序阅读 0 发表于: 2015-11-06
如题,我想让老虎版主的代码执行后再执行bat文件,code段怎么写
  1. [code]
  2. {此处套用老虎版主卸载父键和子健的Code代码(用下面的代码不但可以删除该所指键下面所有的子键,同时也可以删除
  3. 它上面所有的父键。而且该代码仅删除空白父键,也就是说如果父键中包含其它应用程序创建的内容,那么将不被删除)}
  4. procedure TotalDeleteRegKey(rKey: integer; sKey: string; deletesubkeys: boolean);
  5. var
  6.   s: string;
  7. begin
  8.   s := sKey;
  9.   if deletesubkeys then
  10.     RegDeleteKeyIncludingSubkeys(rKey, sKey)
  11.   else
  12.     RegDeleteKeyIfEmpty(rKey, sKey);
  13.   if Pos('\', s) <> 0 then
  14.     begin
  15.       while s[Length(s)] <> '\' do
  16.         Delete(s, Length(s), 1);
  17.       Delete(s, Length(s), 1);
  18.       TotalDeleteRegKey(rKey, s, false);
  19.     end;
  20. end;
  21. procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
  22. var
  23.   ErrorCode: Integer;
  24.   ResultCode: Integer;
  25. begin
  26.   if CurUninstallStep = usPostUninstall then
  27.     TotalDeleteRegKey(HKCU, ExpandConstant('Software\Unigraphics Solutions\NX\8.5'), true);
  28.    {------------------------以上为老虎版主的代码-——————————————}
  29.    begin
  30.      case CurUninstallStep of
  31.     usUninstall:
  32.       begin // 开始卸载
  33.       //Exec(ExpandConstant('{app}\NX 8.5\UGSLicensing\uninst000.bat'), '', ExpandConstant('{app}\NX 8.5\UGSLicensing'), SW_SHOWNORMAL, ewNoWait, ResultCode);
  34.       end;
  35.     usPostUninstall:
  36.       begin      // 卸载完成
  37.         // MsgBox('CurUninstallStepChanged:' #13#13 '卸载完成.', mbInformation, MB_OK);
  38.         // ...这里插入代码来执行post-uninstall任务...
  39.         ShellExec('open', 'http://blog.sina.com.cn/ttd2015', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode); //卸载后打开网页
  40.       end;
  41.     end;
  42.   end;
  43. end;
  44. //////////////////////////////////////////////////////////////
要求等卸载了HKCU\Software\Unigraphics Solutions\NX\8.5之后再运行uninst000.bat
自己试了好长时间也搞不定,请求老虎版主帮忙
离线solan

发帖
77
金钱
770
威望
77
只看该作者 1 发表于: 2015-11-06
  1. ;在卸载时删除键,但安装时不创建键
  2. Root: HKCU; Subkey: "Software\Unigraphics Solutions\NX\8.5"; Flags: dontcreatekey uninsdeletekey
  3. ;当程序卸载时,如果NX这个键的内部没有值或子键,则删除这个键(不知什么原因,uninsdeletekeyifempty不起作用,可以在Code段套用老虎版主的代码。先保留)
  4. Root: HKCU; Subkey: "Software\Unigraphics Solutions\NX"; Flags: uninsdeletekeyifempty

另外问一下,uninsdeletekeyifempty这个为什么不起作用了


离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 2 发表于: 2015-11-07
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
  ResultCode: Integer;
begin
  case CurUninstallStep of
    usUninstall:
      begin // 开始卸载
       TotalDeleteRegKey(HKCU, ExpandConstant('Software\Unigraphics Solutions\NX\8.5'), true);
       Exec(ExpandConstant('{app}\NX 8.5\UGSLicensing\uninst000.bat'), '', ExpandConstant('{app}\NX 8.5\UGSLicensing'), SW_SHOWNORMAL, ewNoWait, ResultCode);
      end;
    usPostUninstall:
      begin      // 卸载完成
        // MsgBox('CurUninstallStepChanged:' #13#13 '卸载完成.', mbInformation, MB_OK);
        // ...这里插入代码来执行post-uninstall任务...
        ShellExec('open', 'http://blog.sina.com.cn/ttd2015', '', '', SW_SHOWNORMAL, ewNoWait, ResultCode); //卸载后打开网页
      end;
  end;
end;
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 3 发表于: 2015-11-07
你怎么断定 uninsdeletekeyifempty 这个不起作用?你肯定卸载时该键里面没有内容了吗?
离线solan

发帖
77
金钱
770
威望
77
只看该作者 4 发表于: 2015-11-07
非常高兴,版主回复了。2楼的代码我去试试。
uninsdeletekeyifempty 不起作用,删不了NX键,卸载时NX键里面没有内容了,我是打开注册表并随时刷新观看的
离线solan

发帖
77
金钱
770
威望
77
只看该作者 5 发表于: 2015-11-09
版主大人,卸载后出现卸载完成对话框,我还没按确定,那个网页就打开了,能不能按确定后再打开网页呢?
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 6 发表于: 2015-11-10
    usDone:
      begin      // 卸载完成
        ShellExec('open', 'http://blog.sina.com.cn/ttd2015', '', '', SW_SHOWNORMAL, ewNoWait, ResultCode); //卸载后打开网页
      end;