杉宫竹苑工作室

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

安装与卸载检测文件和安装前卸载老版本代码

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

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

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

x

  1. #define MyAppName "我的程序"
  2. #define MyAppVersion "2.0.1.1"
  3. #define MyAppPublisher "汉化新世纪"
  4. #define MyAppURL "[url=http://bbs.hanzify.org/]http://bbs.hanzify.org[/url]"
  5. #define MyAppExeName "OneKey.exe"
  6. [Setup]
  7. ; 注意: AppId 的值是唯一识别这个程序的标志。
  8. ; 不要在其他程序中使用相同的 AppId 值。
  9. ; (在编译器中点击菜单“工具 -> 产生 GUID”可以产生一个新的 GUID)
  10. AppId={{我的程序}
  11. AppName=我的程序
  12. AppVersion=1.5
  13. ;AppVerName=我的程序 1.5
  14. AppPublisher=我的公司
  15. AppPublisherURL=http://www.example.com/
  16. AppSupportURL=http://www.example.com/
  17. AppUpdatesURL=http://www.example.com/
  18. DefaultDirName={pf}\我的程序
  19. DefaultGroupName=我的程序
  20. OutputDir=E:\本地下载\inno编译目录
  21. OutputBaseFilename=setup
  22. Compression=lzma
  23. SolidCompression=yes
  24. [Languages]
  25. Name: "default"; MessagesFile: "compiler:Default.isl"
  26. [Tasks]
  27. Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
  28. [Files]
  29. Source: "E:\本地下载\inno编译目录\{app}\ISTask.dll"; DestDir: "{app}"; Flags: solidbreak
  30. Source: "E:\本地下载\inno编译目录\{app}\OneKey.exe"; DestDir: "{app}"; Flags: ignoreversion
  31. ; 注意: 不要在任何共享的系统文件使用 "Flags: ignoreversion"
  32. [Icons]
  33. Name: "{group}\我的程序"; Filename: "{app}\OneKey.exe"
  34. Name: "{group}\{cm:UninstallProgram,我的程序}"; Filename: "{uninstallexe}"
  35. Name: "{commondesktop}\我的程序"; Filename: "{app}\OneKey.exe"; Tasks: desktopicon
  36. [Run]
  37. Filename: "{app}\OneKey.exe"; Description: "{cm:LaunchProgram,我的程序}"; Flags: nowait postinstall skipifsilent
  38. [Code]
  39. function RunTask1(FileName: string; bFullpath: Boolean): Boolean;
  40.   external [email]'RunTask@files:ISTask.dll[/email] stdcall delayload';
  41. function KillTask1(ExeFileName: string): Integer;
  42.   external [email]'KillTask@files:ISTask.dll[/email] stdcall delayload';
  43. function RunTask(FileName: string; bFullpath: Boolean): Boolean;
  44.   external [email]'RunTask@{app}\ISTask.dll[/email] stdcall uninstallonly';
  45. function KillTask(ExeFileName: string): Integer;
  46.   external [email]'KillTask@{app}\ISTask.dll[/email] stdcall uninstallonly';
  47. function InitializeSetup(): Boolean;
  48. var
  49.   ResultStr: String;
  50.   ResultCode: Integer;
  51. begin
  52. Result:= true;
  53. if RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{我的程序}_is1','UninstallString', ResultStr) then
  54. //_is1 注册信息
  55.   begin
  56.   ResultStr := RemoveQuotes(ResultStr);
  57.   Exec(ResultStr, '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);
  58.   if RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{我的程序}_is1','UninstallString', ResultStr) then
  59.     begin
  60.     Result:= false;
  61.     Exit;
  62.     end;
  63.   end;
  64. if RunTask1('OneKey.exe', false) then
  65.   if MsgBox('安装程序检测到 OneKey.exe 正在运行!'#13''#13'单击“是”按钮关闭程序并继续安装!'#13''#13'单击“否”按钮则退出安装程序!',mbConfirmation, MB_OKCANCEL) = IDOK then
  66.     KillTask1('OneKey.exe')
  67.   else begin
  68.     Result :=false;
  69.     end;
  70. end;
  71. procedure CurUninstallStepChanged (CurUninstallStep: TUninstallStep);
  72. begin
  73. if CurUninstallStep = usUninstall then
  74.   begin
  75.   if RunTask('OneKey.exe', false) then
  76.     if MsgBox('卸载程序检测到 OneKey.exe 正在运行!'#13''#13'单击“是”按钮关闭程序并进行卸载!'#13''#13'单击“否”按钮则退出安装程序!',mbConfirmation, MB_OKCANCEL) = IDOK then
  77.       KillTask('OneKey.exe')
  78.     else
  79.       Abort;
  80.   UnloadDll(ExpandConstant('{app}\ISTask.dll'));
  81.   end;
  82. end;
复制代码


回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 14:48 , Processed in 0.114023 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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