(Inno setup打包)检测系统是否已安装程序,若已安装则弹出卸载提示的代码

原文 http://bbs.itiankong.com/thread-30983-1-5.html

有6天没研究pascal代码了,昨天晚上突然来了灵感,终于解决了苦思冥想好几天没能解决的问题,
因此将代码贴出来供大家批评指正,用Inno Setup打包时用得上。

  1. function InitializeSetup():boolean;
  2. var
  3.   MykeynotExist:boolean;
  4.   ResultCode: Integer;
  5.   uicmd: String;
  6. begin
  7.   MykeynotExist:= true;
  8.   if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{49D79F54-D485-4011-83FE-FFC938F3DB86}_is1', 'UninstallString', uicmd) then
  9.   begin
  10.   MyKeynotExist:= false;
  11.   Exec(RemoveQuotes(uicmd), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
  12.   end;
  13.   Result:= MykeynotExist
  14. end;
复制代码


原理是探测HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
(也即是反映在“添加/删除程序”中的卸载项目)中的卸载项目,若检测到则启动卸载确认对话框。
在实际应用的时候,各位需要将我代码中“{49D79F54-D485-4011-83FE-FFC938F3DB86}”,
修改成自己脚本中的AppId。

你可能感兴趣的:(Inno Setup)