2011-12-09 11 views
1

Wixに再インストールとInstallShieldインストーラが必要な状況があります。私は、正確な動作を実装しようとしているインターネット上の例題に問題があります。私は何をする必要があることは以下の通りです:Wix:Windowsサービスを登録してから起動する

ユーザーがVerifyReadyDlg(私はモンドを使用しています)とProgressDlg上の[インストール]ボタンをクリックするまで来る:

  • は(インストール場所に.exeファイルを呼び出します以前から存在している場合を含め、存在する場合は、インストールが存在する場合は、インストール
  • がMSIから)、前から()以前から(
  • ファイルのコピーを
  • の登録を解除したサービスをインストールした場所でサービスを停止します)をインストールします場所をインストールするサービス.exeのコピー
  • 前のダイアログにいくつかの編集コントロールからのリードデータとインストール場所
  • に今あるコピーの.xml設定ファイルの一部にデータを書き込む完了]をクリックすると、再び

サービスを登録します(ExitDlg)非常に最後のダイアログ上のボタンを私が行う必要があります。インストールした場所に

  • スタート再びサービス
  • コール(最初のものとは異なる).exeを

私はファイルをコピーした後にファイルにコピーしてデータを書き込むことができます...しかし、ウィックスはこれをやっています...私はそれをいつ行かせるかは教えていません。問題は、コピーアクションが開始される前に最初の.exe呼び出し、サービス停止と登録解除をスケジュールする必要があり、.xml設定ファイルが更新された後に再び登録することができることです。

私はInstallExecuteSequenceとServiceInstall要素を使用してCustomActionsと結びつけようとしていましたが、それは一緒ではありません。私は完全に間違った方法に近づいていると思います...私が行ったことを投稿する価値はありません。

どうすればよいですか?これはInstallSheildスクリプトで見た共通のパターンですが、このシーケンスを実行するWixの例は見つかりません。

ありがとうございました。マイケル 。

答えて

0

BeforeまたはAfterアトリビュートをCustom elementまたは標準アクションの要素を使用して、アクションのスケジュールを制御できます。

現在のインストールはMSIで行われていますか?はいの場合は、アップグレードのインストールを行い、既存の設定をコピーした後、他のインストールアクションを実行する前にRemoveExistingProductsをスケジュールすることができます。この方法で、以前のパッケージは独自のアンインストールロジックで削除され、更新パッケージをインストールすることができます。

以前のバージョンの設定を保存するには、RemoveExistingProductsが実行される前にアクションを実行する必要があります。

0

あなたはDLLファイルに出力することをあなたが作成したプロジェクトからC#で定義することをカスタムアクションを使用したい場合があります。あなたのWiXインストーラに

public static class CustomActions 
{ 
    [CustomAction] 
    public static ActionResult DoSomething(Session session) { 
     // Put C# code here that does what you describe, such as run an exe 
     // from the command prompt. 
     return ActionResult.Success; 
    } 
} 

インポートこのDLLを:

<!-- The custom action DLL itself.--> 
<Binary Id="WebAppCA" SourceFile="$(var.SolutionDir)..\WebAppInstallCustomActions\bin\Debug\WebAppInstallCustomActions.CA.dll" /> 

<!-- The custom action that does something that you can use. --> 
<CustomAction Id="DoSomething" 
        BinaryKey="WebAppCA" 
        DllEntry="DoSomething" 
        Execute="immediate" 
        Return="check" /> 

完全なソリューションをチェックしたい場合は、John Robbinsのブログ(link)のこのスレッドを参照してください...彼はIISサイトをインストールするWixインストーラを持っていますが、起動するとC#で定義されたカスタムアクションが使用されますウェブサイトのリスト

関連する問題