在我维护的 Web 服务器安装程序中,我们跟踪安装程序是否安装了 IIS 7 和/或 ASP(在 Vista 或更高版本下),如果是,则将适当的值保存到注册表中。在卸载过程中,如果该值存在并且该计算机上没有其他网站正在使用 IIS,则会询问用户是否要删除 IIS/ASP。如果是这样,我们将删除我们安装的任何内容。
以下是我们启动以删除 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 参数,因为安装程序在安装结束时会在必要时重新启动。)我什至尝试将此命令输入到管理员级别的命令提示符(没有 /norestart 参数),但无济于事.
我们在安装过程中用来安装 IIS 7/ASP 的命令也同样长,而且它总是有效,所以我无法想象问题是卸载命令行太长。(为了验证这个理论,我什至尝试将命令分成两个命令,一个只删除 ASP 组件,一个删除其余组件。同样的问题,没有删除任何内容。)
是否有其他命令可以在 64 位系统上执行我们想要的操作?如果是这样,我们是否必须禁用 WOW64 重定向,它是否也适用于 32 位系统?(它只会在 Vista 和更高版本的系统上调用。在更早的系统上,我们依靠用户确保预先安装了 IIS 和 ASP。)