5

デプロイ用の Visual Studio インストーラー プロジェクト (vdproj) を含む 100 以上の Visual Studio C# / .net ソリューションがあります。これらは Visual Studio 2010 でビルドされています。

vs2012 はこれらのプロジェクト タイプをサポートしていないため、Visual Studio 2012 にアップグレードするには、これらの .vdproj プロジェクトを Wix に移行する必要があります。

これらのプロジェクトはほとんどが単純なプロジェクトであり、指定された場所にファイルをインストールします。セットアップ中にカスタム アクションを使用して、.config ファイルの場所を特定します (タグを実際の値に置き換えます)。

これらのプロジェクトを Wix に変換する最良の方法 (プロジェクトあたりの労力が最も少ない) は何ですか?

4

4 に答える 4

1

ここに私の反応を投稿します。より良いフォーマットと、私が説明したいことがいくつかあるためです。

あなたのコメントに対するあなたの応答で。回答には、誰かが powershell を使用して作成したスクリプトも含まれています。あなたができることは、プロジェクトをループしてスクリプトを実行する別のパワーシェルを作成することです。ただし、wxs-files しかないため、100 以上の wix プロジェクトを作成し、そのプロジェクトにファイルを追加する必要があります。

また、heat.exe を使用して、インストールするプロジェクトでビルド後のイベントを作成することもできます。たとえば(プロジェクトの微調整/変更が必要になる場合があります)

call "C:\Program Files (x86)\WiX Toolset v3.6\bin\heat.exe" project "$(ProjectDir)$(ProjectFileName)" -directoryid INSTALLDIR -pog Content -gg -scom -sreg -sfrag -out "$(SolutionDir)Installed\$(ProjectName).Content.wxs"

次に、出力ファイルを WiX プロジェクトにリンクして、ファイルまたは dll を追加するたびに自動的に再生成され、ファイルの同期が維持されるようにします。ここで必要なのは、すべての Wix プロジェクトで使用できる何らかの product.wxs テンプレートを作成することだけです。

ここでの解決策は、PowerShell と heat.exe を組み合わせて使用​​することだと思います。上記のコマンドを使用して、プロジェクトの wxs ファイルを生成できます。ただし、wix プロジェクトを追加する手作業は依然として必要です。

于 2012-10-30T20:25:43.050 に答える
0

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 インストーラー テクノロジに真っ先に飛びつく必要がありません。

于 2014-12-18T21:50:32.493 に答える