Условие IIS не проходит правильно с пользовательским действием - PullRequest
1 голос
/ 30 сентября 2019

Я настраиваю msi для этого рабочего проекта и пытаюсь сделать IIS обязательным условием.

Я новичок в этом, поэтому я не совсем уверен, что я делаю неправильно. Проблема, с которой я сталкиваюсь сейчас, заключается в том, что диалоговое окно с ошибкой продолжает появляться независимо от того, какая версия iis, как я заявляю, требуется. Ниже приведены коды для настраиваемого действия и код product.wxs.

Product.wxs

<PropertyRef Id="IISMAJORVERSION" />
<CustomAction Id='Iis.CheckInstalledVersion.SetProperty'
Property='Iis.CheckInstalledVersion' Execute='immediate' Value='' />
<Binary Id="CheckIis" SourceFile="..\CustomAction\bin\Debug\CustomAction.CA.dll" />
<CustomAction Id='Iis.CheckInstalledVersion' BinaryKey='CheckIis'
DllEntry='CheckInstalledIisVersion' Execute='immediate' Return='check' Impersonate='no' />
<InstallExecuteSequence>
   <Custom Action="Iis.CheckInstalledVersion.SetProperty" Before="LaunchConditions" />
   <Custom Action="Iis.CheckInstalledVersion" After="Iis.CheckInstalledVersion.SetProperty" />
</InstallExecuteSequence>
<Condition Message="This application requires IIS 7 or higher. Please run this installer again on a server with the correct IIS version.">
   <![CDATA[Iis.IsRequiredVersion > 0]]>
</Condition>

CustomAction.cs

public static ActionResult CheckInstalledIisVersion(Session session)
        {
            try
            {
                session.Log("* Starting to check installed IIS version");
                const int IisRequiredVersion = 0;

                string iisMajorVersionFromRegistry = session["IISMINORVERSION"];
                session.Log(string.Format("*!*! DEBUG; CheckInstalledIisVersion; IIS major version: {0}", iisMajorVersionFromRegistry));
                string iisMajorVersionNumeric = iisMajorVersionFromRegistry.Replace("#", string.Empty);
                int iisMajorVersion = int.Parse(iisMajorVersionNumeric, CultureInfo.InvariantCulture);

                bool isRequiredVersion = iisMajorVersion >= IisRequiredVersion;

                // Setting the required version as a custom property, so that it can be used in the condition message
                session["Iis.RequiredVersion"] = IisRequiredVersion.ToString(CultureInfo.InvariantCulture);
                // Setting the results of the check as "bool"
                session["Iis.IsRequiredVersion"] = isRequiredVersion ? "1" : "0";

                return ActionResult.Success;
            }
            catch (Exception ex)
            {
                session.Log(string.Format("CheckInstalledIisVersion; Error occured: {0}", ex.Message));
                return ActionResult.Failure;
            }
        }

Я ожидаю получитьсообщений об ошибках нет, но в настоящее время я получаю сообщения об ошибках, хотя у меня IIS 10.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...