21

ユーザーが自分のコンピューターにインストールできるようにしたいWindowsC#コンソールアプリケーションに取り組んでいます。

Visual Studioに組み込まれているセットアップ展開ツールとして、独自のWindowsインストーラーを実行可能にしたいのですが、カスタマイズやドキュメントの機能がやや不足しているようです。

したがって、独自のWindowsインストーラーを作成したいので、プログラムを[プログラムの追加と削除]ウィンドウに登録して、必要に応じて再度アンインストールすることを選択し、インストーラープログラムを再起動して削除を行うにはどうすればよいですか。

また、実行可能ファイルは明らかにPC上のさまざまな場所にファイルをコピーする必要があります。つまりC:\Program Files、Windowsインストーラーの実行可能ファイル内に実行可能ファイルを保存して、正しい場所に移動できるようにするにはどうすればよいでしょうか。

これは可能ですか?

あなたが提供できるどんな助けにも感謝します。

4

5 に答える 5

38

プログラムを[プログラムの追加と削除]に登録するために使用するルーチンは次のとおりです。

private void CreateUninstaller()
{
    using (RegistryKey parent = Registry.LocalMachine.OpenSubKey(
                 @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", true))
    {
        if (parent == null)
        {
            throw new Exception("Uninstall registry key not found.");
        }
        try
        {
            RegistryKey key = null;

            try
            {
                string guidText = UninstallGuid.ToString("B");
                key = parent.OpenSubKey(guidText, true) ??
                      parent.CreateSubKey(guidText);

                if (key == null)
                {
                    throw new Exception(String.Format("Unable to create uninstaller '{0}\\{1}'", UninstallRegKeyPath, guidText));
                }

                Assembly asm = GetType().Assembly;
                Version v = asm.GetName().Version;
                string exe = "\"" + asm.CodeBase.Substring(8).Replace("/", "\\\\") + "\"";

                key.SetValue("DisplayName", "My Program");
                key.SetValue("ApplicationVersion", v.ToString());
                key.SetValue("Publisher", "My Company");
                key.SetValue("DisplayIcon", exe);
                key.SetValue("DisplayVersion", v.ToString(2));
                key.SetValue("URLInfoAbout", "http://www.blinemedical.com");
                key.SetValue("Contact", "support@mycompany.com");
                key.SetValue("InstallDate", DateTime.Now.ToString("yyyyMMdd"));
                key.SetValue("UninstallString", exe + " /uninstallprompt");
            }
            finally
            {
                if (key != null)
                {
                    key.Close();
                }
            }
        }
        catch (Exception ex)
        {
            throw new Exception(
                "An error occurred writing uninstall information to the registry.  The service is fully installed but can only be uninstalled manually through the command line.",
                ex);
        }
    }
}
于 2012-08-06T02:43:58.567 に答える
0

ClickOnceまたはMicrosoftインストーラテクノロジ(msi)を使用して、アプリケーションの展開を試すことができます。

于 2012-08-05T20:37:12.050 に答える
0

独自のインストーラーを作成するのではなく、 NSISInno SetupWiXなどの実績のある展開ツールを使用してください 。これらはすべて無料で、多くの機能を備えています。

于 2012-08-05T20:45:14.267 に答える
0

この場合、MSIインストーラーを使用することをお勧めします。これにより、パッケージの詳細(名前など)を制御できるようになり、クライアントでファイルをコピーする場所や、msiインストーラーの一部として含めるファイルを追加できるようになります。

于 2012-08-06T02:16:40.580 に答える
0

神の愛のために一度クリックを使用しないでください...それは価値があるよりも面倒です。マシンの管理者権限がなく、何かをインストールする必要がある場合は、許可を求める価値があります。

于 2016-03-08T15:55:50.483 に答える