Использование pkgmgr для установки IIS 7 - PullRequest
0 голосов
/ 04 февраля 2011

Я использую следующие пользовательские действия для установки IIS 7 с использованием .msi, если он еще не установлен в целевой системе. Я получаю следующую ошибку, и моя установка не удалась. Я использовал довольно много CA в моей MSI, и все работают хорошо. Однако для этого я не могу понять, в чем может быть проблема? Выполнение этой команды непосредственно в командной строке cmd прекрасно работает. Кто-нибудь может дать какие-либо предложения относительно того, что я делаю неправильно? Пожалуйста, совет

Целевая ОС: Windows 7 -32 бит

Код CustomAction:

<Property Id="INSTALLIISPROP" Value="[SystemFolder]"></Property>
  <CustomAction Id="InstallIISCA" Return="check" Property="INSTALLIISPROP" Execute="deferred" ExeCommand=" start /w pkgmgr /iu:IIS-WebServerRole;IIS-WebServer;IIS-CommonHttpFeatures;IIS-StaticContent;IIS-DefaultDocument;IIS-DirectoryBrowsing;IIS-HttpErrors;IIS-HttpRedirect;IIS-ApplicationDevelopment;IIS-ASPNET;IIS-NetFxExtensibility; IIS-ASP;IIS-ISAPIExtensions;IIS-ISAPIFilter;IIS-HealthAndDiagnostics;IIS-HttpLogging;IIS-LoggingLibraries;IIS-RequestMonitor;IIS-HttpTracing;IIS-CustomLogging;IIS-Security;IIS-WindowsAuthentication;IIS-RequestFiltering;IIS-IPSecurity;IIS-Performance;IIS-HttpCompressionStatic;IIS-WebServerManagementTools; IIS-ManagementConsole;IIS-ManagementScriptingTools;IIS-ManagementService;WAS-WindowsActivationService;WAS-ProcessModel;WAS-NetFxEnvironment;WAS-ConfigurationAPI;NetFx3"></CustomAction><InstallExecuteSequence><Custom Action="InstallIISCA" Before="InstallFinalize"><![CDATA[NOT Installed AND IISMAJORVERSION]]></Custom></InstallExecuteSequence>

Ошибка из моего файла журнала:

Ошибка 1721. Проблема с этим пакетом установщика Windows. Не удалось запустить программу, необходимую для завершения этой установки. Обратитесь в службу поддержки или к поставщику пакета. Действие: InstallIISCA, расположение: [SystemFolder], команда: start / w pkgmgr / iu: IIS-WebServerRole; IIS-WebServer; IIS-CommonHttpFeatures; IIS-StaticContent; IIS-DefaultDocument; IIS-DirectoryBrowsing; IIS-Http-HttpErrors; ; IIS-ApplicationDevelopment; IIS-ASPNET; IIS-NetFxExtensibility; IIS-ASP; IIS-ISAPIExtensions; IIS-ISAPIFilter; IIS-HealthAndDiagnostics; IIS-HttpLogging; IIS-LoggingLibraries; IIS-RequestMonitor; IIS-HttpTracing; IIS-CustomLogging; IIS -Security; IIS-WindowsAuthentication; IIS-RequestFiltering; IIS-IPSecurity; IIS-производительность; IIS-HttpCompressionStatic; IIS-WebServerManagementTools; IIS-ManagementConsole; IIS-ManagementScriptingTools; IIS-ManagementService; WAS-WindowsActivationService; WAS-ProcessModel; WAS-NetFxEnvironment; WAS-ConfigurationAPI; NetFx3

MOre Information: я использую следующий код, чтобы проверить, установлен ли IIS

<Property Id="IISMAJORVERSION"><RegistrySearch Id="IISInstalledVersion" Root="HKLM" Key="SOFTWARE\Microsoft\InetStp" Type="raw" Name="MajorVersion" /></Property><Condition Message="Error: This application requires IIS 7.0 to be installed. Please install IIS 7.0 and run this installer again.">IISMAJORVERSION</Condition>

На одном другом компьютере это условие выполняется, поскольку IIS не установлен. Но при использовании msi сообщение об ошибке отсутствует, а в файле журнала написано: MSI (s) (CC: F8) [15: 32: 00: 761]: Пропуск действия: Установить IISCA (условие ложно) ?? Как это может быть возможно.

Также создан альтернативный центр сертификации в C #, но он также не работает с ошибкой диспетчера пакетов Windows: сбой операции

[CustomAction]
    public static ActionResult InstallIIS(Session session)        
    {
        try
        {
            Process proc = new Process();
            string cmd = @"C:\Windows\System32\pkgmgr.exe";

            string cmdargument =
                @" start /w pkgmgr /iu:IIS-WebServerRole;IIS-WebServer;IIS-CommonHttpFeatures;
                IIS-StaticContent;IIS-DefaultDocument;IIS-DirectoryBrowsing;IIS-HttpErrors;IIS-HttpRedirect;IIS-ApplicationDevelopment;
                IIS-ASPNET;IIS-NetFxExtensibility;IIS-ASP;IIS-ISAPIExtensions;IIS-ISAPIFilter;IIS-HealthAndDiagnostics;IIS-HttpLogging;
                IIS-LoggingLibraries;IIS-RequestMonitor;IIS-HttpTracing;IIS-CustomLogging;IIS-Security;IIS-WindowsAuthentication;
                IIS-RequestFiltering;IIS-IPSecurity;IIS-Performance;IIS-HttpCompressionStatic;IIS-WebServerManagementTools;
                IIS-ManagementConsole;IIS-ManagementScriptingTools;IIS-ManagementService;WAS-WindowsActivationService;
                WAS-ProcessModel;WAS-NetFxEnvironment;WAS-ConfigurationAPI;NetFx3";

            proc = Process.Start(cmd, cmdargument);
            proc.WaitForExit();
            proc.Close();
        }
        catch (Exception objException)
        {
            // Log the exception
            MessageBox.Show("Error message:" + objException.Message);
        }
        return ActionResult.Success;
    }

Может кто-нибудь подсказать мне, как этого добиться? Искреннее спасибо!

Ответы [ 2 ]

3 голосов
/ 05 февраля 2011

Я понял это !!

Публикация решения на случай, если кому-то еще понадобится то же самое :-)

<Property Id="INSTALLIISPROP" Value="C:\Windows\System32\dism.exe"></Property> 
  <CustomAction Id="InstallIISCA" Return="check" Property="INSTALLIISPROP" Execute="deferred" HideTarget="yes"  Impersonate="yes" 
      ExeCommand="/Online /Enable-Feature /FeatureName:IIS-WebServerRole .....(all remaining parameters) />
2 голосов
/ 02 октября 2012

Не используйте "start / w pkgmgr" при инициализации "string cmdargument", так что ваш cmdargument будет:

cmdargument = @" /iu:IIS-WebServerRole;IIS-WebServer;IIS-CommonHttpFeatures;
                IIS-StaticContent;IIS-DefaultDocument;IIS-DirectoryBrowsing;IIS-HttpErrors;IIS-HttpRedirect;IIS-ApplicationDevelopment;
                IIS-ASPNET;IIS-NetFxExtensibility;IIS-ASP;IIS-ISAPIExtensions;IIS-ISAPIFilter;IIS-HealthAndDiagnostics;IIS-HttpLogging;
                IIS-LoggingLibraries;IIS-RequestMonitor;IIS-HttpTracing;IIS-CustomLogging;IIS-Security;IIS-WindowsAuthentication;
                IIS-RequestFiltering;IIS-IPSecurity;IIS-Performance;IIS-HttpCompressionStatic;IIS-WebServerManagementTools;
                IIS-ManagementConsole;IIS-ManagementScriptingTools;IIS-ManagementService;WAS-WindowsActivationService;
                WAS-ProcessModel;WAS-NetFxEnvironment;WAS-ConfigurationAPI;NetFx3";
...