PDA

View Full Version : ایجاد installer برای پروژه جاوا



eclipse_my_edition
پنج شنبه 02 خرداد 1387, 21:07 عصر
با سلام
من با استفاده از netbeans یک Desktop application ساختم و فایل jar براش ایجاد کردم. حالا می خوام با کلیک روی یک batch file این پروژه بر روی کامپیوتر های دیگه نصب بشه ولی هیچ ایده ای ندارم چطور اینکارو میشه انجام داد.
ممنون می شم نظر شمارو بدونم :لبخندساده:

mazdadoost
جمعه 03 خرداد 1387, 14:18 عصر
دوست عزیز :
روش های مختلفی هست.بهتره به این تاپیک سری بزنید.
http://barnamenevis.org/forum/showthread.php?t=105417
امید وارم مشکلتون حل بشه.حتی امکان از فایل های shl و bat استفاده نکنید.اگه با وجود مطالعه و دقت در روش هایی که در تاپیکی که گفتم مشکلتون ادامه داشت .چنانچه وقت داشته باشم خوشحال می شم کمکی کرده باش.
موفق باشید.

eclipse_my_edition
جمعه 03 خرداد 1387, 22:51 عصر
خیلی متشکرم

kobari
سه شنبه 21 خرداد 1387, 12:10 عصر
حتی امکان از فایل های shl و bat استفاده نکنید.
با سلام
لطفا در مورد دلیل عدم استفاده از فایل های bat , Shell توضیح بیشتری بدهید. در خود برنامه های installer که با جاوا نوشته شده اند ناچاریم یک سری از کارها را در قالب فایل های bat یا shell به برنامه installer معرفی کنیم. شما درست میگوید این فایل ها قابل اجرا بر روی همه سیستم عامل ها نمی باشند و ما را ناچار میسازند که نصب کننده های مربوط به هر OS را جداگانه بسازیم . سئوال : چگونه یک برنامه نصب با جاوا داشته باشیم که قابل اجرا برروی همه OS ها باشد. قبلا از وقتی که برای پاسخ دادن میگذارید تشکر میکنم.

javaphantom
سه شنبه 21 خرداد 1387, 16:04 عصر
با سلام
لطفا در مورد دلیل عدم استفاده از فایل های bat , Shell توضیح بیشتری بدهید. در خود برنامه های installer که با جاوا نوشته شده اند ناچاریم یک سری از کارها را در قالب فایل های bat یا shell به برنامه installer معرفی کنیم. شما درست میگوید این فایل ها قابل اجرا بر روی همه سیستم عامل ها نمی باشند و ما را ناچار میسازند که نصب کننده های مربوط به هر OS را جداگانه بسازیم . سئوال : چگونه یک برنامه نصب با جاوا داشته باشیم که قابل اجرا برروی همه OS ها باشد. قبلا از وقتی که برای پاسخ دادن میگذارید تشکر میکنم.

معمولا در تمام سایتهای معتبر مثل خود سان که محصولات خودش رو با جاوا نوشته برای اجرای محصول خودش برای اینکه بدونه که گیرنده محصول دارای چه پلت فورمی هست از اون سوال می کنه و می شه گفت خود محصول رو به چند نوع حالت که برای هر OS ی مناست هست تبدیل کرده و آماده داره.

saeed_Z_F
سه شنبه 21 خرداد 1387, 19:35 عصر
سلام
یه راه خیلی ساده که اصلا بهش توجه نمیشه فشرده کردن (pack) و ارائه محصول است مثلا zip کردن بعدش فایلهای اجرایی برنامه رو بصورت bash ارائه کردن .
این فقط یک نظر شخصی بود .

mazdadoost
سه شنبه 21 خرداد 1387, 20:47 عصر
با سلام
لطفا در مورد دلیل عدم استفاده از فایل های bat , Shell توضیح بیشتری بدهید. در خود برنامه های installer که با جاوا نوشته شده اند ناچاریم یک سری از کارها را در قالب فایل های bat یا shell به برنامه installer معرفی کنیم. شما درست میگوید این فایل ها قابل اجرا بر روی همه سیستم عامل ها نمی باشند و ما را ناچار میسازند که نصب کننده های مربوط به هر OS را جداگانه بسازیم . سئوال : چگونه یک برنامه نصب با جاوا داشته باشیم که قابل اجرا برروی همه OS ها باشد. قبلا از وقتی که برای پاسخ دادن میگذارید تشکر میکنم.

دوست عزیز:
مثالی که بنده عرض کردم IzPack براتون فایل های استاندارد و اجرایی jar میسازه.که در همه پلت فرم ها به یک نحو بر اساس Java Web Start اجرا میشن.
برای اطلاعات کاملتر به این پست بنده نگاهی بندازید.
http://barnamenevis.org/forum/showthread.php?t=105459&page=1
http://barnamenevis.org/forum/showthread.php?t=105459&page=2
امیدوارم به جوابتون برسید.
موفق باشید.

javaphantom
سه شنبه 21 خرداد 1387, 22:06 عصر
دوست عزیز:
مثالی که بنده عرض کردم IzPack براتون فایل های استاندارد و اجرایی jar میسازه.که در همه پلت فرم ها به یک نحو بر اساس Java Web Start اجرا میشن.
برای اطلاعات کاملتر به این پست بنده نگاهی بندازید.
http://barnamenevis.org/forum/showthread.php?t=105459&page=1
http://barnamenevis.org/forum/showthread.php?t=105459&page=2
امیدوارم به جوابتون برسید.
موفق باشید.

این کار اصلا اصولی نیست اومدیم فردا این IZPack شما دیگه ورژنهای جدیدش رو پشتیبانی نکرد یا انقدر نرم افزارهایی دیگر هستند که می تونن کار رو بکنن. پس نمی شه گفت یک راه حل اصولی هست. یا حتی خود سان هم می تونست یک نرم افزار برای این کار بسازه!؟

mazdadoost
چهارشنبه 22 خرداد 1387, 00:29 صبح
این کار اصلا اصولی نیست اومدیم فردا این IZPack شما دیگه ورژنهای جدیدش رو پشتیبانی نکرد یا انقدر نرم افزارهایی دیگر هستند که می تونن کار رو بکنن. پس نمی شه گفت یک راه حل اصولی هست. یا حتی خود سان هم می تونست یک نرم افزار برای این کار بسازه!؟

دوست عزیز :
1-این کار اصلا اصولی نیست:منظورتون دقیقا به چه شکله؟
*-منظورتون اینه که Izpack در ورژن آتیه جاوا پشتیبانی نمیشه؟!:خوب این برای برنامه های من که با کامپایلر جاوا 5 یا 6 کامپایل کردم و میخوام روی jre های قدیمی تر اجرا کنم هم پیش میاد!(Bad Class Version Exeption!) پس از بعد سازگاری نه تنها این محصول بلکه تمامی محصولات تولیدی با این پلت فرم دستخوش تاثیراتی خواهند شد.و البته هیتند سازندگانی که محصول نهاییشون رو برای چن پلت فرم کامپایل و ارائه میدن.در حال حاضر DB4O در ذهنم هست.که برای ورژن های مختلف جاوا SE دارای LIB های جداگانه هست.پس اسنکه در ورژن های آتیه جاوا از این محصول استفاده بشه یا نه تفاوتی بین سایر محصولات نیست.از طرفی توسعه دهندگانی که توسعه دهنده IzPack هستند (البته بر حسب ظاهر شما امر بهتون مشتبه شده و تصور میکنید IzPack رو بنده توسعه دادم و ماله من!که اینطور نیست!) چنانچه تا الان این محصول رو توسعه دادند هیچ در ورژن های آتی جاوا هم (حالا اگه جاوا SE X باشه یا اصلا جاوا به نام دیگه ای که سان بخواد!)پشتیانی از ورژن های مورد نظر رو خواهن گنجوند...
*-اینکه خود این پروژه در آینده پشتیبانی نخواهد شد!خوب البته !چرا که نه.پروژه ای Open
Source که فروش تجاری هم نداره!از چند جنبه میشه به این مسئله توجه کرد :
1-همونطوری که پشتیبانی از سایر پروژه های اپن سورس (Linux-MySql-PHP-JAVA!-Hibernate-Struts-Jboss ........)احتمال قطع شدن داره(دقیقا به خاطر همه Licence ها -GPL-GNU-Appache...)این پروژه هم به همین شکل چنین وضعیتی داره!ایا این دلیل میشه که استفاده از Linux رو برای ما غیر اصولی کنه!(شاید بفرمایید Linix کجا و ....به هر حال این یک مقایسه هست!و میشه به خیلی از پروژه های کوچکو بزرگ اپن سورس مجانیها و غیر مجانی ها و اونهایی که ماهیتی دو گانه دارند بسطش داد!و می دونید که SCO که یک شرکت نسبتا متوسط نرم افزار UNIX هست چطور توپ هاشو به روی بزرگترین حامیان تجاری Linix یعنی IBM و HP نشونه رفته!)
2-بله ممکنه پشتیبانی از این پروژه قطع شه و شما از چیزی استفاده کرده باشید که دیگه پشتیبانی نمی شه!در این حالت هم شما در نهایت شاهد ورژن جدیدی از این پروژه نخواهید بود.کار هایی که تا حالا کردید مشکلی نخواهند داشت.شما به سمت ابزار جدیدی مهاجرت میکنید.این کار در دنیای توسعه و اصولا نرم افزار امری شایع هست!برای مثال تغیراتی که در API خود جاوا ,تکنولوژی ها جایگزینی ها (کل JNI در ورزن اولیه جاوا با ورژن کنونی SE تفاوت داره و ناسازگاره)- این استفاده از جاوا رو غیر اصولی میکنه ؟نه !نرم افزار هایی که ورژن جدیدشون با کل سیستم عامل قبلی ناسازگاره یا حتی فرمت فایل های خودشون با قبلی ها ناسازگاره!این استفاده از این نرم افزار ها رو غیر اصولی میکنه؟نه!(تمام پک های نت بینز 5 غیر استفاده در 5.5 هستند!)
2-انقدر نرم افزارهایی دیگر هستند که می تونن کار رو بکنن.:
کدام نرم افزار ها :البته!در پست هام تعدادی از این Alternative ها رو توضیح دادم.اصولا این تیپ از Installer های جاوا با استفاده از امکانات ذاتی خود جاوا یه پروسه نصب جاوا میسازند و فایل های برنامه هم فشرده. پک میکنند.و در نهایت یه فایل جار میدهند که به شکل کاملا اصولیدر پلت فرم های مختلف بر اساس استاندارد های کنونی جاوا خیلی ساده و شفاف اجرا میشه!در این بین باید به این نکته توجه کرد که API خوب و شفاف و پیکربندی و Bulid تسک های Ant همراشون در کوتاهترین زمان این امکانو به توسعه دهنده میدن تا با استفاده ازشون از نوشتن یه نصاب اختصاصی که همین کارو میکنه بپرهیزه!(قرار نیست که همه چرخ رو از نو اختراع کنن!مخصوصا در دنیای حرفه ای!).پس نفس Alternative نمیتونه دلیلی بر غیر اصولی بودن استفاده از یک محصول باشه!(چون NetBeans هست استفاده از Jbuilder -IDEA-Eclips-......, غیر اصولیه!چون Facelet هست استفاده از Faces غیر اصولیه!چون JSP هست استفاده از Servlet غیر اصولیه.چون PhotoShop هست استفاده از ....غیر اصولی چون Install Shield هست استفاده از InstallAware-Instal Anywhere و خیلی از انستالر های دیگه غیر اصولیه!!)وووو
3- یا حتی خود سان هم می تونست یک نرم افزار برای این کار بسازه!؟:چرا که نه!سان شرکت بزرگی و جاوا محصولی دوت داشتنی برای دوست دارانش(مخصوصا کسانی که ازش کسب درآمد می کنند!) اما نه سان و نه جاوا به هیچ عنوان حرف اول و آخر رو در همه زمینه ها نمی زنند!هم سان و هم جاوا اشتباهاتی دارند و داشتند و خواهند داشت!(کاملا واجد نقص هستند!)در جاوا همیشه چیز های لازم هست که الان نیست(مخصوصا اینکه در جاوا تا وقتی نیاز به چیزی دارید که به شکل ستاندارد در پلت فرم نیست و شما میخاید کع بدون نگرانی از عدم انتقال برنامتون روی پلت فرم های مختلف از API خود جاوا و نه JNI یا هر چیز وابسته به پلت فرم استفاده کنید این بخشی از فلسفه به وجود اومدن JCP و JSR هاشه. ).جاوا در شکلی که الان هست نتیجه سعی و تلاشه سان برای کامل تر کردن جاوا و اضافه کردن چیز های جدید تر و ....توسط سان هست!از طرفی شما هم به عنوان برنامه نویس روش هایی ایجاد میکنید.و جامعه اپن سورسو تجاری که همه این فکر ها و فکر ها و عمل های همه گروههای در گیر در جاوا منعکس میشه!و گاهی تفکرات سان و گاهی تفکرات بقیه مسیر آینده جاوا رو مشخص میکنه!و این یعنی سان جزئی از جاوا فناوری و ایده هست!نه همش!ایا اینکه JPA هست استفاده از EJB CMP غیر اصولیه!ایا با وجود فرمت Zip استفاده از RAR غیر اصولیه.ایا ووقتی سان اینستالر هاشو به پلت فرم خاصی تهیه میکنه استفاده از فرمت استاندارد Deploy کردن SE که همون جار های همیشه گی خودمون هستن غیر اصولیه!چون سان اسن طوز کرده چون سان اونطور کرده!
و اما سان در این زمینه یعنی ساخت اسنستالر های Cross Platform ّرای جاوا چه گرده؟نگاهی به این JSR بندازید:
JSR 38: Application Installation API Specification
http://jcp.org/en/jsr/detail?id=38
و نگاهی هم به اهداف IzPack
JSR 38: Application Installation API Specification
حد اقل نگاهی که به استفاده سان از این پروژه کره بندازید(اینستالر GlassFish!بله سان هم کار غیر اصولی کرده!!!)و اینکه آیا تناظری بین اهداف JSR و اهداف و امکانات IzPack هست یا نیست!
بله هست!
....
موفق باشید.

kobari
چهارشنبه 22 خرداد 1387, 11:37 صبح
معمولا در تمام سایتهای معتبر مثل خود سان که محصولات خودش رو با جاوا نوشته برای اجرای محصول خودش برای اینکه بدونه که گیرنده محصول دارای چه پلت فورمی هست از اون سوال می کنه و می شه گفت خود محصول رو به چند نوع حالت که برای هر OS ی مناست هست تبدیل کرده و آماده داره.

سلام
شما درست می گوئید. طبق اطلاعاتی هم که یکی از دوستان بصورت شفاهی بمن داد . ظاهرا هنگام کانفیگ IzPack ، این امکان در اختیار گذاشته شده است تا چنانچه برنامه ماباید روی چندین پلات فرم نصب شود، بتوانیم برای انجام یک تسک خاص (مثلا تعریف یک یوزر) همزمان shell فایل و bat فایل یا هربرنامه دیگر مربوط به آن تسک را به IzPack معرفی کنیم و از آن پس IzPack در زمان نصب با توجه به نوع سیستم عامل برنامه مناسب آن تسک مورد نظر را انتخاب و اجرا خواهد کرد.