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;
;问题:
;我想自动为 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;
相关文章推荐
- INNO SETUP 读取可变注册表路径的问题
- Struts学习 之 XML文件读取路径问题
- 文件下载 FileInputStream不能读取中文路径的问题
- C#读取注册表的权限问题
- Spring 读取配置文件 及路径问题
- c语言中,文件路径读取问题
- Java或者JAR包获取读取资源文件的路径的问题总结
- Java或者JAR包获取读取资源文件的路径的问题总结
- ActionScript读取XML的路径问题
- java读取图片时的路径问题
- HDFS 读取、写入、遍历目录获取文件全路径、append文件创建或者写入报错问题分析
- Maven项目读取resources下文件的路径问题(getClassLoader的作用)
- 关于系统读取properties配置文件的路径问题,包括打成jar包的运行文件
- jsp中flash读取xml路径问题
- jar包读取file的时候相对和绝对路径的问题
- NT服务程序中对注册表中HKey_Current_User读取的问题
- JavaWeb中读取文件资源的路径问题
- java中jar包内的类访问jar包内部的资源文件路径和获得读取资源文件内容的问题
- JAVA读取文件操作时路径的斜杠问题
- Delphi 获取浏览器路径 注册表获取默认浏览器、注册表读取IE路径 拼接IE路径