سؤال

يبدو الملفات

وWIX دائما لتشمل هذا السطر:

<Directory Id="TARGETDIR" Name="SourceDir">

ما هو "SourceDir"؟ ما يتم استخدامه ل؟ انها ليست اسم الدليل الحقيقي. هل هو نوع من قيمة سحرية؟

هل كانت مفيدة؟

المحلول

ومن: HTTP: // robmensching.com/blog/posts/2010/1/26/StackOverflow-what-does-NameSourceDir-refer-to

وبصراحة، انها شيء أننا يجب أن مخبأة من المطور ولكن لم يفعل ذلك. آسف. وحقيقة الأمر هي أن ويندوز المثبت تتوقع شجرة دليل على أن تتجذر دائما في صف واحد دليل حيث المفتاح الأساسي (دليل / @ ID) هو "TARGETDIR" والعمود DefaultDir (دليل / @ اسم) هو "SourceDir" .

وأثناء التركيب، TARGETDIR سوف الافتراضية لأكبر حملة على الجهاز. سيتم تعيين SourceDir للموقع حيث MSI ويجري تنفيذها. الآن، SourceDir هي صعبة بعد تثبيت الأولي لأنه لن يتم تعيين ما لم يتم استدعاء الإجراء ResolveSource. ومع ذلك، كنت لا تريد أن تدعو صراحة العمل ResolveSource لأنه من المحتمل أن يطلب منك أن تقدم وسائل الإعلام الأصلي المصدر (ويعرف أيضا باسم: إدراج CD، من فضلك).

وماذا ينبغي علينا القيام به في مجموعة أدوات WIX هو إزالة الحاجة إلى تحديد الزوج TARGETDIR / SourceDir ويقول "سيتم تلقائيا أي عنصر الدليل الذي لا يوجد لديه الأم أن أصليا لTARGETDIR لأن هذا هو ما يقوله SDK MSI القيام به." بدلا من ذلك، عليك أن تفعل ذلك بنفسك ... وبعض المشروعات الإنمائية يتساءل ماذا يعني كل هذا.

نصائح أخرى

ومن وثائق wix.chm، موضوع "كيفية: إضافة ملف إلى المثبت الخاص بك":

<اقتباس فقرة>   

والعنصر مع TARGETDIR هو معرف   مطلوب من قبل Windows Installer و   هو أصل كل دليل   هياكل التثبيت

واستنادا إلى وثائق MSDN TARGETDIR هو

<اقتباس فقرة>   

والدليل الوجهة الجذرية لل   تركيب

وأيضا وفقا لMSDN، SourceDir هو

<اقتباس فقرة>   

والدليل الجذر الذي يحتوي على   ملف الخزانة المصدر أو الملف المصدر   شجرة من حزمة التثبيت

وهكذا النقاط الملكية SourceDir إلى دليل حقيقي: واحد حيث يجلس ملف MSI الخاص بك. يمكنك ان ترى هذا في سجل المثبت عند تثبيت مع msiexec /lvx* installer.log installer.msi.

ولكن، لسبب ما يتم تجاهل SourceDir تماما عندما حل TARGETDIR. وTARGETDIR يجب إما تعيين بشكل واضح (على سبيل المثال على سطر الأوامر) وإلا فإنه يقرر ROOTDRIVE. إذا لم يتم تعيين ROOTDRIVE صراحة بعد ذلك هو جذر محرك أقراص مع مساحة حرة على الأكثر.

اختبار سريع يوضح أن تثبيت مكون إلى TARGETDIR الواقع يضع الملفات في جذور بلادي D: \ محرك الأقراص، بدلا من المجلد حيث يجلس MSI

لا شيء من هذا كان مفيدا حقا بالنسبة لي. لقد وجدت هذا الموضوع يتساءل كيف لجعل بناء تصحيح، حيث يمكن سحب ملفاتي المصدر (تلك الجارية في المثبت) إما من "يطلق" بناء دير أو "تصحيح" بناء دير للمشروع واني اسعى الى جعل المثبت ل.

وبعد بعض grepping، وجدت المسار الفعلي في ملف wixproj، هناك يعرف SourceDir على النحو التالي:

<SourceDir>$(SolutionDir)distribution\Release</SourceDir>

والتي لديها حقا أن تفعل مع ملفات التثبيت وملفات المشروع لا شيء. وكنت قادرا على إضافة PropertyGroup آخر عكست مجموعة الافراج الذي أشار الآن إلى ملفات التصحيح بلدي:

<SourceDir>$(SolutionDir)distribution\Debug</SourceDir>

وهذا الأمل يساعد شخص ما. وأنا أعلم أنه قليلا خارج الموضوع، ولكن نأمل أن يساعد شخص ما في المستقبل. لا يدري لماذا المكونات في المشروع لا يعرض هذه القيمة؟ أو أنا في عداد المفقودين ذلك؟

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