問題タブ [install-sequence]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wix - MSI インストール シーケンス - サービス開始前に DB スクリプトを実行
皆さん、
MSI のインストールでシーケンスの問題が発生しています。アプリの一部として、一連のサービスをインストールし、ユーザーがそれらをすぐに開始するか後で開始するかを選択できるようにします。
それらがすぐに開始されると、インストール シーケンスの初期段階 (データベース マネージャーがデータベースを更新する機会を得る前) に開始されているように見えます。
現在、データベース アップデーターを実行するカスタム アクションは次のようになっています。「InstallFinalize」の後に実行されています。プロセスの非常に遅い段階です。
インストールされたサービスが起動する前にDBスクリプトが実行されるようにするために、後または前に実行するより適切な手順は何ですか? 「BeforeServiceStart」ステップはありますか?
編集:
タグに「Before='StartServices'」属性を定義するだけでは、問題は解決しませんでした。
問題は次のとおりだと思います。カスタム アクションには条件を表す「内部テキスト」があり、この条件は「&DbUpdateManager=3」です。試行錯誤から推測できることから、これはおそらく「DbUpdateManager機能を公開する必要がある」ことを意味します。
さて、問題は次のとおりです。「PublishFeature」は、インストール シーケンスの最後、「InstallFinalize」の直前、間違いなく InstallServices / StartServices の後です。したがって、「Before=StartServices」要件を指定すると、「DbUpdateManager 機能を公開する必要がある」という条件がまだ満たされていないため、DbUpdateManager は実行されません :-(
条件を削除しようとしました-その場合、私の DbUpdateManager はまったく実行されないこともあれば、複数回実行されることもあります-いつ何が起こるかについての明確なパターンはありません.....
もっとアイデアはありますか?? 「InstallFiles」ステップの後に「DbUpdateManager機能がインストールされている」という条件を確認する方法はありますか??
マルク
wix - WiX - インストールシーケンスを把握しようとしています
大規模なアプリをインストールしています。その一部は、ターゲット データベースに対して SQL スクリプトを大量に実行するための「DbUpdateManager」と呼ばれるカスタム作成ツールです。
現在、WiX 2.x のインストールは機能していますが、1 つの欠点があります。インストール中に、必要に応じてすぐに開始できる Windows サービスもいくつかインストールします。ただし、DbUpdateManager がまだ実行されていない場合、これらは失敗します。
だから私が達成しようとしているのはこれです:
- MSI から DbUpdateManager とサービスをインストールする
- サービスを開始する前に DbUpdateManager を実行します。
現在の WiX ソースは次のようになります。
私はこの WIX を継承しましたが、動作しますが、前述したように、DbUpdateManager がプロセスの後半で呼び出されるため ("After=InstallFinalize" のみ)、サービスは最初は適切に起動しません (2 回目は正常に実行されます)。 DbUpdateManager の実行後に手動で再起動したときなど)。
MSI のドキュメントを少し調べたところ、「StartServices」と呼ばれる適切な手順が見つかりました。そのため、カスタム アクションの呼び出しを次のように変更することにしました。
残念ながら、この場合、何も起こりません.DbUpdateManagerは決して呼び出されません....
理由はありますか?MSI/WiX のデバッグは本当に大変で、もう木を見て森を見ているようには見えません....
ありがとう!マルク
編集:「RunDbUpdateManagerAction」は、MSIのInstallExecuteSequenceテーブルの正しい位置に配置されます-InstallServicesの直後、StartServicesの直前-それでも機能しません.... DbUpdateManager(Winformsユーティリティ)は実行中に表示されませんインストール:-(
編集 2: アクションが適切なタイミングで実行されているように見えます。残念ながら、ウィザードが表示されません :-( 表示されているのは、「MSI サービス開始できませんでした" - wtf ???
MSI (s) (2C:D8) [20:53:36:383]: アクションを実行中: RunDbUpdateManagerAction アクション 20:53:36: RunDbUpdateManagerAction。アクションは 20:53:36 に開始されました: RunDbUpdateManagerAction。MSI (s) (2C:D8) [20:53:36:383]: アクションを実行中: StartServices アクション 20:53:36: StartServices。サービスが開始されています 20:53:36 にアクションが開始されました: StartServices。アクションは 20:53:36 に終了しました: RunDbUpdateManagerAction。戻り値 1631。
wix - カスタムダイアログからコンポーネントに値を渡す方法
インストールするサービスを実行するアカウントをユーザーが構成できるカスタムダイアログを作成しました。これを行うには、 [アカウント]プロパティを設定するカスタムダイアログの[次へ]ボタンにプロパティイベントを添付します。
次に、サービスをインストールするコンポーネントでアカウントプロパティを取得しようとします。
私の問題は、インストーラーログのプロパティイベントによって正しい値が公開されていることを確認できても、このコンポーネントが[アカウント]に公開された値を使用しないことです。だから私の質問は、サービスインストーラコンポーネントがカスタムダイアログによって公開された[アカウント]値を確実に取得するようにするにはどうすればよいですか?
c# - WIX: セットアップがキャンセルされた場合、サービスを再起動しますか?
MSI のセットアップがユーザーによってキャンセルされた場合、サービスを再起動することはできますか?
MSI がサービスを再起動する必要があるシナリオが 2 つあります。
- 古いサービス ファイルを停止して更新し、サービスを開始します。サービスの開始に失敗した場合は、古いファイルを元に戻し、サービスを再起動します。【この部分はロールバックで行う】
- セットアップ プロセス中にMSI が意図的にキャンセルされた場合は、サービスを再起動します。
キャンセル時に を呼び出し、CustomAction
CMD.EXE を使用してサービスを再起動できる解決策がありますが、気に入りません。RestartResource
またはを使用するなど、他の解決策を提案してくださいResourceManager
コード:
wix - WIX インストール シーケンスで CA を動的に変更する
インストーラーで設定したプロパティに応じて、インストールの特定の時点で呼び出すカスタム アクションを決定すると、非常に便利です。
例えば; 異なるバージョンの SQL (具体的には SSRS 2005/2008R2) とのインターフェイスに別の DLL を使用する場合。
どの CA を実行する必要があるかを識別するアクション (インストーラーが指している SSRS バージョンを見つけることによって) は「即時」で実行され、実行されるかどうかの CA はこの結果に依存し、「延期」されると仮定します。
インストールの特定の部分で実行する遅延 CA を、インストール中に動的に変更するにはどうすればよいですか?..これは可能ですか?
((WiX 2.0 が推奨されますが、より高いバージョンの回答も受け入れられます))