私は何を間違っていますか??
あなたの答えが、WiX に何かをインストールする組み込みサービスを使用する必要があるというものである場合は、わざわざ答えないでください。私にとってはうまく機能せず、HEATed .wxs ファイルに XSLT 変換を適用したくありません。
私のログによると、両方のカスタム アクションを実行していますが、InstallAndStartServices は、「INSTALLFOLDER」が session.CustomActionData 辞書にないことを示しています。
<Binary Id="ServiceInstaller" SourceFile="DeploymentItems\ServiceInstaller.CA.dll" />
<CustomAction Id="SetInstallFolderForCA" Property="InstallAndStartServices" Value="INSTALLFOLDER=[INSTALLFOLDER]" Execute="immediate" Return="check" />
<CustomAction Id="InstallAndStartServices" BinaryKey="ServiceInstaller" DllEntry="InstallAndStartServices" Execute="immediate" Return="check" />
<InstallExecuteSequence>
<Custom Action="SetInstallFolderForCA" After="InstallFiles">NOT Installed</Custom>
<Custom Action="InstallAndStartServices" After="SetInstallFolderForCA"/>
</InstallExecuteSequence>
MSI (s) (78:DC) [15:31:47:745]: プロパティの変更: InstallAndStartServices プロパティを追加します。その値は「INSTALLFOLDER=C:\Program Files\My Product\」です。
MSI (s) (78:DC) [15:31:47:745]: アクションを実行中: InstallAndStartServices
MSI (s) (78:DC) [15:31:47:745]: 注: 1: 2205 2: 3: ActionText
アクション開始 15:31:47: InstallAndStartServices.
InstallServices の開始
カスタム アクションによって例外がスローされました: System.Reflection.TargetInvocationException: 呼び出しのターゲットによって例外がスローされました。---> System.Collections.Generic.KeyNotFoundException: 指定されたキーがディクショナリに存在しませんでした。
System.Collections.Generic.Dictionary`2.get_Item (TKey キー) で
Microsoft.Deployment.WindowsInstaller.CustomActionData.get_Item (文字列キー) で
string installFolder = session.CustomActionData["INSTALLFOLDER"];