·汉化新世纪 ·汉化新世纪论坛 ·百家争鸣 ·论坛集萃 ·汉化问答 ·软件介绍
文章首页 >> 汉化教学 >> 系统教学 >> 跟我学汉化-INNO setup 制作补丁    Creative Commons License,创作共用协议(中文版)  署名 非商业性使用 禁止演绎

跟我学汉化-INNO setup 制作补丁

作者: raindy 来源:汉化新世纪 时间:2010-05-24 点击:19730

 

『补丁简介』
  汉化补丁,与软件安装包一样,都是汉化软件发布的形式,两者可以实现软件汉化的目的,但相较于安装包而言,汉化补丁则不涉及原程序的版权问题,且体积较小,便于传输。
  在 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 下载地址:http://www.zardssoftware.com/trial.zip  下载文件 下载示例文件

『操作步骤』
  1.通过注册表键值判断是否已经安装原版程序
  一般软件安装后,都会在注册表中添加相关键值,如本实例软件,安装原版后会添加如下键值:
  HKEY_LOCAL_MACHINE\SOFTWARE\Cleanse
  只需在[Code]段添加如下代码即可判断是否已安装原版程序,代码如下:
 


程序代码 程序代码

function ShouldSkipPage(PageID: Integer): Boolean;
begin
result := false;
if PageID = wpSelectDir then result := true;
end;
function InitializeSetup(): Boolean;
begin
  Result := true;
if not RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Cleanse') then
  begin
  MsgBox('未检测原英文版程序,请先行安装!'#13#13'软件汉化:张传伟 2009', mbInformation, MB_OK);
  Result := False;
end;
end;

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

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

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

  获取 Cleanse Uninstaller.exe 文件所在位置的上级目录,即安装路径可以用下面两种不同代码实现。
  第一种方式: INNO setup 的 [setup] 段代码设置为:
  
程序代码 程序代码
DefaultDirName={code:ExtractFilePath|{reg:HKLM\SOFTWARE\Cleanse,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 software\Cleanse Uninstaller Pro');
  if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Cleanse', 'Path', strPath) t\then
  begin
        strPath := ExtractFilePath(strPath);
  end;
  Result := strPath;
end;

  当注册表能直接找到安装路径时,可以用{pf}代替实际的安装路径,如:
  
  对应注册表值如下
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Reallusion\FaceFilter Studio\2.0]
.......
"Install Path"="C:\\Program Files\\Reallusion\\FaceFilter Studio 2"
.......

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


程序代码 程序代码

 

  DefaultDirName={reg:HKLM\SOFTWARE\Reallusion\FaceFilter Studio\2.0,Install Path|{pf}}

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

程序代码 程序代码
 
Source: "E:\Hanzify\SChinese.lan"; DestDir: "{app}\LangFiles"; Flags: ignoreversion


『参考补丁』   
  
下载文件 下载参考补丁
       

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

汉化新世纪 责任编辑: raindy .:|:. 标签(Tag): 跟我学汉化 INNO setup 制作补丁

·上一篇: 跟我学汉化-特殊汉化之.net 汉化 ·下一篇: 跟我学汉化-如何重封装微软 MSI 安装包

· 版权申明: 本文引自《汉化新世纪》,如有版权疑问请及时联系本站,以便本站处理。

· 转载申明: 本文引自《汉化新世纪》[ 作者: raindy],如需转载请直接联系原始作者,并请注明原始出处。

相关文章                                                                                发表评论 打印此文 关闭窗口

| 设为首页 | 加入收藏 | 联系我们 | 友情链接
Creative Commons License,创作共用协议(中文版)  署名 非商业性使用 禁止演绎
本站内容,除转载或版权特别申明的内容外,皆遵守 创造共用协议中文版之“署名-非商业性使用-禁止演绎 2.5 中国大陆”条款
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 2.5 China License.
本网站内容源自汉化新世纪论坛的摘录和汉化新世纪成员的原创文章。
凡汉化新世纪论坛的文字皆默认为汉化新世纪与原作者共同拥有并授权发布。
如对本站发布文章有所异议请来信告知,我们将及时删除。
凡商业摘录本站文字请先与我们联系,本站将保留非授权商业发布的追究权利。
凡非商业摘录本站文字请明显注明出处和原作者,并不得改动,凡改动必先征求原作者同意。
苏ICP备05002283号