ClickOnce تطبيق عبر الإنترنت فقط باعتباره TS RemoteApp

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

  •  01-07-2019
  •  | 
  •  

سؤال

لقد حاولت كل شيء تقريبًا لتشغيل تطبيق ClickOnce VB.NET ضمن الخدمات الطرفية باعتباره RemoteApp.لدي ملف دفعي يقوم بتشغيل ملف .application للتطبيق.

يعمل هذا بشكل جيد عبر جلسة RDP لسطح المكتب على الخادم الطرفي.باعتباره تطبيق TS RemoteApp، حسنًا...ليس كثيرا.

أحصل على وميض سريع لموجه الأوامر (الملف الدفعي) على نظام العميل ثم ...لا شئ...

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

لقد وجدت ال technet.microsoft.com مناقشة حول مشكلة مماثلة، ولكن لا يوجد حل لها مدرج.

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

نحن نستخدم حاليًا RemoteApp في كل شيء آخر على ذلك الخادم، لذا آمل الالتزام بذلك إن أمكن.

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

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

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

المحلول

مفتاح تشغيله هو استخدام Windows Explorer "C:\windows\explorer.exe".هذه العملية هي العملية الأساسية عند تسجيل الدخول إلى جلسة كاملة.

إذا قمت بإعداد RemoteApp لاستخدام Windows Explorer ووسيطة سطر الأوامر للمسار إلى ملف .application لتطبيق ClickOnce، فسوف يعمل عند تشغيله كتطبيق بعيد.سيومض Windows Explorer لمدة ثانية عند بدء تشغيله، ولكنه سيختفي بعد ذلك سيتم تشغيل تطبيق ClickOnce.

نصائح أخرى

لماذا يجب أن يكون تطبيق ClickOnce؟سأفكر في مجرد نشر ملف exe والتجميعات.

أعرف أنه نصف الحل فقط، لكن إذا لم يتغير التطبيق كثيرًا، فقد يكون حلاً جيدًا.

أعتقد أن مشكلتك مرتبطة بحقيقة أن ClickOnce يحتاج إلى تخزين بياناته في مجلد مستخدم خاص يسمى ذاكرة التخزين المؤقت لتطبيق ClickOnce.على ما يبدو بسبب كيفية قيام الخدمات الطرفية بإعداد مجلدات المستخدم، لا يمكن لـ ClickOnce الوصول إلى هذا في وضع TerminalServices.

انظر هذا الرابط لمزيد من المعلومات.

http://msdn.microsoft.com/en-us/library/267k390a(VS.80).aspx

ربما لا توجد طريقة للقيام بذلك :(

هل يمكنك تشغيل ملف exe مباشرة؟إنه مدفون أسفل ملف التعريف الخاص بك في \AppData\Local\Apps\2.0[obfuscated Folders]، ولكن من المفترض أن تتمكن من العثور عليه.

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

واجهت نفس المشكلة هذا الصباح وتم حلها عن طريق نسخ دليل تطبيق clickonce من مجلد إعدادات المستخدم إلى مكان ما مثل c:\MyApp\ - أعرف أنه سيئ وليس مثاليًا جدًا..ولكن جيدة بما فيه الكفاية بالنسبة لي!

لقد واجهنا هذه المشكلة مؤخرًا وقررنا نشر تقرير خطأ حول هذه المشكلة إلى فريق تطوير Visual Studio.لا تتردد في التعليق على تقرير الشوائب.يجب أن يكون هناك خطأ في ClickOnce ناتج عن بعض التغييرات في Server 2008.

https://connect.microsoft.com/VisualStudio/feedback/details/653362/net-clickonce-deployment-not-working-as-remoteapp-or-citrix-xenapp-on-server-2008-server-2008-r2

لدينا أيضًا مناقشة في منتديات MSDN تغطي هذه المشكلة:

http://social.msdn.microsoft.com/Forums/en-US/winformssetup/thread/7f41667d-287a-4157-be71-d408751358d9/#92a7e5d9-22b6-44ba-9346-ef87a3b85edc

حاول استخدام RegMon وFileMon عند بدء تشغيل التطبيق - قد تتمكن من تعقبه وصولاً إلى مشكلة في إذن الملف و/أو التسجيل.

ربما يمكنك أيضًا التحقق من سجلات الأحداث لمعرفة ما إذا كان يتم تسجيل أي شيء عند فشل العملية.

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