الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

برنامج تهئية برامج الجافا (JKelany Java Installer )

رائج
بدأه Mahmoud Kelany في 2 فبراير 2011 · 65 رد · 6,600 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#26
علاء الصالحي كتب:

الملف الذ اعطيتني اياه يعمل بشكل جيد

لكني عندما أردت بناء واحد خاص بي لم يعمل على كل احاول أن أجربه لكني نوعاً ما مشغول في هذه الفترة

لهذا تأخرت عليك

لكني أظن انه لا مشاكل في البرنامج

وأني أخطأت أثناء إنشائي لملفات الجار الخاصة بي

تحياتي

طب جرب دا مثال برنامج ومعاه مكتبه وجربه كده

Example.zip

امممم ربنا معاك يارب :)

اى خدمه او اى مساعده تحت امرك

مش عارف انا ارفقت لك برنامج علشان تجربه

وتشوف هل المشكله ف ملف الجار ام ماذا ظ

لكن لم تفيدينى فى موضوع مجلد المكتبات lib او classpath

Software Developer
Mahmoudkelany.com


 

#27

محمد انظر ملف الـ jar الخاص بك في مجلد Meta-Inf هناك ملف اسمه MANIFEST.MF

انظر داخله

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.1
Created-By: 16.0-b13 (Sun Microsystems Inc.)
Main-Class: com.jkelany.gui.Main
Class-Path: lib/JKelany_Char_Freqancy_API.jar
X-COMMENT: Main-Class will be added automatically by build

هذا من عمايل الأخ الشرير Netbeans

لاحظ عندك التعليمة Class-Path

هذا سبب أن ملفاتك تعمل وملفاتي لا تعمل يجب أن تكتب هذا السطر في برنامجك بدلاً من الأخ Netbeans

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#28
علاء الصالحي كتب:

محمد انظر ملف الـ jar الخاص بك في مجلد Meta-Inf هناك ملف اسمه MANIFEST.MF

انظر داخله

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.1
Created-By: 16.0-b13 (Sun Microsystems Inc.)
Main-Class: com.jkelany.gui.Main
Class-Path: lib/JKelany_Char_Freqancy_API.jar
X-COMMENT: Main-Class will be added automatically by build

هذا من عمايل الأخ الشرير Netbeans

لاحظ عندك التعليمة Class-Path

هذا سبب أن ملفاتك تعمل وملفاتي لا تعمل يجب أن تكتب هذا السطر في برنامجك بدلاً من الأخ Netbeans

تحياتي

تمام فعلا كدا وصلنا للحل

لكن اكيد هأحتاج ليك لان انا بحاول اوصل لقراءه هذا الملف

لكن دون جدوى

Software Developer
Mahmoudkelany.com


 

#29

توصلت لحيله وتم الحصول على الملف :)

جارى التعديل بناء على ذلك :)

Software Developer
Mahmoudkelany.com


 

#30

تم تعديل المشكله التى كانت تواجههك اخى علاء

يمكنك الان التجربه منتظر النتيجه

للتحميل

JKelany Java Installer Program 1.8.zip

بالتوفيق ان شاء الله :)

Software Developer
Mahmoudkelany.com


 

#31

لا زالت المشكلة موجودة يا عم الحج

ولما نزلت ملف الـ Jar الخاص بيه لم أجد أي تعديلات على الملف المذكور

ضع الشيفرة التي تقوم بكتابة ملف الـ jar

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#32
علاء الصالحي كتب:

لا زالت المشكلة موجودة يا عم الحج

ولما نزلت ملف الـ Jar الخاص بيه لم أجد أي تعديلات على الملف المذكور

ضع الشيفرة التي تقوم بكتابة ملف الـ jar

تحياتي

لالا انا شغال معايا 100 %

على الـ netbeans , eclipse يعنى باستخدام الـ lib , classpath

هذه هى الكلاس المسئوله عن كتابه ملف الجار اثناء عمليه التنصيب

package com.jkelany.installs;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import java.io.*;
import static com.jkelany.utils.Constants.*;

/**
 *
 * @author Mahmoud Kelany
 */
public class InstallationProcess {

    private File sourceFile = null;
    private File destinationFile = null;
    private String projectFileName = null;
    private InputStream sourceInputStream = null;
    private byte[] byteArr = new byte[8092];

    /**
     * 
     * @param sourceInputStream
     * @param destinationFile
     * @see InputStream
     * @see File
     */
    public InstallationProcess(InputStream sourceInputStream, File destinationFile, String name) {
        this.sourceInputStream = sourceInputStream;
        String path = destinationFile.getPath() + FILE_SEPERATOR + name;
        this.destinationFile = new File(path);
    }

    /**
     * defulte constractor that intainalize the source and destination files by null
     * until use the setters method to intionalize them
     */
    public InstallationProcess() {
        destinationFile = null;
        sourceFile = null;
    }

    /**
     * this is for write the JKelanyUninstall.jar ane the JShortcut.dll
     * or any inputStream file that came form the method
     */
    public synchronized void writeInputStreamFile() {
        if (sourceInputStream == null) {
            throw new NullPointerException("source inputstream can't be null , program will exit");
        } else {
            BufferedInputStream inStream = null;
            BufferedOutputStream outputStream = null;
            try {
                inStream = new BufferedInputStream(sourceInputStream);
                outputStream = new BufferedOutputStream(
                        new FileOutputStream(destinationFile));
                int c;
                while ((c = inStream.read(byteArr)) != -1) {
                    outputStream.write(byteArr, 0, c);
                    outputStream.flush();
                }
            } catch (Exception ex) {
            } finally {
                try {
                    inStream.close();
                    outputStream.close();
                } catch (Exception ex) {
                }
            }
        }
    }

    /**
     * 
     * @return the destinationFile
     */
    public File getDestinationFile() {
        return destinationFile;
    }

    /**
     * 
     * @return project file name that will be install in it.
     * if null that will be same as the jar file name without extention
     * @see #getJarFileName()
     */
    public String getProjectFileName() {
        if (projectFileName == null) {
            projectFileName = sourceFile.getName().
                    substring(0, sourceFile.getName().length() - 4);
        }
        return projectFileName;
    }

    /**
     * set jar file
     * can set it by null
     * to make the jar name as same as it is.
     * @param jarFileName
     */
    public void setJarFileName(String jarFileName) {
        if (!jarFileName.endsWith(".jar")) {
            jarFileName = jarFileName.concat(".jar");
        }
        this.sourceFile = new File(jarFileName);
    }
}

فيه عندى مشكله فى رفع البرنامج

عمال احاول بيقولى

بقالها 3 ايام المشكله دى وترجع تشتغل تانى

اقتباس
The server returned an error during upload

Software Developer
Mahmoudkelany.com


 

#33

يا حج محمود أنا استخدمت الملفات الجديدة وعندما أنشأ الملف الجديد لم يكن ملف Meta يحتوي على أي شيء إضافي

حتى أني لكي أقطع الشك باليقين قمت بتجربته من cmd وأعطاني خطأ واضح وصريح وهوه انه لم يجد المسار

بالنسبة للشيفرة أنا أتكلم عن الشيفرة التي تقوم بدمج ملفات الـ jar في ملف واحد للتحميل

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#34
علاء الصالحي كتب:

يا حج محمود أنا استخدمت الملفات الجديدة وعندما أنشأ الملف الجديد لم يكن ملف Meta يحتوي على أي شيء إضافي

حتى أني لكي أقطع الشك باليقين قمت بتجربته من cmd وأعطاني خطأ واضح وصريح وهوه انه لم يجد المسار

بالنسبة للشيفرة أنا أتكلم عن الشيفرة التي تقوم بدمج ملفات الـ jar في ملف واحد للتحميل

تحياتي

اخ علاء انا شغال معايا 100 %

وانا جربت عليه برنامج كبير كمان

برنامج وصل ل 16 ميجا وتمت العمليه والتسطيب بنجاح

وكمان البرنامج دا كان باستخدام الـ eclipse واشتغل بعد تعديل البيانات

ممكن ترفق ملف الجار الذى تقوم بالتجربه عليه يمكن عندك مشكله فيه ولا فيه حاجه انا لم اخذها فى عين الاعتبار

وهذا هو الكود بعد التعديل الذى حدث

JKelanyInstallerSrcCode_v1.8.zip

Software Developer
Mahmoudkelany.com


 

#35

مرفق الملفات التي أجري عليها التجربة

البرنامج هو لعبة الكلمات

والحزمة المستخدمة هي AAnimation

WordGame.rar

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#36

عمووو علاء

اللعبه اساسا لا تعمل

ليه لان عندك فى ملف الجار الخاص باللعبه فى ملف الـ Meta

هتلاقى مكتوب كدا

Manifest-Version: 1.0
Main-Class: gameOfWords.WordGameView

هتلاقى عندك ان مفيش تحديد المكتبه بالنسبه لملف الجار

انا قومت بفعل الاتى

اضفت السطر االاخير

Manifest-Version: 1.0
Main-Class: gameOfWords.WordGameView
Class-Path: lib/AAnimation.jar

ووضعت المكتبه فى مجلد تحت اسم lib

واشتغلت والحمدلله

بعدها جربت استخدمها فى عمليه التسطيب وعملت بكل كفاءه

جربت استخدمها تحت مجلد classpath

وغيرت الـ Meta الى

Manifest-Version: 1.0
Main-Class: gameOfWords.WordGameView
Class-Path: classpath/AAnimation.jar

وهيا ايضا تعمل بكل كفاءه

شككتنى فى نفسى والله يا حاج علاء

تم تعديل هذه المشاركة بواسطة Mahmoud Kelany في 15 فبراير 2011 في 19:06

Software Developer
Mahmoudkelany.com


 

#37

القصد يا حج عمر افندي

أنك أنت من يجب عليه القيام بكتابة هذا السطر (أقصد برنامجك)

لأني أخبرتك فعلاً أن هذه المكتبة تستخدم مع هذا التطبيق

هل وضحت فكرتي لك؟

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#38

ولكن المفروض ان البرنامج بتاعك شغال زى بقيت الخلق

انا هاخد برنامج مش شغال واعدل عليه انا بالبرنامج

انت عاوز تجننى wacko.gif ههههههههه

على العموم هاشوف

Software Developer
Mahmoudkelany.com


 

#39

يا بني أنتا بتعمل الموضوع ده ازاي في eclipse

أنا في eclipse بعمل كل مكتبة لحالها

بدون أوصل ما بينهم

بعدين تعال هنا أنتا مفروض بتساعد على تهيئة البرامج بتاعة الناس

يعني يفترض تضبط شغلك مع الكل

مثلاً لو واحد حاطط بدل lib مثلاً x

هتقوله لا يا عم الحج حط lib علشان أنا برنامجي ما بيشتغلش غير كده

يا ضغيف tongue.gif

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#40
علاء الصالحي كتب:

يا بني أنتا بتعمل الموضوع ده ازاي في eclipse

أنا في eclipse بعمل كل مكتبة لحالها

بدون أوصل ما بينهم

بعدين تعال هنا أنتا مفروض بتساعد على تهيئة البرامج بتاعة الناس

يعني يفترض تضبط شغلك مع الكل

مثلاً لو واحد حاطط بدل lib مثلاً x

هتقوله لا يا عم الحج حط lib علشان أنا برنامجي ما بيشتغلش غير كده

يا ضغيف tongue.gif

تحياتي

ماشى يا حاج علاء

مش ضعيف والله بس حاضر

هاتعامل مع الموضوع دا ان شاء الله :)

لكن يحتاج لوقت فى التفكير :D فى كيفيه عمل ذلك

Software Developer
Mahmoudkelany.com


 

#41

كل ما عليك هو تبديل السطر الذي يضعه الشخص إن كان موجود أو كتاباته إن كان غير موجود

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#42
علاء الصالحي كتب:

كل ما عليك هو تبديل السطر الذي يضعه الشخص إن كان موجود أو كتاباته إن كان غير موجود

تحياتي

ما انا فاهم

لكن انا اقصد كيفيه دمج ذلك فى الكود

يعنى الترتيب علشان مش نيجى نصلح حاجه نعطل حاجه

Software Developer
Mahmoudkelany.com


 

#43

انا فكرت فى الموضوع ووجدت انه صعب تنفيذها حاليا

لازم تفكير فى كيفيه البحث داخل الملف MANIFEST.MF

وايه المفروض يكون داخل الملف

ولو المكتبات مكتوبه ازاى اصل الى اخر مكتبه فيهم

........ وهكذا

لو عندك فكره عمليه منتظرها منك

توضح كيفيه عمل فحص وازاله المكتبات التى توجد داخل الملف MANIFEST.MF

فى هذه الحاله هتكون التطبيق سهل

انا من وجهه نظرى فيها صعوبه

Software Developer
Mahmoudkelany.com


 

#44

أريني الشيفرة التي تقوم بكتابة ملفات الـ jar داخل ملف الـ jar الذي يفترض به أن يقوم بعملية التهيئة setup

لا أتوقع أن تكون بهذه الصعوبة

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#45
علاء الصالحي كتب:

أريني الشيفرة التي تقوم بكتابة ملفات الـ jar داخل ملف الـ jar الذي يفترض به أن يقوم بعملية التهيئة setup

لا أتوقع أن تكون بهذه الصعوبة

تحياتي

كتابه الملفات داخل ملف الجار

عن طريق الكلاس JarUtitlity

اين يتم استدعاء ذلك

يتم عن طريق الداله

private void finish()

الموجوده داخل الكلاس Sittings

هتلاقى داخل الداله finish

 // the final jar file
    	outputfile = new File(outputfile.getPath() + Constants.FILE_SEPERATOR + projectNameTextField.getText());
    	outputfile.mkdir();

    	outputfile = new File(outputfile.getPath() + Constants.FILE_SEPERATOR + projectNameTextField.getText() + ".jar");
    	ins = new JarUtitlity(outLibFile, jarFile, outputfile);
    	ins.addFileToJar();

هذه الجزئية من الكود تقوم باخذ اخر ملف بعد اضافه المكتبات وملف الـ install.jk , reso.jk

بعدها تقوم هذه الجزئيه باضافه ملف الجار الخاص بالبرنامج (الملف الرئيسي للتشغيل )

وبعدها تقوم بانقله الى مجلد الاخراج الذى تم تحديده

اليس هذا ما تريد ؟؟؟

Software Developer
Mahmoudkelany.com


 

#46

ما أريده هو ما بداخل JarUtility؟

أين أجد هذه الفئة؟ أفضل لو تضعها هنا

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#47
علاء الصالحي كتب:

ما أريده هو ما بداخل JarUtility؟

أين أجد هذه الفئة؟ أفضل لو تضعها هنا

تحياتي

هذه الفئه داخل المشروع JKelanyInstaller API_v1.8

فى الـ package com.jkelany.installs

وها هو الكود الذى بداخلها

package com.jkelany.installs;

/**
 *
 * @author Mahmoud Kelany
 */
import com.jkelany.utils.*;
import java.io.*;
import java.util.zip.*;

public class JarUtitlity {

	private File inputJarFile;
	private File addedFile;
	private File outputJarFile;
	private String addToDir;
	private String addedPath;
	private byte[] byteArr = new byte[8092];

	/**
 	* inputJarFile = null
 	* <br>
 	* addedFile = null
 	* <br>
 	* outputJarFile = null
 	* @see  #JarUtitlity(java.io.File, java.io.File, java.io.File)
 	*/
	public JarUtitlity() {
    	this(null, null, null, null);
	}

	/**
 	* @param inputJarFile
 	* @param addedFile
 	* @param outputJarFile 
 	* @see #addFileToJar()
 	*/
	public JarUtitlity(File inputJarFile, File addedFile, File outputJarFile) {
    	this(inputJarFile, addedFile, outputJarFile, Constants.ADD_FILES_TO_JAR_PATH);
	}

	/**
 	*
 	* @param inputJarFile
 	* @param addedFile
 	* @param outputJarFile
 	* @param addToDir
 	*/
	public JarUtitlity(File inputJarFile, File addedFile, File outputJarFile, String addToDir) {
    	this.inputJarFile = inputJarFile;
    	this.addedFile = addedFile;
    	this.outputJarFile = outputJarFile;
    	this.addToDir = addToDir;
    	addedPath = this.addToDir + addedFile.getName();
	}

	// <editor-fold defaultstate="collapsed" desc="addFileToJar to jar Method">
	public void addFileToJar() {
    	ZipInputStream jarInputStream = null;
    	ZipOutputStream jarOutputStream = null;
    	ZipEntry entry = null;
    	try {
        	if (inputJarFile != null) {
            	jarInputStream = new ZipInputStream(new FileInputStream(inputJarFile));
        	} else {
            	throw new NullPointerException("input jar file can't be null");
        	}
        	if (outputJarFile != null) {
            	jarOutputStream = new ZipOutputStream(new FileOutputStream(outputJarFile));
        	} else {
            	throw new NullPointerException("output jar file can't be null");
        	}
        	ZipEntry nextElement = jarInputStream.getNextEntry();
        	// add the orgin jar file
        	while (nextElement != null) {
            	jarOutputStream.putNextEntry(nextElement);
            	int byteOfEntry;
            	while ((byteOfEntry = jarInputStream.read(byteArr)) != -1) {
                	jarOutputStream.write(byteArr, 0, byteOfEntry);
            	}
            	jarOutputStream.closeEntry();
            	nextElement = jarInputStream.getNextEntry();
        	}
        	jarInputStream.close();
        	//add file
        	if (addedFile != null) {
            	entry = new ZipEntry(addedPath);
        	} else {
            	throw new NullPointerException("added file can't be null");
        	}
        	jarOutputStream.putNextEntry(entry);
        	FileInputStream fileInputStream = new FileInputStream(addedFile);
        	int character;
        	while ((character = fileInputStream.read(byteArr)) != -1) {
            	jarOutputStream.write(byteArr, 0, character);
        	}
        	jarOutputStream.closeEntry();
        	jarOutputStream.close();
        	fileInputStream.close();
    	} catch (Exception e) {
        	e.printStackTrace();
    	}
	}
}

وفيه عندك بداخل الكود ثابت

ها هوو

public final static String ADD_FILES_TO_JAR_PATH = "com/jkelany/resouces/";

Software Developer
Mahmoudkelany.com


 

#48

محمود الأمر بسيطوليس بالصعوبة التي تتكلم عنها

تستطيع أن تحصل على ملف Meta-inf.mf

وتستطيع أن تقرأ الملف والملف يتبع شكل ملفات الـ proberities أي على نسق اسم خاصية : الخاصية

هلا أوضحت ما الذي يصعب عليك بالضبط

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#49
Mahmoud Kelany كتب:

لازم تفكير فى كيفيه البحث داخل الملف MANIFEST.MF

وايه المفروض يكون داخل الملف

ولو المكتبات مكتوبه ازاى اصل الى اخر مكتبه فيهم

........ وهكذا

Software Developer
Mahmoudkelany.com


 

#50

الأمر بسيط يا أخ محمود

هناك سطر واحد مسؤول عن تحديد المكتبات المستخدمة في ملف الـ jar

فعن أي صعوبة تتكلم

وضح كلامك أكثر حتى أفهمك

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

مواضيع مشابهة