私のアプリケーションIISversion> = 10をインストールしていないwixインストーラでこの問題が発生しました。これはIISVersionで動作します< 10.起動条件、カスタムアクション、およびプロパティ
このリンクをgithubで見つけました。 https://github.com/wixtoolset/issues/issues/5276 このリンクは、IISRegistryversionが> = IISRequiredVersionの場合にActionResult.Successを返すカスタムアクションを追加することを示唆しています。 しかし、次のエラーが発生しています。この後、ログにエラーが発生します 処置:LaunchConditions
アクション開始12:46:02:LaunchConditions。 変数が設定されていないか、カスタムアクションが呼び出されていません。 私はカスタムアクションにいくつかのログを記録していますが、冗長でも何も記録していません。
この条件が評価される前に起動条件/カスタムアクションが呼び出されていることを確認するにはどうすればよいですか?誰でもお薦めできますか?
これはProduct.wxsそれは条件なしで動作
<InstallExecuteSequence>
<Custom Action="CA.DS.CreateScriptDirCommand" Before="InstallFinalize">
<![CDATA[NOT Installed AND (&Feature.DatabaseServer.Database = 3)]]>
</Custom>
<Custom Action="Iis.CheckInstalledVersion.SetProperty" Before="LaunchConditions" >
<![CDATA[NOT Installed AND &Feature.WebServer.WebServices = 3]]>
</Custom>
<Custom Action="Iis.CheckInstalledVersion" After="Iis.CheckInstalledVersion.SetProperty" >
<![CDATA[NOT Installed AND &Feature.WebServer.WebServices = 3]]>
</Custom>
</InstallExecuteSequence>
<Condition Message="This application requires IIS [Iis.RequiredVersion] or higher. Please run this installer again on a server with the correct IIS version.">
<![CDATA[Iis.IsRequiredVersion > 0]]>
</Condition>
<Fragment>
<CustomAction Id='Iis.CheckInstalledVersion.SetProperty' Property='Iis.CheckInstalledVersion' Execute='immediate' Value='' />
<!--Note: Changed "Execute" from "deferred" to "immediate", to avoid error "LGHT0204: ICE77: Iis.CheckInstalledVersion is a in-script custom action. It must be sequenced in between the InstallInitialize action and the InstallFinalize action in the InstallExecuteSequence table"-->
<!--Note: Changed "Impersonate" from "no" to "yes", to avoid warning "LGHT1076: ICE68: Even though custom action 'Iis.CheckInstalledVersion' is marked to be elevated (with attribute msidbCustomActionTypeNoImpersonate), it will not be run with elevated privileges because it's not deferred (with attribute msidbCustomActionTypeInScript)"-->
<CustomAction Id='Iis.CheckInstalledVersion' BinaryKey='B.WixCA' DllEntry='CheckInstalledIISVersion' Execute='immediate' Return='check' Impersonate='yes' />
<Component
</Component>
</Fragment>
[CustomAction]
public static ActionResult CheckInstalledIISVersion(Session session)
{
try
{
session.Log("* Starting to check installed IIS version");
const int IisRequiredVersion = 7;
string IISMajorVersionFromRegistry = session["IISMAJORVERSION"];
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 SC: {0}", ex.Message));
return ActionResult.Failure;
}
}
をどのように見えるかです。条件が実行される前に実行されます
興味深い!!。ありがとうございました。 – user575219
セッション["Iis.IsRequiredVersion"] = isRequiredVersion? "1": "0"; Iis.IsRequiredVersionは '1'または '0'のいずれかになる可能性があるため、条件は&Feature.WebServer.WebServices = 3 AND Iis.IsRequiredVersion> '0'にする必要がありますか? &Feature.WebServer.WebServices = 3 AND Iis.IsRequiredVersion> 0である必要がありますか? – user575219