هل من الممكن أتمتة إنشاء حزمة إعداد Inno مع ANT؟
-
05-07-2019 - |
سؤال
أقوم بإنشاء تطبيق Eclipse RCP.
أتابع نصيحة جويل في المقالة التالية "Daily Builds are Friend":
http://www.joelonsoftware.com/articles/fog0000000023.html
لذلك ، لقد كتبت نصًا لطيفًا للبناء ينشئ منتجًا لـ Eclipse RCP ويقوم بتشغيل اختبارات الوحدة على الكود. ثم يتم توزيع جميع النتائج على قائمة المطور (بعد بعض التذمر). الآن خطوتي التالية ، أريدها إنشاء حزمة الإعداد التي أقوم عادةً بإنشائها يدويًا باستخدام برنامج التحويل البرمجي لإعداد Inno.
والسؤال هو ، كيف يمكنني تجول إنشاء هذه الحزمة تلقائيًا؟ أظن أنه يمكنني إنشاء ملف إعداد Inno تلقائيًا من ANT ، ثم استدعاء المترجم من سطر الأوامر ، لكنني لا أعرف ما إذا كان ذلك ممكنًا.
أي نصائح لهذه المهمة؟ ربما أي تطبيق إعداد آخر يمكن استخدامه من ANT؟
المحلول
من المؤكد أن مشروع Inno سهل ، هو ملف نصي عادي ، حتى تتمكن من تحرير البرنامج النصي setupper بسهولة بواسطة Ant ، ومع ذلك أوصي بإنشاء ملف تضمين صغير منفصل بواسطة البرنامج النصي الخاص بك. يمكنك أن يكون لديك متجر هناك "متغيرات" مثل الإصدار+رقم البناء الذي تظهره في البداية.
ضع هذا الخط على setupper الخاص بك:
#include "settings.txt"
وجعل الإعدادات.
#define myver=xxx.xxx
#define tags
الآن لا تحتاج إلى لمس رمز setupper الفعلي من برنامج Build Script.
يوجد أدناه مقتطف من البرنامج النصي الخاص بي لتجميع setupper. تحتاج إلى تنفيذ ملف الدُفعات من ANT مثل هذا:
<exec dir="." executable="cmd" os="Windows NT">
<arg line="/c build.bat"/>
</exec>
عينة Batch Build.Bat:
set isxpath="c:\program files\inno setup 5"
set isx=%isxpath%\iscc.exe
set iwz=myproj.iss
if not exist %isx% set errormsg=%isx% not found && goto errorhandler
%isx% "%iwz%" /O"%buildpath%" /F"MySetupper.exe" >>%logfile%
goto :eof
نصائح أخرى
خدعة أخرى لطيفة عند أتمتة بناء المثبت هو استخدام GetFileVersion
المعالج المسبق (ISPP) ماكرو. وبهذه الطريقة ، لن تضطر إلى تكرار أرقام إصدار ملفات الملفات (الثنائية) في شكل متشددين (مثل في تومز settings.txt
) - سيقوم برنامج التحويل البرمجي للتثبيت بقراءته ببساطة من موارد إصدار الملفات بهذه الطريقة. على سبيل المثال:
#define AppName "My App"
#define SrcApp "MyApp.exe"
#define FileVerStr GetFileVersion(SrcApp)
#define StripBuild(str VerStr) Copy(VerStr, 1, RPos(".", VerStr)-1)
#define AppVerStr StripBuild(FileVerStr)
[Setup]
AppName={#AppName}
AppVersion={#AppVerStr}
AppVerName={#AppName} {#AppVerStr}
UninstallDisplayName={#AppName} {#AppVerStr}
VersionInfoVersion={#FileVerStr}
VersionInfoTextVersion={#AppVerStr}
OutputBaseFilename=MyApp-{#FileVerStr}-setup
علاوة على ذلك ، يمكنك إعادة توجيه الرموز إلى المترجم عبر /d
مفتاح سطر الأوامر ، على سبيل المثال:
iscc.exe /dSpecialEdition ...
ثم استخدمها لاحقًا في ifdef
S لإنشاء أنواع مختلفة من المثبت (يتبع مثال غبي):
[Registry]
#ifdef SpecialEdition
Root: HKLM; Subkey: Software\MyCompany\MyApp; ValueName: SpecialEdition; ValueType: dword; ValueData: 1 ...
#endif