Wix# を見ることをお勧めします。 http://www.codeproject.com/Articles/31407/Wix-WixSharp-managed-interface-for-WiX。
アプリを展開するために Windows インストーラー MSI を作成する必要がある C# 開発者にとって、Wix# はおそらく、Microsoft が VS2012 以降の Visual Studio から削除した「パッケージ化と展開」プロジェクト タイプの最良の代替品です。Wix は、C# 言語で完全な Windows インストーラー MSI を構築できる WiX ツールセットの C# フロント エンドです。
すべてのインストーラーは、特定の場所にファイルをインストールし、セットアップ中にカスタム アクションを使用して、.config ファイルの場所を特定する (タグを実際の値に置き換える) 単純なプロジェクトであると具体的に述べました。
あなたが示すように、プロジェクトが実際に非常に似ていると仮定すると、Wix#はこのタイプの要件に適しています。1 つの典型的なプログラムに対して C# で適切な Wix# の例を作成し、置き換える追加の .vdproj インストーラーごとに 100 回 (または何回でも) クローンを作成します。さらに良いことに、T4 テンプレートを得意とするチーム メンバーがいる場合、それを使用して、最初の C# Wix# プロトタイプ インストーラーをテンプレートに変換するプロセスを自動化し、そのテンプレートを使用して残りの 99 個の .cs Wix# コード ファイルを残りのプロジェクトに使用します。
以下は、リクエストしている 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 機能を使用して構成ファイルを変更する「より良い」方法があることに注意してください。簡単にするために、上記の例では、構成ファイルを変更するためのカスタム作成の 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 構成ファイルを変更する方法は?
これはやや古い質問だと思いますが、私の検索で出てきたので、この追加の Wix# オプションを他の検索者に知らせたいと思います. Wix# のアプローチは私の環境で非常に役に立ち、使い慣れた C# のスキルセットを使用できるため、複雑な WiX XML インストーラー テクノロジに真っ先に飛びつく必要がありません。