[java]izpack3.7.2 安装制作工具 中文问题解决

来源:互联网 发布:网络分配器的作用 编辑:程序博客网 时间:2024/05/18 23:27

izpack,一个开源的安装制作工具, java编写。做出来的东西基本上中规中矩。

使用中碰到不少中文问题,一一解决如下:

1. 中文界面乱码:

修改chn.xml, 这个文件的编码被很奇怪的转码了,试验了半天才搞定。编辑scrapbook page, 评估如下代码:

java.io.file f = new java.io.file("c:\\program files\\izpack\\bin\\langpacks\\installer\\chn.xml");

byte[] a = new byte[(int)f.length()];

new java.io.datainputstream(new java.io.fileinputstream(f)).readfully(a);

new string(new string(new string(a,"gbk").getbytes(),"utf-8").getbytes("iso8859-1"))

碰到这种乱码问题可以使用暴力破解,一般转码不会超过三重,以后类似问题可以采用:

static string[] encodings ={ "gbk", "iso8859-1", "big5", "shift-jis",

"utf-8", "unicode" };

public static void main(string[] args) throws unsupportedencodingexception {

string input = "脨露脭脴";

for (int i = 0; iencodings.length; i++) {

for (int j = 0; jencodings.length; j++) {

for (int k = 0; kencodings.length; k++) {

system.out.println(new string(new string(input

.getbytes(encodings[i]), encodings[j])

.getbytes(encodings[k]))

+ "\t"

+ encodings[i]

+ "/"

+ encodings[j]

+ "/"

+ encodings[k]);

}

}

}

}

2. 安装后菜单不出来。

在document and settings\%your account%\下面能看到一个乱码的目录,所以开始菜单上不会出来,桌面上不出来也是这个原因。

原因:shortlink.dll中没用unicode, 所以中文读出来是gbk,被错误当成iso8859-1转码了。

解决:尝试在shortlink.java中取到的乱码字符串重新getbytes后组合,发现有字符丢失,看样转换中有损耗。

最后决定用byte[]传递字符串,在dll中读到的中文按照字节数组传递给java, java根据系统属性io.encoding(gbk)编码得到字符串。

折腾了两天终于成功安装了~~~,但是。。。卸载界面还有中文问题。。。faint, 有空再搞吧,小问题了。

碰到的几个小tip:

1. 菜单配置shortcutspec.xml文件中如果指定的xxx不存在,不会报错,菜单也不会安装。

2. 如果执行的文件不存在,菜单创建画面会很慢。shortcutpanel要放到文件好之后执行。

3. 制作安装时如果文件不存在,没有出错提示,屏幕上最后出现的文件名应该就是有问题的。

这里下载提到的补丁文件:http://files.cnblogs.com/steeven/izpack3.7.2_chiese_patch.zip


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
原创粉丝点击