3

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にあるコードを使用して、カスタム アクション ライブラリを「配線」しました 。

カスタムアクションが「成功」を返しても、何をしてもインストーラーを完了できません。どんな助けでも大歓迎です。

4

1 に答える 1