Bootstrapper: كيفية ترجمة التطبيق والمتطلبات الأساسية في حزمة .msi واحدة؟
-
05-09-2019 - |
سؤال
أنا أقوم بإنشاء حزمة .msi للتطبيق الذي يحتوي على شرط أساسي للتثبيت. أنا أستخدم bootstriapper Visual Studio 2005 لهذه المهمة. تحقيقا لهذه الغاية، قمت بما يلي: يقع المجلد C: Program Files Microsoft Visual Studio 8 SDK V2.0 bootstrapper Packages Packages وقم بإنشاء مجلد من المتطلبات الخاصة بي (جعلها هيكل نفس "DOTNETFX") ؛ أنشأ "product.xml" و "package.xml" ووضعها بشكل مناسب. حافظت على ملفات XML بسيطة للغاية حتى الآن لاختبار التثبيت:
product.xml.
<?xml version="1.0" encoding="utf-8"?>
<Product ProductCode="MyPrereq" xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper">
<PackageFiles CopyAllPackageFiles="false">
<PackageFile Name="MyPrereq.exe" />
</PackageFiles>
<InstallChecks>
</InstallChecks>
<Commands Reboot="None">
<Command PackageFile="MyPrereq.exe" EstimatedInstallSeconds="90">
<InstallConditions>
</InstallConditions>
<ExitCodes>
<ExitCode Value="0" Result="Success"/>
<DefaultExitCode Result="Fail" String="GeneralFailure" FormatMessageFromSystem="true" />
</ExitCodes>
</Command>
</Commands>
</Product>
package.xml.
<?xml version="1.0" encoding="utf-8"?>
<Package Name="MyPrereq" Culture="Culture" xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper">
<Strings>
<String Name="Culture">en</String>
<String Name="DisplayName">MyPrereq</String>
<String Name="GeneralFailure">A fatal error occurred. The installation failed.</String>
</Strings>
</Package>
الآن يمكنني إضافة المتطلبات الأساسية من القائمة وبناء مشروع الإعداد الخاص بي.
المشكلة:
إخراج البناء هو "Setup.exe"، حزمة "MyApp.msi"، بالإضافة إلى المجلد الفرعي يسمى "myprereq" يحتوي على "myprereq.exe".
أرغب في الإنشاء لإنشاء "Setup.exe" و "myapp.msi" واحد، والتي من شأنها أن تحتوي على "myprereq" داخل، مع عدم وجود ملفات / أدلة إضافية.
أعلم أن .NET Framework هو PREREQ آخر لتطبيقي، وهي مدرجة في نفس .msi، بحيث يجب أن تكون ممكنة بطريقة أو بأخرى.
كيف يمكنني تحقيق ذلك؟
المحلول
يمكنك إنشاء مثبت استخراج استخراج مع أدوات مثل iExpress (القادمة مع Windows) تحتوي على جميع الملفات في ملف واحد قابل للتنفيذ (انظر هذا ينشر ذلك).
لا يمكنك الحصول على ملف MSI تثبيت متطلباتها السابقة. أولا، نظرا لأن Windows Installer نفسه هو متطلب مسبقا (ويجب تثبيته بواسطة exe غير MSI) والثاني لأن تثبيتات Windows Installer هي معاملات ولا تدعم التنفيذ بالسلاسل لملفات MSI. هذا يعني أساسا أن تثبيت MSI لا يمكن بدء تثبيت MSI آخر. نتيجة لذلك، يجب تثبيت أي متطلبات مسبقة من قبل boottrapper منفصلة (بالمناسبة، لم تعد التثبيت المعاملات - لن يتم إلغاء تثبيت المتطلبات المسبقة إذا فشل تثبيت MSI الخاص بك).
يبدو أن هناك فهم أساسي من آلية bootstrapper على الرغم من. لا يمكن إنشاء bootstrapper إلا بواسطة Visual Studio أو MSBUILD. afaik لا يمكن مع wix. ابحث عن مهمة GenerateBootsTrapper في MSBUILD (انظر هذا ينشر ذلك).
نصائح أخرى
تمكنت من القيام بذلك مع iExpress.
كان لاستخدام خدعة صغيرة، ومع ذلك، ما هو موضح هناإنشاء bootstrapper لتطبيق قذيفة مقابل
لسوء الحظ، لا توفر مهمة MSBUILD الخيار للحصول على مورد تكوين يستخدم المثبتات المتطلبات الأساسية الموجودة في الدليل المستهدف، بحيث يجب عليك تحديث ملف المورد المناسب يدويا لإزالة المسار الثابت المشفر الذي يبحث عن المتطلبات الأساسية في الدليل الفرعي من نفس الاسم.
افتح برنامج Setup.exe في محرر موارد Visual Studio
انقر نقرا مزدوجا فوق المورد المسمى، setupcfg في مجلد 41
ابحث عن سلسلة "vs shell " وحذف الحوادث التي تظهر
حفظ ملف المورد وسيتم تحديث Setup.exe القابل للتنفيذ تلقائيا
تشغيل iExpress. قم بإنشاء حزمة جديدة عن طريق اتباع خطوات "معالج IExpress" وتأكد من تضمين الملفات التالية: myvsshellapplication.msi file. ملف bootstrapper setup.exe ملف vs_shell_isolated.enu.exe
كانت المشكلة هي أن Bootstrapper يضع المتطلبات الأساسية في مجلد فرعي، ولا يتعرف iExpress على المجلدات الفرعية. يجب أن تكون حذرا أثناء تحرير "Setup.exe" أيضا، لم تصبح صحيحة في المحاولة الأولى.