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

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


;问题:
;我想自动为 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-->

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

[Setup]
AppName=我的程序
AppVerName=我的程序 版本 1.5
DefaultDirName={pf}\我的程序
DefaultGroupName=我的程序

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

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

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


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

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


[Code]
// Code added by gnatix
var
FirefoxInstallDir: string;

function getAFolder(default: String): String;
begin
if FirefoxInstallDir <> '' then            // if found
Result := FirefoxInstallDir
else
Result := ExpandConstant('{app}');       // if not found
end;

function GetInstalledVersion(): String;
var
InstalledVersion: String;
begin
InstalledVersion :='';
RegQueryStringValue(HKLM, 'Software\BlueStacks', 'Version', InstalledVersion);
Result := InstalledVersion;
end;

function InitializeSetup(): Boolean;
var
PrevVer: String;
S: String;
begin
PrevVer := GetInstalledVersion();
result := true;
if length(PrevVer) > 0 then begin

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

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

//procedure InitializeWizard();
//;var ;
//;SubKeyNames: TArrayOfString;
//i: Integer;
//begin
//FirefoxInstallDir:= '';
//if RegGetSubkeyNames(HKEY_CURRENT_USER, 'Software\Mozilla\Firefox', SubKeyNames) then
//for i := 0 to GetArrayLength(SubKeyNames)-1 do
   //RegQueryStringValue(HKEY_CURRENT_USER, 'Software\Mozilla\Firefox\' + SubKeyNames[i] +'\Main', 'Install Directory', FirefoxInstallDir);
//end;
 

转载于:https://www.cnblogs.com/xjyggd/p/4038697.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值