2

WIX インストーラーが NETSH コマンドを静かに呼び出して、自己署名証明書を IP アドレス: ポートにバインドするようにしたいと考えています。

CAQuietExec が呼び出されていますが、NETSH コマンドが失敗します。

MSI (s) (C4:84) [16:19:50:455]: Executing op: CustomActionSchedule(Action=customQtExecRtBindCertToPort,ActionType=3137,Source=BinaryData,Target=CAQuietExec,CustomActionData="netsh" http add sslcert ipport=0.0.0.0:8080 certhash=2B2C23C6B1334F886B9FFD827D64BDC072BBEFD7 appid={123456-7890-12345-4567-AAABBBCCCDDDFFFF})
MSI (s) (C4:8C) [16:19:50:457]: Invoking remote custom action. DLL: C:\Windows\Installer\MSI87DB.tmp, Entrypoint: CAQuietExec
MSI (s) (C4:78) [16:19:50:457]: Generating random cookie.
MSI (s) (C4:78) [16:19:50:458]: Created Custom Action Server with PID 2588 (0xA1C).
MSI (s) (C4:38) [16:19:50:477]: Running as a service.
MSI (s) (C4:38) [16:19:50:479]: Hello, I'm your 32bit Elevated custom action server.
CAQuietExec:  
CAQuietExec:  SSL Certificate add failed, Error: 1312
CAQuietExec:  A specified logon session does not exist. It may already have been terminated.

指定されたログオン セッションが存在しません。すでに終了している可能性があります。

コマンド シェルからまったく同じコマンドを実行すると、成功します。

>SSL Certificate successfully added

私のコードはかなり単純です:

    <CustomAction
        Id="customQtExecRtBindCertToPortData"
        Property="customQtExecRtBindCertToPort"
        Value="&quot;netsh&quot; http add sslcert ipport=0.0.0.0:[RT_PORT] certhash=[CERT_THUMBPRINT] appid={123456-7890-12345-4567-AAABBBCCCDDDFFFF}"
        />
    <CustomAction 
        Id="customQtExecRtBindCertToPort" 
        BinaryKey="WixCA" 
        DllEntry="CAQuietExec"
        Execute="deferred" 
        Return="ignore" 
        Impersonate="no"
        />

Windows Server 2008 R2 で昇格された特権で実行しようとしましたが、それでも同じログ出力を受け取ります。

4

1 に答える 1

2

インストーラーを修正してカスタム コンソール アプリケーションを呼び出し、代わりに内部で NETSH (およびその他のタスク) を呼び出す試みの中で、実際の問題であると思われるものにたどり着きました。

私の CustomAction 宣言には Execute="deferred" および Impersonate="no" のプロパティが正しく設定されていますが、このリンクに記載されているように、その時点でのインストール シーケンスはInstallInitializeInstallFinalizeの間で発生するように正しく定義されていなかったと思います。 UAC パーミッションを要求しないでください

UAC とすべての楽しいものを使用して W2K12 にデプロイすると、同じエラーが発生し、カスタム アクション インストーラー シーケンスを次のように設定すると、定義された問題を克服することができました。

        <Custom
            Action="customQtExecRTBindCertToPortData"
            Before="InstallFinalize"
            >
            <![CDATA[NOT Installed AND CERTIFICATE_NEEDED = "TRUE" AND &featureServices = 3 ]]>
        </Custom>
        <Custom
            Action="customQtExecRTBindCertToPort"
            After="customQtExecRTBindCertToPortData"
            >
            <![CDATA[NOT Installed AND CERTIFICATE_NEEDED = "TRUE" AND &featureServices = 3 ]]>
        </Custom>
于 2013-08-16T13:35:11.530 に答える