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

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

posted on 2005-09-01 15:35  steeven  阅读(1990)  评论(1编辑  收藏  举报