Wix# を確認することを強くお勧めします。http://www.codeproject.com/Articles/31407/Wix-WixSharp-managed-interface-for-WiXを参照してください。C# や Wix# でコーディングを行っている場合、これはおそらく追加するのに最も簡単で快適なスキル セットであり、無料で、使用している Visual Studio 環境に直接統合できます。
Wix# の CodePlex ホームページの詳細情報: http://wixsharp.codeplex.com/
アプリを展開するために Windows インストーラー MSI を作成する必要がある C# 開発者にとって、Wix# はおそらく、Microsoft が VS2012 以降の Visual Studio から削除した「パッケージ化と展開」プロジェクト タイプの最良の代替品です。Wix は、WiX (Windows Installer Xml) Toolset の C# フロント エンドです。Wix# を使用すると、C# 言語で完全な Windows インストーラ MSI を構築できます。
Wix# は、幅広いインストール/展開シナリオに役立ち、継続的統合シナリオにかなり適しています。Windows デスクトップ アプリケーションの展開、Windows サービスのインストール、ASP.NET Web サイトのインストール、その他多くの種類のインストールの Wix# の例があります。
質問は、Windows 7 にアプリケーションをインストールする必要があると述べました。Wix# はこの環境をサポートし、典型的なインストーラー要件を処理します。単純なプロジェクトの Wix# インストーラー コードは実に単純です。より複雑で高度な機能を必要とするアプリケーションのインストールの場合、Wix# は必要に応じて完全な WiX Toolset の機能を活用できます。たとえば、.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;
}
}
WiX XML 機能を使用して構成ファイルを変更する「より良い」方法があることに注意してください。簡単にするために、上記の例では、構成ファイルを変更するためのカスタム作成の C# exe ユーティリティを想定しています。代わりに、これを行うために WiX XML 機能を使用することをお勧めします。「XML インジェクション」という Wix# の手法を使用して、ほぼすべての WiX XML 機能を Wix# セットアップに直接組み込むことができます。
Wix# は、WiX XML 構文を発行する単なる C# フロント エンドであることを思い出してください。Wix# が WiX XML (wxs ファイル) を発行した後、その wxs ファイルを簡単に後処理して、追加の WiX XML 機能を挿入できます。次に、結果の wxs ファイルが WiX Toolset によって MSI にコンパイルされます。
XML インジェクションを使用して WiX XML 機能を Wix# (C#) インストールに組み込む例については、ここを参照してくださいIn Wix#, how to avoid creating a physical folder on the target system, when deploy only registry entries?
その質問では、デリゲートを「WixSourceGenerated」イベントに接続する手法を使用する私の回答を参照してください。
次に、この XML インジェクション アプローチを使用して、構成ファイルの編集を行う WiX XML をインストーラーに挿入することができます。構成ファイルを変更する典型的な WiX XML の例は次のとおりです:
インストール中に .NET 構成ファイルを変更する方法は?
インストーラーのもう 1 つの一般的な要件は、ターゲット システムで Windows レジストリ エントリを追加または変更することです。Wix# は、「RegValue」クラスを使用して直接サポートを提供します。Wix# を使用する場合の利点は、レジストリ エントリのアンインストール/インストール前の状態への復帰を含む、完全な「アンインストール」機能を無料で利用できることです。これは、Wix Toolset と Windows Installer テクノロジの上に構築された Wix# の自然な結果です。レジストリのみの Wix# インストーラーの例は次のとおりです。
Wix# のアプローチは私の環境で非常に役に立ち、使い慣れた C# のスキルセットを使用できるため、複雑な WiX XML インストーラー テクノロジに真っ先に飛びつく必要がありません。