INNO setup 制作补丁图文教程

所属分类: 软件教程 / 其他工具 阅读数: 827
收藏 0 赞 0 分享

『补丁简介』

  汉化补丁,与软件安装包一样,都是汉化软件发布的形式,两者可以实现软件汉化的目的,但相较于安装包而言,汉化补丁则不涉及原程序的版权问题,且体积较小,便于传输。
  在 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_MACHINE\SOFTWARE\Cleanse
  只需在[Code]段添加如下代码即可判断是否已安装原版程序,代码如下:

C/C++ Code复制内容到剪贴板
  1. function ShouldSkipPage(PageID: Integer): Boolean;   
  2. begin   
  3. result := false;   
  4. if PageID = wpSelectDir then result := true;   
  5. end;   
  6. function InitializeSetup(): Boolean;   
  7. begin   
  8.   Result := true;   
  9. if not RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Cleanse') then   
  10.   begin   
  11.   MsgBox('未检测原英文版程序,请先行安装!'#13#13'软件汉化:张传伟 2009', mbInformation, MB_OK);   
  12.   Result := False;   
  13. end;   
  14. 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

更多精彩内容其他人还在看

Axure RP 8怎么给下拉列表框添加多个值?

Axure RP 8怎么给下拉列表框添加多个值?Axure RP 8中想要制作一个下拉列表,有多个数值,该怎么制作呢?下面我们就来Axure给下拉列表框添加多行值的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

Axure RP 8怎么制作圆形不断变换透明度的效果?

Axure RP 8怎么制作圆形不断变换透明度的效果?Axure RP 8中想要绘制五个大小不同的圆形,中间的圆形可以控制周围圆形的与透明度,该怎么谁及呢?下面我们就来看看详细的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

蓝信沃卡是什么?联想蓝信沃卡资费详情介绍

中国联通占据市场效率非常之快,先后被腾讯大王卡和蚂蚁宝卡刷屏,而如今中国联通开启了全新的重大举措,与企业移动办公平台蓝信合作推出“蓝信沃卡”抢占企业用户市场。那么联通蓝信沃卡是什么?蓝信沃卡资费是怎么样的呢?本文将提供联想蓝信沃卡资费详情介绍
收藏 0 赞 0 分享

微信小程序可以分享到朋友圈吗 微信小程序支不支持分享朋友圈

微信小程序可以分享到朋友圈吗?很多朋友都在咨询微信小程序支不支持分享朋友圈,那么微信小程序可以分享到朋友圈吗,接下来小编给大家介绍究竟微信小程序支不支持分享朋友圈
收藏 0 赞 0 分享

Axure RP 8怎么利用按钮控制单选框和复选框?

Axure RP 8怎么利用按钮控制单选框和复选框?Axure中想要设计一个通过按钮来空值单选框和复选框的原型,该怎么制作呢?下面我们就来看看详细的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

Axure RP 8设怎么绘制拱桥倒影图?

Axure RP 8设怎么绘制拱桥倒影图?想要制作一个圆拱桥并且设置倒影相互映衬,该怎么绘制呢?下面我们就来看看详细的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

超牛卡是什么卡?电信超牛卡套餐资费详情介绍

中国联通和腾讯、支付宝联合相继推出了腾讯王卡和蚂蚁宝卡,这些优惠专属卡引起了移动和电信的高度重视,而最近发现电信推出的“超牛卡”,资费还是很划算的。那么超牛卡是什么卡?超牛卡有什么套餐资费?下面脚本之家的小编带来超牛卡套餐资费详情介绍,一起来了解下吧
收藏 0 赞 0 分享

Axure怎么设计网页的登陆页面?

Axure怎么设计网页的登陆页面?Axure中想要设计一个网页的登陆界面,输入用户名密码,该怎么设置呢?下面我们就来看看详细的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

微信小程序怎么申请注册 微信小程序官方注册图文流程

微信小程序怎么申请注册?2017年1月9日,微信小程序正式与大家见面。有部分朋友不清楚怎么申请注册,接下来小编给大家带来微信小程序官方注册流程,需要的朋友可以参考下
收藏 0 赞 0 分享

微信小程序登录入口在哪? 如何发现新的小程序?

微信小程序在哪里登录?如何发现新的小程序?微信小程序于今日正式上线,用户先需要将将微信更新至iOS6.5.3版本或Android6.5.3版本。之后可通过手动搜索小程序、扫描二维码等方式激活,那么微信小程序怎么登陆呢?又怎么发现更多的小程序
收藏 0 赞 0 分享
查看更多