web-dev-qa-db-ja.com

MSIを2回インストールしたい

マシンにmsiを2回インストールしたいという独特の願いがあります。二重インストールの目的は、最初に運用前フォルダーの下にインストールし、運用フォルダーにデプロイする前に安全な環境でデプロイメントを実行することです。

通常、これらの異なる環境を表すために別々のマシンを使用しますが、この場合、同じボックスを使用する必要があります。

私が得る2つのシナリオは次のとおりです。

  • プリプロダクションをインストールしました。満足しています。プロダクションをインストールしたいのですが、msiを実行すると、インストールを修復するか削除するかを尋ねられます。
  • 本番環境をインストールしました。新しいバージョンのmsiをインストールしたいのですが、製品のバージョンがすでにインストールされていると表示され、最初に現在のバージョンをアンインストールする必要があります。

最初のシナリオは、その時点で本番フォルダーの下で適切にアンインストールして再インストールできるため、それほど悪くはありませんが、2番目のシナリオは、実際の本番デプロイメントをアンインストールしたくないため、面倒です。

これを可能にするmsiexecに与えることができる設定はありますか?

私が使用できるより適切な異なるアプローチはありますか?

6
Don Vince

Scott WillekeのLessMsiérables(LessMSI)があなたのために何ができるか見てみましょう...

http://lessmsi.activescott.com/

これを使用して、MSIのガイドやコンテンツを抽出および変更し、必要に応じて「2回インストール」を再パッケージ化して実行します。

5
mctsonic

仮想化、真剣に

15
Chopper3

まったく同じMSIを2回インストールすることはできません。 might MSIを開き、GUIDを変更して、2回目にインストールできるようにすることができます。このようにドラゴンがいることに注意してください。あなたが非常に幸運であるか、インストール/製品が非常に単純でない限り、私はあなたの2番目のインストールが機能しないだけでなく、おそらく最初のインストールも壊すであろうことをほぼ保証できます。 1つのボックスを使用する必要があると思われる問題を解決することを強くお勧めします。

5
EBGreen

Windowsインストーラーには、「インスタンス変換」という目的を可能にする機能が組み込まれていますが、すべてのMSIの経験にもかかわらず、私はそれをあまり使用していません。これにより、MSINEWINSTANCEプロパティとコマンドラインで設定された変換を介して同じ製品を複数回インストールできます。

これがサードパーティアプリケーションの場合、仮想化アプローチを選択します)すでに推奨されています。 Microsoft App-V仮想パッケージ を使用してパッケージを仮想化できること、または通常のVMWareまたはVirtual PCの実装(仮想パッケージではなく仮想PC)。

Microsoft App-V仮想パッケージおよび新しい仮想化テクノロジにより、通常のアプリケーションと比較していくつかの新しいことが可能になります。

  • アプリケーションストリーミング-マシンにローカルインストールなし-JIT
  • 同じコンピューターで2つの互換性のないソフトウェアを使用する
  • サーバーを介した更新
  • ライセンスの制御-最大同時ユーザー数、またはソフトウェアをグループ/ユーザーに関連付けます。
  • アプリケーションをユーザーにすばやく簡単に提示する
  • Microsoftのその他のマーケティングはこちら

これが内部アプリケーションであり、開発チームと対話できる場合、実行可能な解決策は、事前インストールをインストールする2番目の開発MSIを構築することです。バージョンを製品バージョンと並べてリリースします。これらのMSIファイルは、文明的な方法で共存できるように作成する必要があります。これは実際には非常に複雑です-同じファイルの関連付けをめぐって争わない、異なる場所からシステム全体のCOMコンポーネントを登録しない、互いのレジストリキーを上書きしない、同じショートカットを使用しない、互いの設定ファイルを上書きしない( text、xml、iniなど)。多くの課題があります。

最後に、私たちが一般的に選択するアプローチでは、MSIに渡されたパラメーターに基づいて異なる構成をインストールさせることができます。したがって、CUSTOM_ENVIRONMENT = "DEV"というプロパティを使用して、アプリケーションのテストインスタンスをインストールできます。このアプローチは、さまざまなフレーバーでそれ自体をインストールできる単一のMSIに依存しているため、要求しているものと一致していないように見えます。

要約すると(私の主観的な好みの順に):

  1. Virtualize-この種の問題が全体を取り除くという事実が好きです。
  2. サイドバイサイドインストール:(サイドバイサイド共存が可能な複数のMSI PROD/DEV/UAT(内部アプリのみ
  3. インスタンス変換?(私が言ったように、それを使用していません-しかし、これはそれが役立つはずです)
  4. 環境対応MSI(PROD/DEV/UATとしてインストールできる単一のMSI)(内部アプリのみ

いくつかのリンク

5
Stein Åsmul

2回のインストールを停止するのは、「この製品は既にインストールされています」というメッセージを削除してインストールできるように変更した場合のProductCodeGuidです。これはインスタンス変換が実行していることですが、Orcaでインスタンス変換を開き、プロパティテーブルの製品コードを変更することで同じことができます。

明らかに、ハッキングして2回インストールしたとしても、同じ場所で上書きされないようにする必要があります。

0
user45778