コードに多くの問題があります。
ポリシーによってロールバックが無効になっている場合は処理されないコミットがスケジュールされています。
消費しているMSIがUI/実行プロセスを昇格させているによってブートストラップされていない場合、UAC/昇格された状況で失敗する可能性のあるUACになりすましています。setup.exe
system32
WINDOWSをWINDOWSと呼ぶ必要がないために存在しないか、OSプラットフォームに応じて32ビットまたは64ビットのシステムフォルダーである可能性があるフォルダーへのパスをハードコーディングしました。
リターンコードを無視しているため、これが失敗した場合でもインストールは続行されます。プラグを差し込んで誰かに祈る?
インストール中に、大きな醜い点滅する黒いコンソールウィンドウが表示され、「ああ、この男は自分が何をしているのかわからなかった」と叫びます。
EXEからログアウトすることは絶対にありません。
EXEカスタムアクションを直接呼び出すと発生する可能性のある問題に気付いていない可能性があります。
これらの懸念を理解するのに役立ついくつかの読み物があります:
ここで、車輪の再発明を行っている可能性があることにも触れておきますが、WiXの組み込みIISカスタムアクションでは、必要なバリエーションポイントが公開されていないようです。残念です。したがって、EXE呼び出しを修正するには、次の機能を確認することをお勧めします。
これは、 DOSボックスを点滅させずにEXEを呼び出し、MSIログに適切にログインし、MicrosoftのEXEに関する多くの懸念事項を修正する非常に洗練された方法だと思います。そこから修正する必要があるので、正しい32ビットまたは64ビットのappcmdを適切に解決できます。私のインストーラーは、64ビットのみのプラットフォームであるServer 2008 R2のみを対象としているため、コードは次のようになります。
(このコードは、InstallShieldが公開しないものを補強します...)
<CustomAction Id="SetIISAuthCAD"
Property="SetIISAuth"
Value=""[System64Folder]inetsrv\appcmd.exe" set config "Default Web Site/MyApplication" /section:system.webServer/security/authentication/windowsAuthentication /useAppPoolCredentials:true /commit:MACHINE/WEBROOT/APPHOST " />
<CustomAction Id="SetIISAuth"
BinaryKey="WixCA"
DllEntry="CAQuietExec64"
Execute="deferred"
Return="ignore"
Impersonate="no" />
<InstallExecuteSequence>
<Custom Action="SetIISAuth"
Before="InstallFinalize">Not Installed</Custom>
<Custom Action="SetIISAuthCAD"
Before="SetIISAuth">Not Installed</Custom>
</InstallExecuteSequence>