杉宫竹苑工作室

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

INNO 读取可变注册表路径的问题

[复制链接]
发表于 2017-1-8 16:39:25 | 显示全部楼层 |阅读模式

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

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

x
;问题:
;我想自动为 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 下的内容呢?

  1. ;答案:
  2. ;请参考以下示例。

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

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

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

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


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

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


  29. [Code]
  30. // Code added by gnatix
  31. var
  32. FirefoxInstallDir: string;

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

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

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

  56. S := CustomMessage('ProgramFailed');
  57. StringChange(S, '%1', PrevVer);

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

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


回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-16 09:00 , Processed in 0.128667 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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