2016-11-04 4 views
0

私のC#アプリケーション用のWiXインストーラでセットアップを作成しました。WiXインストーラでセットアップできません

私は、クラスのCustomActionを使用してSQLデータベースをインストールし、フォルダに権限を設定します。

あり、私のクラスは次のとおりです。

public class CustomActions 
{ 
    [CustomAction] 
    public static ActionResult AllowAppData(Session session){...} 

    [CustomAction] 
    public static ActionResult Install_SetupDataBase(Session session){...} 
} 

そしてproduct.wxs:

enter image description here

<Binary Id="CASetup.dll" SourceFile="$(var.SetupCustomAction.TargetDir)$(var.SetupCustomAction.TargetName).CA.dll" /> 
<CustomAction Id="CustomActionSetupAllow" BinaryKey="CASetup.dll" DllEntry="AllowAppData" Execute="immediate" /> 
<CustomAction Id="CustomActionSetupBase" BinaryKey="CASetup.dll" DllEntry="Install_SetupDataBase" Execute="immediate" /> 

<InstallExecuteSequence> 
    <Custom Action='CustomActionSetupAllow' After='InstallFinalize' /> 
    <Custom Action='CustomActionSetupBase' After='InstallFinalize' /> 
</InstallExecuteSequence> 

ビルドはOKですが、インストール時には、私がメッセージを持って行います

私はCustomActionSetupAllowと試してみました。 e。しかし、CustomActionSetupBaseと私はメッセージを得た。

どのようなDLLが見つからないのですか?そして私は参照をどこに追加すべきですか?

答えて

2

「実行できませんでした」というエラーは、それが欠落しているわけではありません。これはMSIファイルのバイナリテーブルにあり、実行するためにディスクにストリームアウトされます。このエラーは、ロードされずに実行されているか、クラッシュしていることを意味します。依存するDLLが見つからない可能性があります。

潜在的に深刻な問題は、カスタムアクション(CA)を即時にマークしたことです。これは、おそらく空のデータベースを作成するなど、何かがインストールされる前に実行されることを意味します。それとは別に、直前のCAを使用してSQL DBを作成すると、その後にインストールが失敗するため、DBはインストールされますが、製品はインストールされません。これは遅延カスタムアクション、理想的にはDBを削除するためのロールバックCAを使用して、ユーザーが再度インストールを実行できるようにする必要があります。問題がある場合は同じDBに再度入力しないでください。

他にも見たい領域があります。即時のCAは、インストールするユーザーの資格情報で実行され、昇格されないため、コードに昇格が必要な場合は失敗します。遅延CAはシステムアカウントで昇格して実行されるため、システムアカウントでSQL DBにアクセスすることが問題になる可能性があります。 CAのコードは、対話型テストと同じ環境ではないため、非常に守備的でなければなりません。これらの理由から、アプリを最初に実行したときに本当のインタラクティブな環境で実行されるスタートアッププログラムでこれを行う方がよい場合があります。

+0

私はカスタムアクションを 'After = 'InstallFinalize''とマークしました。両方のカスタムアクションは同じファイル.csにあります。 'CustomActionSetupAllow'だけを呼び出すとうまくいきますが、' CustomActionSetupBase'だけがエラーになります。私は最初の行にブレークポイントを挿入し、ブレークしません。潜在的なDLLがセットアッププロジェクトまたはカスタムアクションプロジェクトにありますか? –

+0

Damned私はばかです...私は 'CustomActionSetupBase'の前に' [CustomAction] 'フラグを削除していませんでした。私はそのエラーのために多くの時間を無駄にした。しかし、フラグが存在しない場合、このエラーが発生する可能性があります。ご協力ありがとうございます –

関連する問題