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。