سؤال

أنا أقوم بإنشاء مشروع مثبت في الحل الخاص بي باستخدام WIX 3.8. كجزء من هذا التثبيت، أقوم بإنشاء بعض شروط الإطلاق، وهو واحد منها يتحقق من تثبيت Microsoft .NET Framework 4.5.1.

للقيام بذلك أريد استخدام بعض الخصائص في Lib WixNetFxextension التي يبدو أنها تعمل بشكل جيد للإصدارات القديمة من .NET Framework. هناك مثال على كيفية القيام بذلك على http://wixtoolset.org /Documentation/manual/v3/howtos/redistribaribles_nst_install_checks/check_for_dotnet.html هذا لا يعمل من أجل .NET 4.5.1 ولكن لا توجد خاصية NetFrameWork451 للتحقق.

تبحث في مصدر الوحدة النمطية NETFX451.WXS ( http://wix.codeplex.com/sourcecontrol/latest#src/ext/netfxextension/wixlib/netfx451.wxs ) يبدو أنه لا توجد خاصية منفصلة لاستخدامها في .NET 4.5.1، ولكن يستخدم أيضا نفس netframework45. كما أفهمها، V4.5.1 هي ترقية داخلية ل V4.5، لذلك يستخدم نفس مفاتيح التسجيل (أعتقد). على أي حال، في تلك الوحدة، يقومون ببساطة بالتحقق من رقم الإصدار الذي تم إرجاعه من NetFramework45 كما يلي:

giveacodicetagpre.

لذلك افترضت أن بإمكاني كتابة حالة مثل ما يلي:

giveacodicetagpre.

ولكن، أعاد هذا رسالة الخطأ على الجهاز الذي أعرفه يحتوي على تثبيت .NET Framework 4.5.1. لذلك قمت بإنشاء شرط مثل هذا حتى أتمكن من رؤية رقم الإصدار الذي يتم إرجاعه من السجل:

giveacodicetagpre.

يعرض هذا مربع رسالة بالنص التالي: # 378758 لذلك أعرف أن القيمة في السجل صحيحة.

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

هنا هو الإصلاح لتضمين رمز التجزئة كما اقترح بواسطة phildw:

giveacodicetagpre.

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

المحلول

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

أود أن أفترض أنه عندما يقوم أشخاص Microsoft بنشر أمثلة التعليمات البرمجية للكشف عن الإصدارات الإطارية، لا يمكن القيام بذلك باستخدام برنامج RegistrySearch بسيطة في ملف MSI.

http://blogs.msdn.com/B / ASTEBNER / أرشيف / 2013/10/17/10457758.aspx

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