Bootstrapper: كيفية ترجمة التطبيق والمتطلبات الأساسية في حزمة .msi واحدة؟

StackOverflow https://stackoverflow.com/questions/567592

سؤال

أنا أقوم بإنشاء حزمة .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" أيضا، لم تصبح صحيحة في المحاولة الأولى.

    مرخصة بموجب: CC-BY-SA مع الإسناد
    لا تنتمي إلى StackOverflow
    scroll top