سؤال

في برنامج تثبيت خادم الويب الذي أقوم بالحفاظ عليه، نتبع ما إذا كان المثبت قد قمت بتثبيت IIS 7 و / أو ASP (ضمن نظام التشغيل Vista أو إصدار أحدث) وحفظ قيمة مناسبة للسجل إذا كان الأمر كذلك. أثناء إلغاء التثبيت، إذا كانت هذه القيمة موجودة ولا توجد مواقع ويب أخرى تستخدم IIS على هذا الجهاز، فسيتم إزال المستخدم عما إذا كان سيتم إزال المستخدم أم لا. إذا كان الأمر كذلك، فإننا نزيل كل ما قمت بتثبيته.

فيما يلي الأمر الذي نطلقه من أجل إزالة IIS 7 و ASP (إضافته استراحة السطر من أجل الوضوح):

C:\Windows\system32\pkgmgr.exe /norestart /uu:IIS-WebServerRole;
IIS-WebServer;IIS-CommonHttpFeatures;IIS-StaticContent;
IIS-DefaultDocument;IIS-DirectoryBrowsing;IIS-HttpErrors;
IIS-ApplicationDevelopment;IIS-ASP;IIS-ISAPIExtensions;
IIS-HealthAndDiagnostics;IIS-HttpLogging;IIS-LoggingLibraries;
IIS-RequestMonitor;IIS-Security;IIS-RequestFiltering;
IIS-HttpCompressionStatic;IIS-WebServerManagementTools;
IIS-ManagementConsole;WAS-WindowsActivationService;
WAS-ProcessModel;WAS-NetFxEnvironment;WAS-ConfigurationAPI

يعمل هذا جيدا على أنظمة 32 بت ولكن لا يعمل على الإطلاق على أنظمة 64 بت، حتى مع تعطيل إعادة توجيه WOW64. (تجاهل المعلمة / نوريستارت، حيث يقوم المثبت بإعادة التشغيل في نهاية التثبيت إذا لزم الأمر.) لقد حاولت حتى إدخال هذا الأمر في موجه أوامر المستوى المسؤول (بدون المعلمة / norestart)، ولكن دون جدوى وبعد

الأمر الذي نستخدمه أثناء التثبيت لتثبيت IIS 7 / ASP هو طويل بالمثل، ويعمل دائما، لذلك لا أستطيع أن أتخيل أن المشكلة هي أن سطر الأوامر إلغاء التثبيت طويل جدا. (لاختبار هذه النظرية، حاولت حتى كسر الأمر إلى أوامرين، واحدة لإزالة مكونات ASP متبوعة فقط من قبل واحد لإزالة الباقي. نفس المشكلة، لم تتم إزالة أي شيء.)

هل هناك بعض الأمر الآخر الذي سيفعل ما نريده في أنظمة 64 بت؟ إذا كان الأمر كذلك، فهل علينا تعطيل إعادة توجيه WOW64، وسوف تعمل أيضا على أنظمة 32 بت؟ (لن يتم استدعاء فقط فيستا والأنظمة اللاحقة. على النظم السابقة، نعتمد على المستخدم التأكد من تثبيت IIS و ASP مسبقا.)

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

المحلول 2

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

نصائح أخرى

لست متأكدا من أن هذا ينطبق على مشكلتك، لكنني تعرضت للعض بشكل متكرر من خلال حقيقة أن برنامج 32 بت يصل إلى HKEY_LOCAL_MACHINE\SOFTWARE سيتم إعادة توجيه المفتاح على 64 بت ويندوز في الواقع إلى HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node مفتاح. إذا كنت تختلط 32 و 64 بت العمليات، فلن تتمتع عملية 64 بت بنفس طريقة العرض من السجل مثل عملية 32 بت.

لقد جربت العديد من الحلول بما في ذلك الواحدة المذكورة أعلاه. أنا بسيط لا يمكن إزالة IIS 7 على Windows Enterprise x64 انتهى أخيرا إعادة تثبيت IIS، ثم تعطيل المشرف IIS وخدمات النشر World World Web.

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