I am setting up an msi for this work project and I am trying to make IIS a pre-requisite.
I am new at this so I am not really sure what I am doing wrong. The problem I am facing now is that the error dialogue box keeps popping up no matter the iis version I state that's required. Below are the codes for the custom action and the product.wxs code.
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;
}
}
I am expecting to get no error messages but currently, I'm still getting error messages even though I have IIS 10.