在Unicode版Inno Setup中使用ISSkin给安装程序添加皮肤
原文 http://www.cnblogs.com/2356/archive/2009/10/27/1590565.html
在Unicode版Inno Setup中使用ISSkin给安装程序添加皮肤
ISSkin是Code jock 公司出品的Inno Setup 皮肤插件,用于为Inno制作的安装程序提供皮肤功能。
自Delphi发布2009之后,Inno Setup 开始出现支持Unicode编码的版本,即5.3.x系列,并且官方同时提供Ansi和Unicode版本。
如果了解Delphi 2009的朋友,应该就很了解这一版本对Unicode的支持,这里不多做介绍了。
Unicode版的Inno Setup脚本中会将所有字符串存储为Unicode字符串,使用双字节编码,包括ASCII码,如果调用为早期Ansi版开发的插件的话,涉及到字符串 String,应该显式修改为AnsiString,这样才能保证Unicode字符串正确转换为Ansi字符串。
这里要解决由此而导致的问题。
现在的ISSkin最新版本是2.0.0,字符串使用Ansi编码,所以需要将官方主页上介绍的Code代码段进行修改。
这里介绍使用ISSkin对Unicode版的Inno Setup制作的安装程序添加皮肤。
第一步,在File段添加插件ISSkin的动态链接库ISSkin.dll和皮肤文件
例如:
[Files]
Source: ISSkin.dll; DestDir: {app}; Flags: dontcopy
Source: Office2007.cjstyles; DestDir: {tmp}; Flags: dontcopy
第二步,在Code段声明API,注意这里将原String修改为AnsiString
例如:
[Code]
procedure LoadSkin(lpszPath: AnsiString; lpszIniFileName: AnsiString);external 'LoadSkin@files:isskin.dll stdcall';
procedure UnloadSkin();external 'UnloadSkin@files:isskin.dll stdcall';
function ShowWindow(hWnd: Integer; uType: Integer): Integer;
external 'ShowWindow@user32.dll stdcall';
第三步,重载InitializeSetup和DeinitializeSetup两个函数以调用ISSkin插件功能
例如:
procedure DeinitializeSetup();
begin
ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0);
UnloadSkin();
end;
好了,现在截个图吧,看看效果。
![]()
在Unicode版Inno Setup中使用ISSkin给安装程序添加皮肤的更多相关文章
- 在Unicode版Inno Setup中使用ISSkin
ISSkin是Code jock 公司出品的Inno Setup 皮肤插件,用于为Inno制作的安装程序提供皮肤功能. 自Delphi发布2009之后,Inno Setup 开始出现支持Unicode ...
- Inno Setup制作最简单的安装程序
目标就是[把exe程序放到制定目录,然后自动把工程需要的dll放到system32目录下,自动注册注册表.] 实现上述需求,用Inno Setup可以非常方便快捷实现. 安装Inno Setup. 点 ...
- 如何在 Inno Setup 中关联多种文件格式
问题描述 Inno Setup 是一款十分强大的 Windows 安装程序制作软件,可以通过编写并编译 iss 脚本来创建安装包.之前都是直接将 Pyinstaller 生成的文件夹压缩为 zip 格 ...
- 以前编写的inno setup脚本,涵盖了自定义安装界面,调用dll等等应用 (转)
以前编写的inno setup脚本,涵盖了自定义安装界面,调用dll等等应用 (转) ; Script generated by the Inno Setup 脚本向导. ; SEE THE DOCU ...
- Inno setup中定制安装路径
我的程序修改了安装界面,所以我的界面中提供了更改安装路径的方法. 用户修改后的路径会被传回inno setup脚本,脚本中需要做的事情如下: 1,写一个函数,来返回新的安装路径,如: function ...
- 在 Inno Setup 中实现倒数N秒后激活按钮
原文 http://restools.hanzify.org/article.asp?id=67 timectrl.dll 为一个 6.5 KB 的按钮激活时间控制插件. 引用来自 Example1 ...
- Inno setup 中 执行参数传递注意的地方
Inno setup编译器编译使用pascal脚本编写的打包代码,其中Run段可以执行某些特定的程序,遇到一个bat批处理文件传递参数的问题,记录如下 1: [Run] 2: Filename: &q ...
- inno setup脚本,涵盖了自定义安装界面,调用dll等等应用
; Script generated by the Inno Setup 脚本向导. ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETU ...
- 【转载】inno setup 水波纹效果,检测安装vcredist_x86.exe等
以下inno setup脚本,实现了:1.水波纹效果 2.安装时检测是否安装其他版本,并在欢迎页面添加文字提示 4.检测安装vcredist_x86.exe 3.卸载时添加提示 ; 脚本由 Inno ...
随机推荐
- SRAM与SDRAM的比较(转)
原文:http://blog.csdn.net/fg8181/article/details/2278100 内存在电脑中起着举足轻重的作用,一般采用半导体存储单元,包括随机存储器(RAM),只读存储 ...
- FPGA系统中DRAM,SRAM,SDRAM,FLASH 区别(转)
原文:http://hi.baidu.com/abners/item/a9042ef35d3f005bc8f337f5 一般来说这几种存储器是一个nios系统都具有的,sram的好处是接口简单,速度快 ...
- 全 Javascript 的 Web 开发架构:MEAN
http://developer.51cto.com/art/201404/434759.htm 全 Javascript 的 Web 开发架构:MEAN 引言 最近在Angular社区的原型开发者间 ...
- USB匹配电阻
做过USB的人都或许有一个纠结,那就是D+和D-上到底要串多大的电阻,串在源端还是终端. 我想说:网络上的说法都不完全正确,首先USB有低速.全速和高速之分,在低速和全速模式下是电压驱动的,驱动电压为 ...
- [置顶] SPL讲解(4)--Criteria操作篇
概念 以前一篇文章中,描述了实体Entity的操作,很明显,仅仅实体的操作是远远不够的.如:我们经常会根据查询条件从数据库中获取记录集并绑定到DataGrid上,会根据条件进行批量的Update和De ...
- Jquery时间验证和转换工具
var TimeObjectUtil; /** * @title 时间工具类 * @note 本类一律违规验证返回false * @author {boonyachengdu@gmail.com} * ...
- 剑指offer-面试题8.旋转数组的最小数字
题目:把一个数组最开始的若干个元素搬到数据的末尾,我们称之为 数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组 的最小元素.例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转, ...
- 让magento的validate验证hidden field
Object.extend(Validation, { isVisible : function(elm) { return true; }, insertAdvice : function(elm, ...
- HttpURLConnection访问url的工具类
java代码: import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; ...
- Spring整合Quartz
目录[-] 一.Spring创建JobDetail的两种方式 二.整合方式一示例步骤 1.将spring核心jar包.quartz.jar和Spring-context-support.jar导入类路 ...