سؤال

ولدي ويندوز سهل القديمة نماذج التطبيق مع المثبت WIX، ويتم تثبيته لكافة المستخدمين إلى المجلد Program Files كما كنت تتوقع. المضيفين تطبيق الوظائف الإضافية باستخدام System.AddIn إطار .

ولأن الإطار System.AddIn يحتاج إلى الكتابة إلى بعض المجلدات خط أنابيب الوظيفة الإضافية (AddIns، AddInSideAdapters، AddInViews، Contracts وHostSideAdapters) أنا لا أعرف أفضل مكان لتثبيت الوظيفة الإضافية ل. لا أستطيع تثبيت لProgram Files لأن المستخدم ليس لديه إذن الكتابة، وإذا قمت بتثبيت إلى مجلد Application Data المستخدم ثم لن يتم تثبيت الوظائف الإضافية لمستخدمين آخرين.

وأنا أدرك أن هناك تضارب الاشتراطات هنا (يمكن للمستخدمين لا تعبث مع الوظائف الإضافية المستخدمين الآخرين، تحتاج الوظائف الإضافية ليتم تثبيتها لجميع المستخدمين وجميع المستخدمين بحاجة إذن الكتابة) ولكن ما هو أفضل عملية الطريق إلى اتخاذ؟

وإنه لأمر مخز أن الملفات يحتاج إطار System.AddIn لكتابة لا يمكن تخزينها بشكل منفصل في Application Data، ولكن ذلك يبدو أن وجود قيود على الإطار.

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

المحلول

وأنا أعلم سئل هذا السؤال قبل فترة طويلة، ولكن ...

هل حاولت Environment.SpecialFolder.CommonApplicationData؟

في ويندوز فيستا / ويندوز 7، وهذا المجلد هو: %ProgramData%. لست متأكدا 100٪ ما هو عليه في نظام التشغيل Windows XP، ولكن من المحتمل أن يكون %ALLUSERSPROFILE%.

في أي حال، يجب أن يكون هذا المجلد إذن لقراءة / كتابة وتكون هي نفسها لجميع المستخدمين.

لا تنسى لإنشاء مجلد فرعي لاسم الشركة / التطبيق الخاص بك:

string companyName = "My Company";
string folderPath = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
string path = Path.Combine(folderPath, companyName);

نصائح أخرى

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

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

ولكن انا على الارجح مجرد شيء مفقود.

هل المطلوبة لاستخدام المثبت WIX؟ ونشر التطبيق كحل clickonce وضع كل من خط أنابيب إلى المجلد بيانات المستخدمين التطبيق. بهذه الطريقة يمكن لكل مستخدم تبقي قائمة خاصة بهم من وحدات.

وهذا سيحصل أيضا حول تقييد مجلد للكتابة.

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