Wix カスタム アクションが実行されないという問題があります。カスタム アクションが ActionResult.Success を返した場合でも、インストーラーは継続的にロールバックします。
カスタム アクション (C#)
[CustomAction]
public static ActionResult SetPermissionsToAppDataFolder(Session session)
{
return ActionResult.Success;
}
Wix のカスタム アクション定義
<!-- Custom Action -->
<Binary Id="CustomActionLibrary" SourceFile="$(var.CustomActionFolder)InstallerCustomActions.CA.dll" />
<CustomAction Id="CustomActionInstallDirectoryPermission"
BinaryKey="CustomActionLibrary"
DllEntry="SetPermissionsToAppDataFolder"
Execute="deferred"
Return="check" />
カスタム アクションを呼び出すインストール シーケンス
<!-- Install Sequences -->
<InstallExecuteSequence>
<Custom Action="CustomActionInstallDirectoryPermission" Before="InstallFinalize">NOT Installed</Custom>
</InstallExecuteSequence>
インストーラーは正常にコンパイルされるため、カスタム アクション ライブラリ ファイルを見つけるのに問題はありません。問題は、インストーラーがロールバックする前にインストールの最終段階に到達することです。インストール シーケンスでカスタム アクションの呼び出しを削除すると、インストーラーが完了します。
私の理解では、カスタム アクション CA.dll が最終的なインストーラーに組み込まれます。最初は、CA.dll をインストーラーと一緒に配布する必要があると考えていましたが、後でインストーラーがそれを最終的な .msi にコンパイルすることを発見しました。
http://www.codeproject.com/Articles/132918/Creating-Custom-Action-for-WIX-Written-in-Managedにあるコードを使用して、カスタム アクション ライブラリを「配線」しました 。
カスタムアクションが「成功」を返しても、何をしてもインストーラーを完了できません。どんな助けでも大歓迎です。