Я настраиваю 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.