不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
C#生成Jad文件源代码
编辑:dnawo 日期:2009-02-23
在贴出C#生成Jad文件的源代码前我们先了解下几个知识点:
·JAR文件格式以流行的ZIP文件格式为基础,用于将许多个文件聚集为一个文件;
·大多数JAR文件包含一个META-INF\MANIFEST.MF文件,它定义了与扩展和包相关的数据;
·JAD文件是一个文本文件,用于描述JAR文件,和MANIFEST.MF文件相比,它通常多了MIDlet-Jar-Size和MIDlet-Jar-URL两个属性;
C#生成Jad文件的源代码:
参考文章
JAR 文件揭密:http://www.ibm.com/developerworks/cn/java/j-jar/
根据MIDlet套件(Jar文件)自动生成jad文件:http://www.knowsky.com/362909.html
MANIFEST.MF 文件内容详解:http://blog.csdn.net/hcx_2008/archive/2007/09/04/1772413.aspx
C# 根据jar游戏文件生成jad的dll类库:http://www.cnblogs.com/suyuan/archive/2008/12/26/1363244.html
·JAR文件格式以流行的ZIP文件格式为基础,用于将许多个文件聚集为一个文件;
·大多数JAR文件包含一个META-INF\MANIFEST.MF文件,它定义了与扩展和包相关的数据;
·JAD文件是一个文本文件,用于描述JAR文件,和MANIFEST.MF文件相比,它通常多了MIDlet-Jar-Size和MIDlet-Jar-URL两个属性;
C#生成Jad文件的源代码:
复制内容到剪贴板
程序代码

/// <summary>
/// 生成JAD文件
/// </summary>
/// <param name="jarfile">JAR文件路径</param>
private void JADMaker(string jarfile)
{
if (File.Exists(jarfile))
{
FileInfo jarinfo = new FileInfo(jarfile);
string jadfile = Path.ChangeExtension(jarinfo.FullName, ".jad");
try
{
//1.调用WinZip从JAR包中解压出 MANIFEST.MF
Process process = new Process();
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.FileName = "WZUNZIP.EXE";
process.StartInfo.WorkingDirectory = Environment.CurrentDirectory;
process.StartInfo.Arguments = "\"" + jarfile + "\"" + " " + "\"META-INF\\MANIFEST.MF\"";
process.Start();
process.WaitForExit(10000);
string message = process.StandardOutput.ReadToEnd().ToLower();
process.Close();
if (message.IndexOf("unzipping ") != -1 && File.Exists(Path.Combine(Environment.CurrentDirectory, "MANIFEST.MF")))
{
//2.在 MANIFEST.MF 基础上加入MIDlet-Jar-Size和MIDlet-Jar-URL两个属性
/* 以下代码生成的jad无法安装,提示:缺少必需的属性
string info = File.ReadAllText(Path.Combine(Environment.CurrentDirectory, "MANIFEST.MF"), Encoding.UTF8);
info = string.Format("MIDlet-Jar-Size: {0}\r\nMIDlet-Jar-URL: {1}\r\n{2}",jarinfo.Length,jarinfo.Name,info);
File.WriteAllText(jadfile, info, Encoding.UTF8);
*/
FileStream stream = File.Create(jadfile);
StreamWriter writer = new StreamWriter(stream);
FileStream stream2 = File.Open(Path.Combine(Environment.CurrentDirectory, "MANIFEST.MF"), FileMode.Open);
StreamReader reader = new StreamReader(stream2);
writer.WriteLine("MIDlet-Jar-Size: " + jarinfo.Length.ToString());
writer.WriteLine("MIDlet-Jar-URL: " + jarinfo.Name);
string str2 = string.Empty;
while ((str2 = reader.ReadLine()) != null)
{
writer.WriteLine(str2);
}
reader.Close();
writer.Close();
stream2.Close();
stream.Close();
File.Delete(Path.Combine(Environment.CurrentDirectory, "MANIFEST.MF"));
MessageBox.Show("完成!");
}
else
{
MessageBox.Show("MANIFEST.MF 文件提取失败!");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
else
{
MessageBox.Show(jarfile + " 不存在!");
}
}
/// 生成JAD文件
/// </summary>
/// <param name="jarfile">JAR文件路径</param>
private void JADMaker(string jarfile)
{
if (File.Exists(jarfile))
{
FileInfo jarinfo = new FileInfo(jarfile);
string jadfile = Path.ChangeExtension(jarinfo.FullName, ".jad");
try
{
//1.调用WinZip从JAR包中解压出 MANIFEST.MF
Process process = new Process();
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.FileName = "WZUNZIP.EXE";
process.StartInfo.WorkingDirectory = Environment.CurrentDirectory;
process.StartInfo.Arguments = "\"" + jarfile + "\"" + " " + "\"META-INF\\MANIFEST.MF\"";
process.Start();
process.WaitForExit(10000);
string message = process.StandardOutput.ReadToEnd().ToLower();
process.Close();
if (message.IndexOf("unzipping ") != -1 && File.Exists(Path.Combine(Environment.CurrentDirectory, "MANIFEST.MF")))
{
//2.在 MANIFEST.MF 基础上加入MIDlet-Jar-Size和MIDlet-Jar-URL两个属性
/* 以下代码生成的jad无法安装,提示:缺少必需的属性
string info = File.ReadAllText(Path.Combine(Environment.CurrentDirectory, "MANIFEST.MF"), Encoding.UTF8);
info = string.Format("MIDlet-Jar-Size: {0}\r\nMIDlet-Jar-URL: {1}\r\n{2}",jarinfo.Length,jarinfo.Name,info);
File.WriteAllText(jadfile, info, Encoding.UTF8);
*/
FileStream stream = File.Create(jadfile);
StreamWriter writer = new StreamWriter(stream);
FileStream stream2 = File.Open(Path.Combine(Environment.CurrentDirectory, "MANIFEST.MF"), FileMode.Open);
StreamReader reader = new StreamReader(stream2);
writer.WriteLine("MIDlet-Jar-Size: " + jarinfo.Length.ToString());
writer.WriteLine("MIDlet-Jar-URL: " + jarinfo.Name);
string str2 = string.Empty;
while ((str2 = reader.ReadLine()) != null)
{
writer.WriteLine(str2);
}
reader.Close();
writer.Close();
stream2.Close();
stream.Close();
File.Delete(Path.Combine(Environment.CurrentDirectory, "MANIFEST.MF"));
MessageBox.Show("完成!");
}
else
{
MessageBox.Show("MANIFEST.MF 文件提取失败!");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
else
{
MessageBox.Show(jarfile + " 不存在!");
}
}
参考文章
JAR 文件揭密:http://www.ibm.com/developerworks/cn/java/j-jar/
根据MIDlet套件(Jar文件)自动生成jad文件:http://www.knowsky.com/362909.html
MANIFEST.MF 文件内容详解:http://blog.csdn.net/hcx_2008/archive/2007/09/04/1772413.aspx
C# 根据jar游戏文件生成jad的dll类库:http://www.cnblogs.com/suyuan/archive/2008/12/26/1363244.html
评论: 0 | 引用: 0 | 查看次数: 3897
发表评论
请登录后再发表评论!