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

Izpack安装工具中文问题解决
本文介绍了用Java编写的开源安装制作工具izpack,使用中遇到诸多中文问题并给出解决办法,如中文界面乱码、安装后菜单不显示等。还分享了几个使用小技巧,如菜单配置文件指定项不存在不报错、执行文件不存在菜单创建慢等,并提供补丁文件下载链接。

izpack,一个开源的安装制作工具, Java编写。做出来的东西基本上中规中矩。
使用中碰到不少中文问题,一一解决如下:
1. 中文界面乱码:
修改chn.xml, 这个文件的编码被很奇怪的转码了,试验了半天才搞定。编辑scrapbook page, 评估如下代码:

None.gif java.io.File f  =   new  java.io.File( " C:\\Program Files\\IzPack\\bin\\langpacks\\installer\\chn.xml " );
None.gif
byte [] a  =   new   byte [( int )f.length()];
None.gif
new  java.io.DataInputStream( new  java.io.FileInputStream(f)).readFully(a);
None.gif
new  String( new  String( new  String(a, " GBK " ).getBytes(), " UTF-8 " ).getBytes( " ISO8859-1 " ))
None.gif

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

ExpandedBlockStart.gif ContractedBlock.gif   static  String[] encodings  =   dot.gif "GBK""ISO8859-1""BIG5""SHIFT-JIS",
ExpandedBlockEnd.gif   
"UTF-8""UNICODE" }
;
ExpandedBlockStart.gifContractedBlock.gif 
public   static   void  main(String[] args) throws UnsupportedEncodingException  dot.gif {
InBlock.gif  String input 
= "脨露脭脴";
ExpandedSubBlockStart.gifContractedSubBlock.gif  
for (int i = 0; i < encodings.length; i++dot.gif{
ExpandedSubBlockStart.gifContractedSubBlock.gif   
for (int j = 0; j < encodings.length; j++dot.gif{
ExpandedSubBlockStart.gifContractedSubBlock.gif    
for (int k = 0; k < encodings.length; k++dot.gif{
InBlock.gif     System.
out.println(new String(new String(input
InBlock.gif       .getBytes(encodings[i]), encodings[j])
InBlock.gif       .getBytes(encodings[k]))
InBlock.gif       
+ "\t"
InBlock.gif       
+ encodings[i]
InBlock.gif       
+ "/"
InBlock.gif       
+ encodings[j]
InBlock.gif       
+ "/"
InBlock.gif       
+ encodings[k]);
ExpandedSubBlockEnd.gif    }

ExpandedSubBlockEnd.gif   }

ExpandedSubBlockEnd.gif  }

ExpandedBlockEnd.gif }

None.gif

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文件中如果<createForPack name="xxx"/>指定的xxx不存在,不会报错,菜单也不会安装。
2. 如果执行的文件不存在,菜单创建画面会很慢。ShortcutPanel要放到文件好之后执行。
3. 制作安装时如果文件不存在,没有出错提示,屏幕上最后出现的文件名应该就是有问题的。

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

转载于:https://www.cnblogs.com/steeven/archive/2005/09/01/227948.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值