杉宫竹苑工作室

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

Inno Setup 读取可变注册表路径

[复制链接]
发表于 2016-8-28 19:19:57 | 显示全部楼层 |阅读模式

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

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

x
  1. ;问题:
  2. ;我想自动为 FireFox 安装上 Real 的 Mozilla 插件~但是它的路径存放在"HKEY_CURRENT_USER\Software\Mozilla\Mozilla Firefox\1.5 (zh-CN)\Main" Install Directory 下~中间的 1.5 (zh-CN) 会随版本和语言不同而变化怎么样才能忽略中间的 1.5 (Zh-cn) 直接读取下级子键 Main 下的内容呢?<!--QuoteEnd--><!--QuoteEEnd-->

  3. ;答案:
  4. ;请参考以下示例。

  5. [Setup]
  6. AppName=我的程序
  7. AppVerName=我的程序 版本 1.5
  8. DefaultDirName={pf}\我的程序
  9. DefaultGroupName=我的程序

  10. [Files]
  11. ;Source: MyProg.exe; DestDir: {app}
  12. ;Source: MyProg.hlp; DestDir: {code:getAFolder}
  13. ;Source: Readme.txt; DestDir: {app}

  14. [Languages]
  15. Name: en; MessagesFile: "compiler:Default.isl"
  16. Name: nl; MessagesFile: "compiler:Languages\Dutch.isl"
  17. Name: de; MessagesFile: "compiler:Languages\German.isl"

  18. [CustomMessages]
  19. en.MyDescription=My description
  20. en.MyAppName=My Program
  21. en.MyAppVerName=My Program %1
  22. en.ProgramFailed=本程序的%1版本已经安装,请卸载后再安装本程序. 安装程序将关闭.


  23. nl.MyDescription=Mijn omschrijving
  24. nl.MyAppName=Mijn programma
  25. nl.MyAppVerName=Mijn programma %1
  26. nl.ProgramFailed=本程序的%1版本已经安装,请卸载后再安装本程序. 安装程序将关闭.

  27. de.MyAppName=Meine Anwendung
  28. de.MyDescription=Meine Beschreibung
  29. de.MyAppVerName=Meine Anwendung %1
  30. de.ProgramFailed=本程序的%1版本已经安装,请卸载后再安装本程序. 安装程序将关闭.


  31. [Code]
  32. // Code added by gnatix
  33. var
  34. FirefoxInstallDir: string;

  35. function getAFolder(default: String): String;
  36. begin
  37. if FirefoxInstallDir <> '' then            // if found
  38. Result := FirefoxInstallDir
  39. else
  40. Result := ExpandConstant('{app}');       // if not found
  41. end;

  42. function GetInstalledVersion(): String;
  43. var
  44. InstalledVersion: String;
  45. begin
  46. InstalledVersion :='';
  47. RegQueryStringValue(HKLM, 'Software\BlueStacks', 'Version', InstalledVersion);
  48. Result := InstalledVersion;
  49. end;

  50. function InitializeSetup(): Boolean;
  51. var
  52. PrevVer: String;
  53. S: String;
  54. begin
  55. PrevVer := GetInstalledVersion();
  56. result := true;
  57. if length(PrevVer) > 0 then begin

  58. S := CustomMessage('ProgramFailed');
  59. StringChange(S, '%1', PrevVer);

  60. //如果发现程序已经安装过了
  61. MsgBox (S, mbError, MB_OK);
  62. result := false;
  63. end;
  64. end;

  65. //procedure InitializeWizard();
  66. //;var ;
  67. //;SubKeyNames: TArrayOfString;
  68. //i: Integer;
  69. //begin
  70. //FirefoxInstallDir:= '';
  71. //if RegGetSubkeyNames(HKEY_CURRENT_USER, 'Software\Mozilla\Firefox', SubKeyNames) then
  72. //for i := 0 to GetArrayLength(SubKeyNames)-1 do
  73.    //RegQueryStringValue(HKEY_CURRENT_USER, 'Software\Mozilla\Firefox\' + SubKeyNames[i] +'\Main', 'Install Directory', FirefoxInstallDir);
  74. //end;
复制代码


回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-15 19:56 , Processed in 0.111020 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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