6

.vdproj当社の製品は現在、vs 2010プロジェクトからの出力とマージモジュールの追加情報から作成されたファイルから作成された4〜5個のMSIを介してインストールされます。

VS2012がVSセットアッププロジェクトをサポートしなくなったため、InstallShieldとWIXを代替品として検討してきました(ああ、いや!)。他の何かを見つける必要があります。

私はInstallShieldを少し試してみましたが、実際にそれを理解することができませんでした。製品のインストールに加えて、インストーラーはデータベース名や場所などのいくつかのパラメーターも取り込む必要があります。できませんでした。この情報をInstallShieldプロジェクトに取り込む方法を見つけているようです-これはビジュアルスタジオ用のInstallSHield限定版を使用していましたが

どちらを使用するのが最適かわかりませんか?VDPROJからWIXまたはISに変換した経験のある人はいますか?

編集 WIXが最も簡単になりそうなので、私はそれを理解しようとしています。プロジェクトの出力をWIXインストーラーに送信したり、変数を作成したりするのに役立つ投稿が見つからないようです。(プラグインを使用せずに)

4

4 に答える 4

3

簡単な答えを出すのは難しいです。なぜなら、実際には、インストールのニーズを理解し、インストーラーを作成する技術のトレーニングをたくさん必要とする、非常に高度な質問をしているからです。

個人的には、100%WiX、100%InstallShield(LimitedEditionとPremiereEditionの両方)、および2つのブレンドのインストーラーがあります。

限定版は限定されていますが、それはまた、いくつかのことを本当にうまく行い、実際には存在しない、および/またはWiXで簡単に実装できるいくつかの機能を提供します。

良い戦略の1つは、InstallShield LEを単純なコンテナーとして使用してから、ほとんどのオーサリングをWiXで行うことです。このパターンについては、ブログで説明しています。

WindowsインストーラーXMLを使用したInstallShieldの拡張-証明書

InstallShield Professional以降には、VDPROJプロジェクトを移行するためのツールがありますが、注意して使用します。ほとんどのVDPROJインストーラーには恐ろしいオーサリングがあり、移行するよりもリファクタリングする方がよいでしょう。

于 2012-08-23T15:46:44.623 に答える
2

Wix#を見ることを強くお勧めします。http://www.codeproject.com/Articles/31407/Wix-WixSharp-managed-interface-for-WiXを参照してください。
CodePlexホームページも参照してください:http ://wixsharp.codeplex.com/

主にC#、Wix#でコーディングする開発者にとって、これはおそらく追加するのに最もシンプルで快適なスキルセットであり、無料でVisualStudio環境に直接統合されます。VisualStudio2012および2013で大成功を収めています。

アプリを展開するためにWindowsインストーラーMSIを作成する必要があるC#開発者にとって、Wix#は、MicrosoftがVS2012以降にVisualStudioから削除した「パッケージ化と展開」プロジェクトタイプのおそらく最良の代替品です。Wixは、WiX(WindowsインストーラーXml)ツールセットのC#フロントエンドです。Wix#を使用すると、C#言語で完全なWindowsインストーラーMSIを構築できます。

Wix#は、幅広いインストール/展開シナリオに役立ち、継続的インテグレーションシナリオに適度に役立ちます。Windowsデスクトップアプリケーションの展開、Windowsサービスのインストール、ASP.NET Webサイトのインストール、およびその他多くの種類のインストールのWix#の例があります。

Wix#は一般的なインストーラー要件を処理し、単純なプロジェクトのWix#インストーラーコードは確かに単純です。より複雑で高度な機能を必要とするアプリケーションのインストールの場合、Wix#は必要に応じて完全なWiXツールセットの機能を利用できます。たとえば、.NETアプリケーションをインストールする場合、一般的な要件は、アプリケーションのexeファイルとdllファイルをインストールし、ターゲットシステムにいくつかの.NET構成ファイルやレジストリエントリを調整することです。

以下は、ターゲットシステムにアプリケーションをインストールし、いくつかの構成ファイルを変更する単純なWix#インストーラーのC#コードの例です。この例では、「TailorMyConfig.exe」という名前のユーティリティ(ConfigurationManager.AppSettingsルーチンを使用する単純なC#プログラムなど)を作成し、このexeをアプリと一緒に展開していることを前提としています。

using System;
using System.Windows.Forms;
using System.Diagnostics;
using Microsoft.Deployment.WindowsInstaller;
using WixSharp;

class Script
{
    static public void Main(string[] args)
    {
        var project = new Project("MyProduct",
                          new Dir(@"%ProgramFiles%\My Company\My Product",
                              new File(@"Files\Bin\MyApp.exe"),
                              new File(@"Files\Bin\TailorMyConfig.exe")),
                          new ManagedAction("UpdateConfigFile"));

        project.Id = new Guid("6f330b47-2577-43ad-9095-1861ba25889b");

        Compiler.BuildMsi(project);
    }
}

public class MyCustomAction
{
    [CustomAction]
    public static ActionResult UpdateConfigFile(Session session)
    {
        if (DialogResult.Yes == MessageBox.Show("Config file update ready to run.\n Update config file(s) now?", 
                                                "Config Tailoring Utility",
                                                MessageBoxButtons.YesNo))
        {
            Process.Start("TailorMyConfig.exe", "Run utility to tailor config file to current system");
        }
        return ActionResult.Success;
    }
}

WiXXML機能を使用して構成ファイルを変更する「より良い」方法があることに注意してください。簡単にするために、上記の例では、構成ファイルを変更するためのカスタム作成されたC#exeユーティリティを想定しています。代わりに、これを行うためにWiXXML機能を使用することをお勧めします。「XMLインジェクション」のWix#手法を使用して、ほぼすべてのWiX XML機能をWix#セットアップに直接組み込むことができます。

Wix#は、WiX XML構文を出力する単なるC#フロントエンドであることを忘れないでください。Wix#がWiX XML(wxsファイル)を発行した後、そのwxsファイルを簡単に後処理して追加のWiXXML機能を挿入できます。次に、結果のwxsファイルがWiXツールセットによってMSIにコンパイルされます。

XMLインジェクションを使用してWiXXML機能をWix#(C#)インストールに組み込む例については、こちらをご覧ください。Wix#で、レジストリエントリのみを展開する場合に、ターゲットシステムに物理フォルダーを作成しないようにする方法を教えてください。 その質問では、デリゲートを「WixSourceGenerated」イベントに接続する手法を使用する私の回答を参照してください。

次に、このXMLインジェクションアプローチを使用して、構成ファイルの編集を実行するWiXXMLをインストーラーに挿入できます。構成ファイルを変更するためのいくつかの典型的なWiXXMLの例はここにあります: インストール中に.NET構成ファイルを変更する方法は?

インストーラーのもう1つの一般的な要件は、ターゲットシステムでWindowsレジストリエントリを追加または変更することです。Wix#は、「RegValue」クラスを使用してそれを直接サポートします。Wix#を使用すると、レジストリエントリをアンインストール/プレインストール状態に戻すなど、完全な「アンインストール」機能を無料で利用できるという利点があります。これは、WiXツールセットとWindowsインストーラテクノロジの上に構築されたWix#の自然な結果です。レジストリのみのWix#インストーラーの例は次のとおりです。Wix#で、レジストリエントリのみを展開するときに、ターゲットシステムに物理フォルダーを作成しないようにするにはどうすればよいですか。

Wix#アプローチは私の環境で非常に役立ち、WiX XMLインストーラーテクノロジの完全な複雑さに真っ向から飛び込むことなく、使い慣れたC#スキルセットを使用できます。

最初に受け入れられた回答は、このアプローチを提唱しました。

良い戦略の1つは、InstallShield LEを単純なコンテナーとして使用してから、ほとんどのオーサリングをWiXで行うことです。そのパターンについては、ブログで説明しています:http: //blog.iswix.com/2011/01/augmenting-installshield-using-windows_19.html

これは優れた実行可能なアプローチですが、ここで提案するアプローチには次の利点があります。

Wix#PLUSWiXアプローチを使用する利点

  • InstallShieldLEまたはその他の独自のインストーラー製品を扱う必要はありません
  • ほとんどのインストーラーはすべて、使い慣れたスキルセットであるC#コードで記述されています。
  • 完全なWiXツールセット環境を事前に学ぶ必要はありません。C#コードから始めて、XMLインジェクションを使用して、必要に応じて高度なWiX機能を追加できます。
  • このアプローチは継続的インテグレーション環境でうまく機能し、すべてのコンポーネントがビルドサーバーにXCopy-deployでインストールされ、すべてのコンポーネントがPowershellスクリプトなどのスクリプトによる自動化に非常に適しています。
  • MicrosoftがVisualStudioにバンドルされているインストーラーツールのコースを再度変更しても、影響はありません。

IS LE+WIXと共通の要素

  • WiXツールセット機能の上に構築されているため、WiXXMLのすべての機能をインストーラーに組み込むことができます
  • 展開の問題に対するWiXソリューションの多くの優れた「ハウツー」がSOやその他の場所で利用可能です
  • アンインストール機能とそのテクノロジのすべての優れた機能を備えた、本格的なMSIWindowsインストーラーを生成します。
  • インストーラーを作成するときは、WiXおよびWindowsインストーラーテクノロジについて詳しく知る必要があります。高度な機能では、多くの場合、WiXXMLにドロップダウンする必要があります。
  • どちらも、ほぼシームレスにVisualStudio環境に統合されています。(どちらかといえば、Wix#アプローチにはわずかな利点があります)

したがって、他のアプローチは実行可能なソリューションですが、VS2012、VS2013、VS201xの今後の悪化を最小限に抑える方法として、Wix#+WiXツールセットをお勧めします。おそらく最大の利点は、基盤となる展開テクノロジを変更して再度アプローチする必要がなく、Microsoftのマーケティングマネージャーがどのようなバックルーム取引を行っても、展開テクノロジを組み込んだり、プルしたりする必要がないことです VisualStudio。

于 2014-12-18T23:15:45.683 に答える
1

無料のツールの場合、WiXが最良の選択です。商用ツールにも関心がある場合は、高度なインストーラーを使用すると、スクリプトを作成しなくても、プロジェクトをはるかに高速に作成/変換できます。また、VDPROJをインポートするための事前定義されたプロジェクトテンプレートもあります。ダイアログエディタSQLスクリプト機能にアクセスする必要があるため、必要なものについてはエンタープライズライセンスが必要です。ただし、試用期間中にそれらすべてをテストできます。

于 2012-08-23T09:38:55.013 に答える
0

他のインストールシステム(NSISまたはInno Setup)に移動する場合は、次のVisual Studio拡張機能を試してください:http://visualstudiogallery.msdn.microsoft.com/5e57fe9a-ae5d-4740-a1c3-7a8e278e105b

于 2013-06-11T06:21:21.620 に答える