您的位置:首页 > 其它

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

2018-01-19 18:51 295 查看
;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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: