0

私はフルタイムのプログラマーではありませんが、自分の仕事をサポートするツールを構築するために少しやらなければなりません。デプロイする必要があるアプリケーションの作成が完了しました。

構成時に「ローカル」フォルダー内のファイルを変更する必要があるため、「ClickOnce」を使用したくありません。私の理解では、[ビルド] メニューの [発行] オプションを使用すると、"ClickOnce" を使用していることになります。

私の調査によると、「これを行うには、ソリューションに 1 つ以上の展開プロジェクトを追加する必要があります」。次に、MSDN は、これを実現するには、[プロジェクトの追加] を選択し、[新しいプロジェクトの追加] ダイアログ ボックスで、[セットアップおよび展開プロジェクト] フォルダーを選択する必要があると述べています。

問題は、そのようなオプションがないことです?!

なぜこれが当てはまるのか、そして私がそれをどのように修正するのかについて、誰かが光を当てることができますか. 私は半日グーグルで過ごしましたが、先に進む方法が思いつきませんか?

プロジェクトとシステムの詳細は次のとおりです。

環境: Windows デスクトップ用の Visual Studio 2012 Express。
現在のプロジェクト: Windows フォーム アプリケーション。
操作システム: Windows 7 プロフェッショナル。

4

2 に答える 2

0

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

于 2014-12-18T22:16:29.550 に答える