السماح ل ClickOnce بتثبيت برامج منشورة متعددة من نفس المشروع في نفس البيئة (إصدارات .NET Framework فقط)

تحديث الصفحة :
تاريخ إنشاء الصفحة :

بيئة فحص التشغيل

استوديو مرئي
  • فيسوال ستوديو 2022
.NET Framework
  • .NET Framework 4.8

البيئات المطلوبة

اطار
  • نماذج Windows (.NET Framework) بشكل عام
  • WPF (.NET Framework) بشكل عام

في البداية

توضح هذه التلميحات كيفية تثبيت عدة ClickOnce منشورة من نفس المشروع بشكل منفصل في نفس البيئة.

حول إجراء نشر نسخ متعددة من نفس المشروع في تكوينات مختلفة

على سبيل المثال، حتى في نفس المشروع، إذا تم تغيير محتويات المعالجة اعتمادا على تكوين الإنشاء، فقد ترغب في النشر كبرنامج منفصل. هذا ممكن في إصدار .NET (Core) ، ولكن ليس في إصدار .NET Framework مع الميزات القياسية ل Visual Studio.

يتم تلخيص هذه الطريقة في النصائح التالية باستخدام برنامج دفعي. يتم شرح هذه النصائح على فرضية اكتمال المحتويات التالية.

الشروط التي يتم بموجبها تثبيت ClickOnce كتطبيقات منفصلة

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

أحتاج إلى جعل هذا يبدو وكأنه تطبيق منفصل ، ولكن وفقا للمقالة المشار إليها ، تحدد المعلمات التالية التطبيق:

مرجع: (.NET) عندما أقوم بتشغيل التطبيق بعد النشر باستخدام ClickOnce ، أحصل على أن "معرف الموضع لا يتطابق مع الاشتراك"

  • اسم الطلب
  • الرمز المميز للمفتاح العام
  • ثقافة
  • بنية المعالج (على سبيل المثال، x86)

من بين هؤلاء ، أعتقد أنه من غير المرغوب فيه تغيير "الثقافة" و "بنية المعالج" لأن هناك إمكانية لنتائج معالجة غير مقصودة.

أعتقد أن هناك طريقة لتغيير "اسم التطبيق" ، في الأساس ، لا ينصح به لأنه يمكن إعطاء اسم واحد فقط لمشروع واحد. هناك احتمال أن يتم إجراء تعريفات متعددة عن طريق إنشاء معلمات التكوين والشرط في محتويات ملف المشروع ، نظرا لأنه يمكن تعيين واجهة مستخدم واحدة فقط في Visual Studio ، فهذا أمر خطير بعض الشيء لأنه قد يتم الكتابة فوقه اعتمادا على العملية.

الباقي هو "رمز مميز للمفتاح العام" ، ولكن هذا الرمز يسمح لك بإنشاء شهادات متعددة ، نظرا لأنه يمكن تحديده كمعلمة في وقت نشر ClickOnce ، أود تحديد التطبيق مع هذا الوقت.

إجراء فحص العملية

من نقطة إنشاء المشروع إلى النقطة التي يكون فيها جاهزا للنشر كملف دفعي ، فهو نفس النصائح التالية ، لذا يرجى الرجوع إليه لمعرفة الإجراء حتى تلك النقطة.

إنشاء شهادة

هذه المرة ، سوف نؤكد مع شهادة اختبار للعينة. في الأصل ، يجب أن يتم ذلك بشهادة عادية ، ولكن نظرا لأنه سيتطلب إجراء آخر غير الموضوع الرئيسي مثل إنشاء الشهادات وإعداد سلطة التصديق ، فسأستبعد الشرح المتعلق بالشهادات. في الإنتاج، لا بأس من استبدال ملف شهادة الاختبار بملف الإنتاج.

بعد إنشاء المشروع وإنشاء الدفعة للنشر، ارجع إلى Visual Studio. افتح خصائص المشروع واختر توقيع من القائمة الموجودة على اليمين. هناك شيك ل "توقيع بيان ClickOnce" لذا تحقق منه.

الآن قم بإنشاء شهادتين. هذه المرة سنقوم بإنشائه على هذه الشاشة ، ولكن ". pfx" تنسيق الملف، لا توجد مشكلة في إنشاء الشهادات بوسائل أخرى.

يوجد زر "إنشاء شهادة اختبار" في الزاوية اليمنى السفلى ، لذا انقر فوقه.

يمكنك أيضا وضع كلمة مرور ، ولكنها تعمل سواء وضعتها أم لا. ومع ذلك ، إذا كنت ترغب في وضع كلمة مرور ، فسيكون الإجراء مزعجا ، لذلك لن أضعه هذه المرة.

تم إنشاء ملف شهادة (.pfx) لمشروعك. تم إصلاح اسم الملف الذي تم إنشاؤه هنا ولكن يمكن تغييره لاحقا. بالمناسبة ، صلاحية شهادة الاختبار التي تم إنشاؤها هنا هي سنة واحدة. بعد عام واحد ، ستحتاج إلى إعادة إنشاء شهادة جديدة.

اتبع نفس الخطوات لإنشاء واحدة أخرى.

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

تعديل الدفعة

افتح الملف الدفعي الذي قمت بإنشائه (.bat) في محرر نصوص وأضف ما يلي إلى معلمات msbuild:

وصف اسم المعلمة مطلوب
ManifestKeyFile اسم الملف (.pfx) الخاص بالشهادة. حدد مسارا متعلقا أو مطلقا من ملف المشروع.
البيانشيةبصمة الإبهام بصمة إبهام شهادة البيان. يمكن أن تكون القيمة التي يجب وضعها في أي شيء ، ولكن يجب وضعها بكل الوسائل.
اسم المنتج اسم المنتج. يصبح اسم العرض لقائمة البدء أو قائمة البرامج.
اسم الناشر اسم الشركة العامة. يصبح اسم المجلد عند تنظيم البرامج في قائمة ابدأ.

بناء على ما سبق ، قم بتعديل ملف التصحيح على النحو التالي.

ينشر ClickOnceDebug .bat (مثال)

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /t:CopyPublishedApplication /p:Configuration=Debug /p:PublishUrl="publish\Debug\\" /p:InstallUrl="\\xxxxServer\publish_Debug\\" /p:ManifestKeyFile="ClickOnceMultipleInstallDebug.pfx" /p:ManifestCertificateThumbprint="Debug" /p:ProductName="CliclOnce テスト Debug システム" /p:PublisherName="Sorceryforce"

مشكلة ClickOnceRelease.bat (مثال)

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /t:CopyPublishedApplication /p:Configuration=Release /p:PublishUrl="publish\Release\\" /p:InstallUrl="\\xxxxServer\publish_Release\\" /p:ManifestKeyFile="ClickOnceMultipleInstallRelease.pfx" /p:ManifestCertificateThumbprint="Release" /p:ProductName="CliclOnce テスト Release システム" /p:PublisherName="Sorceryforce"

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

بالمناسبة ، نظرا لتثبيت برنامجين في نفس البيئة هذه المرة ، تمت إضافة معلمات بحيث ProductName يمكن تمييزها. PublisherName حسب رغبتك.

أصدر

بعد الإدخال ، قم بتنفيذ كل ملف دفعي ونشره.

إذا كان xxxx.application موجودا في الملف الذي نشرته، فافتحه في محرر نصوص وتأكد من أن لهpublicKeyToken قيمة مختلفة.

أقام

بعد نسخ الملفات المنشورة إلى المجلد العمومي ، قم بتشغيل تثبيتها setup.exe .

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

تم تثبيت البرنامج الأول وإطلاقه.

سأحاول تثبيت الآخر.

كما تم تثبيت الآخر وإطلاقه.

بالطبع ، كلاهما يعملان في نفس الوقت.

ProductName نظرا لأنه تم إرفاقه ، يتم عرضه بشكل منفصل في قائمة ابدأ.

يمكنك أيضا رؤية كليهما في قائمة التطبيقات.