سؤال

أنا قادرة على تثبيت بنجاح تطبيق طرف ثالث عن طريق سطر الأوامر عن طريق العرف Inno Setup المثبت.

سطر الأوامر التنفيذ:

MSIEXEC.exe /x {14D74337-01C2-4F8F-B44B-67FC613E5B1F} /qn

Inno Setup الأمر:

[Run]
Filename: msiexec.exe; Flags: runhidden waituntilterminated; 
Parameters: "/x {{14D74337-01C2-4F8F-B44B-67FC613E5B1F} /qn";
StatusMsg: "Uninstalling Service...";

أنا أيضا قادرة على إلغاء تثبيت التطبيق برمجيا عند تنفيذ ما يلي C# كود في وضع التصحيح.

C# كود:

string fileName = "MSIEXEC.exe";
string arguments = "/x {14D74337-01C2-4F8F-B44B-67FC613E5B1F} /qn";

ProcessStartInfo psi = new ProcessStartInfo(fileName, arguments)
{
    CreateNoWindow = true,
    UseShellExecute = false,
    RedirectStandardOutput = true
};

Process process = Process.Start(psi);
string errorMsg = process.StandardOutput.ReadToEnd();
process.WaitForExit();

نفس التعليمات البرمجية C#, ومع ذلك ، تنتج التالية الفشل الناتج عند تشغيل المترجمة ، نشر خدمة Windows:

"This action is only valid for products that are currently installed."

تعليقات إضافية:

  • خدمة Windows التي تصدر الأمر إلغاء يعمل على نفس الجهاز كما رمز يجري اختبار في وضع التصحيح.ويندوز خدمة تشغيل/تسجيل الدخول كما حساب "النظام المحلي".
  • لدي استشارة طلبي سجلات و يجب التحقق من أن تنفيذ الأوامر الحجج thhe نفسه في كل التصحيح و وضع الإصدار.
  • لدي استشارة عارض الأحداث ولكنها لا تقدم أي أدلة.

الأفكار ؟ أي مساعدة سيكون موضع تقدير كبير.شكرا

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

المحلول 3

بفضل تلك التي تقدم المساعدة.ويبدو أن مشكلة أذونات.لقد قمت بتحديث الخدمة لتعمل تحت حساب مسؤول و كان قادرا على إلغاء تثبيت تطبيقات الطرف الثالث.إلى الجبار نقطة ، على الرغم من أن حساب النظام المحلي هو قوي حساب لديه حق الوصول الكامل إلى النظام -- http://technet.microsoft.com/en-us/library/cc782435.aspx -- لا يبدو أن لديك الحقوق اللازمة لأداء إلغاء التثبيت.

[انظر إضافية تعليق ل القصة الكاملة فيما يتعلق LocalSystem كونه قادرا على إلغاء تثبيت التطبيق الذي تثبيته.]

نصائح أخرى

الخطوة 1: التحقق من MSI خطأ في ملفات السجل

أنا أشك أن المشكلة بسبب تشغيل LocalSystem.

حساب "النظام المحلي" ليس من نفس حساب المستخدم العادي والذي يحدث أن يكون لديك حقوق المسؤول.فإنه لا يوجد لديه الوصول إلى شبكة الاتصال و التفاعل مع التسجيل و نظام الملفات مختلف تماما.

من الذاكرة أي طلبات القراءة/الكتابة إلى 'الوطن ' دليل' أو HKCU تحت التسجيل تذهب في الواقع إما إلى ملف تعريف المستخدم الافتراضي ، أو في حالة درجة الحرارة dirs, c:\windows\temp

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

MSI ملفات السجل لن تساعد إذا كان التطبيق لا تظهر "تثبيت" أقترح بدءا من التقاط الإخراج من MSIINV.EXE تحت حساب النظام الذي سوف تحصل "المخزون" من البرامج المثبتة حاليا (أو ما يراه المستخدم تثبيت) http://blogs.msdn.com/brada/archive/2005/06/24/432209.aspx

أعتقد أنك بحاجة إلى العودة إلى لوحة الرسم ومعرفة ما إذا كنت حقا في حاجة إلى خدمة windows للقيام إلغاء التثبيت.وربما كنت سوف تأتي عبر كل أنواع Vista UAC القضايا إذا كنت لم تقم بذلك بالفعل...

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

ولعل التطبيق في البداية لكل مستخدم بدلا من كل الجهاز ؟

@بول Lalonde

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

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

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