INNO setup 制作补丁图文教程
INNO setup 制作补丁图文教程
发布时间:2017-01-04 来源:查字典编辑
摘要:『补丁简介』汉化补丁,与软件安装包一样,都是汉化软件发布的形式,两者可以实现软件汉化的目的,但相较于安装包而言,汉化补丁则不涉及原程序的版权...

『补丁简介』

汉化补丁,与软件安装包一样,都是汉化软件发布的形式,两者可以实现软件汉化的目的,但相较于安装包而言,汉化补丁则不涉及原程序的版权问题,且体积较小,便于传输。

在 INNO setup 中,制作真正补丁可以调用 NSIS 中的补丁插件-VPatch 插件,详见陈维信的 Blog 《INNO 补丁制作技术, 打开 INNO 补丁制作方法的第一页》,链接地址为:http://restools.hanzify.org/article.asp?id=45

这里介绍一种与前文不同的 INNO setup 补丁制作方法。该方法所编译生成的补丁,不含真正意义上的补丁数据(即:汉化文件与未汉化文件比较生成的差异文件),仅仅是执行了文件替换或文件复制操作,故而不算严格意义上的补丁。但该方法简单易行,非常适用于非大型软件(包括多语言文件补丁),其主要思路如下:

1)通过注册表键值判断是否已经安装原版程序;

2)通过读取注册表键值判断原版的安装路径;

3)将已汉化文件替换同名的未汉化文件或复制文件到指定目录。

『学习任务』

汉化目标:用 INNO setup 制作 Cleanse Uninstaller Pro 6 的汉化补丁(示例文件为简体中文语言文件)

原版 Cleanse Uninstaller Pro 6

『操作步骤』

1.通过注册表键值判断是否已经安装原版程序。

一般软件安装后,都会在注册表中添加相关键值,如本实例软件,安装原版后会添加如下键值:

HKEY_LOCAL_MACHINESOFTWARECleanse

只需在[Code]段添加如下代码即可判断是否已安装原版程序,代码如下:

C/C++ Code复制内容到剪贴板 functionShouldSkipPage(PageID:Integer):Boolean; begin result:=false; ifPageID=wpSelectDirthenresult:=true; end; functionInitializeSetup():Boolean; begin Result:=true; ifnotRegKeyExists(HKEY_LOCAL_MACHINE,'SOFTWARECleanse')then begin MsgBox('未检测原英文版程序,请先行安装!'#13#13'软件汉化:张传伟2009',mbInformation,MB_OK); Result:=False; end; end;

存在相关键值,可以继续安装补丁:

INNO setup 制作补丁图文教程1

不存在相关键值,提示用户安装原版:

INNO setup 制作补丁图文教程2

2.搜索注册表获取安装路径

在“开始”菜单-“运行”中输入“regedit”,打开注册表编辑器,搜索“C:Program FilesZards softwareCleanse Uninstaller Pro”,由于注册表中搜索不到安装路径(如下图所示),只能搜索主程序以获取完整路径。

INNO setup 制作补丁图文教程3

获取 Cleanse Uninstaller.exe 文件所在位置的上级目录,即安装路径可以用下面两种不同代码实现。

第一种方式: INNO setup 的 [setup] 段代码设置为:

程序代码

DefaultDirName={code:ExtractFilePath|{reg:HKLMSOFTWARECleanse,Path}}

第二种方式:

(1)INNO setup 的 [setup] 段代码设置为:

程序代码

DefaultDirName={code:GetPath}

(2)INNO setup 的 [Code] 段添加如下代码设置:

程序代码

function GetPath(Param: String): String;

var

strPath: String;

begin

strPath := ExpandConstant('{pf}Zards softwareCleanse Uninstaller Pro');

if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARECleanse', 'Path', strPath) tthen

begin

strPath := ExtractFilePath(strPath);

end;

Result := strPath;

end;

当注册表能直接找到安装路径时,可以用{pf}代替实际的安装路径,如:

INNO setup 制作补丁图文教程4

对应注册表值如下

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESOFTWAREReallusionFaceFilter Studio2.0]

.......

"Install Path"="C:Program FilesReallusionFaceFilter Studio 2"

.......

此时,可以在 INNO setup 的 [setup] 段代码设置为

程序代码

DefaultDirName={reg:HKLMSOFTWAREReallusionFaceFilter Studio2.0,Install Path|{pf}}

3.将已汉化的 SChinese.lan 复制到软件安装路径的“LangFiles”子目录中,[File]段代码如下:

程序代码

Source: "E:HanzifySChinese.lan"; DestDir: "{app}LangFiles"; Flags: ignoreversion

作者:Raindy网站:www.raindy.org

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新其他软件工具学习
热门其他软件工具学习
软件教程子分类