質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%

Q&A

解決済

1回答

289閲覧

C# Windowsフォームのインストーラーを作成したが、ビルド後インストールしてもexeが生成されておらず実行できない

mysknj

総合スコア3

0グッド

1クリップ

投稿2024/11/11 17:28

編集2024/11/12 03:22

実現したいこと

正常に実行に必要なデータを生成できるインストーラーを作成したい。

前提

C#勉強中です。
現在visualstudioを使用してWindowsフォームでいくつかアプリを作っています。
ずっと以前作ったものの改良をしており今回とても久しぶりに新しいプロジェクトを作成してみましたが
以前と同じように以下を参照してインストーラーを作成してみた所、インストーラーのビルド自体は成功した(失敗0だった)のですが、作成したインストーラーを実行したところ、インストール先のフォルダを確認しても「プロジェクト名.dll」と「プロジェクト名.runtimeconfig.json」が一つずつとパッケージングした音声ファイル等のみが生成されており、exeやその他NuGetのデータ等が生成されておりませんでした。なので生成したプライマリ出力のショートカットを開こうとしてもdllを開こうとします。

また、確認したところインストーラーのビルド後のFils Systemのプライマリ出力の項目に赤波線が引かれていました。

こちら色々と調べてインストーラーを削除後再度作成したり、setupwizardのほうを試してみたりしましたが解決しませんでした。
こちら何か解決方法はないでしょうか?

▼インストーラー作成に参照したサイト
https://www.osadasoft.com/visual-studio-2022%E3%81%A7%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%A9%E4%BD%9C%E6%88%90/

発生している問題・エラーメッセージ

ビルド後のこちらはエラーメッセージなのでしょうか

WARNING: Including primary output of project 'プロジェクト名.csproj' with target framework '.NETCoreApp v8.0' may result in incomplete content. See here: https://go.microsoft.com/fwlink/?linkid=2112157

試したこと

・インストーラーの再インストール
・setupwizard
・プライマリ出力を削除後サイト追加

補足情報(FW/ツールのバージョンなど)

C#
visualstudio(最新Ver)
Windowsフォーム
▼よくわかっていませんが関係ありそうな情報
ターゲートフレームワーク:.NET8.0
ターゲットOSバージョン:8.0

この辺はよく理解していないため、プロジェクト作成時はとにかく最新のものにしてますが、ちゃんと状況に応じて使い分けないとこういうことが起こりうるのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

odataiki

2024/11/11 23:37

(Dell → dllのことだと仮定しますが) プロジェクトを右クリック>プロパティ>アプリケーション>出力の種類 がWindowsフォームアプリケーションではなく クラスライブラリになっているのではないでしょうか?
mysknj

2024/11/12 03:28

訂正ありがとうございます!間違ってました。 出力の種類はWindowsフォームアプリケーションになっていたのでそちらが原因ではないようです。 また、インストーラー実行時のインストール先に生成されたデータですが、抜けていたので追記しています。 すいません。「プロジェクト名.runtimeconfig.json」というのも生成されていました。
mysknj

2024/11/12 05:05

nonoshuさん dodox86さん お二人ともご回答ありがとうございました!
guest

回答1

0

ベストアンサー

インストール先のフォルダを確認してもDellが一つとパッケージングした音声ファイル等のみが生成されており、exeやその他NuGetのデータ等が生成されておりませんでした。なので生成したプライマリ出力のショートカットを開こうとしてもDellを開こうとします。

"Dell"ではなく、.NETアセンブリの"DLL"ファイルですね。.NETアセンブリの*.dllファイルは、dotnetコマンドを使用することで起動することができます。

実行例:

cmd

1C> dotnet "C:\Program Files (x86)\Default Company Name\Setup1\WinFormsApp1.dll"

しかしながら質問者さんのケースではnugetのパッケージも別に使っているようなので、そのままでは実行できないでしょう。

本題ですが、Setupプロジェクトについて、.NETのプロジェクトの場合は「プライマリ」出力ではなく、「項目の公開」を使用することで適切にインストーラーが作成できます。
イメージ説明
参考にされたサイト様の記事「Visual Studio 2022でインストーラ作成 - OdaSoft」には、以下の注意事項の記載がありますね。

※.NET(Core)の場合は、[Add]>[ファイル]で、自分でファイルを選ぶ必要がある。

記事中の画像を確認すると「Microsoft Visual Studio Installer Project 2022」のバージョンは古い2.0.0 のようです。これは、現在は2.0.1に更新されています。このバージョンで「項目の公開」が追加されたのかもしれません。

確認のテストの為、.NET 8.0のWindows Formsアプリケーションでnugetのパッケージ「ZXing.Net.Bindings.Windows.Compatibility(バージョン: 0.16.12)」を使用したアプリを作成してみました。これをSetupプロジェクトの「項目の公開」で追加すると、インストール先には必要なパッケージのファイルを含め、ランチャーであるEXEファイルもインストールされます。

イメージ説明

尚、このWinFormsApp1.exe を実行すると、下図のようなQRコードを作成する画面が表示されます。

イメージ説明

インストーラーのプロジェクトで適切にショートカットを作成すれば、そこから「C:\Program Files (x86)\Default Company Name\Setup1\WinFormsApp1.exe」を起動できるでしょう。

使うことは無いでしょうが、もちろんdotnetコマンドで.NETアセンブリのdllを指定しての実行もできます。

cmd

1C> dotnet "C:\Program Files (x86)\Default Company Name\Setup1\WinFormsApp1.dll"

せっかくなので、おまけで確認用に書いたソースコードも載せておきます。

C#

1using ZXing; 2using ZXing.Common; 3using ZXing.Windows.Compatibility; 4 5namespace WinFormsApp1 6{ 7 public partial class Form1 : Form 8 { 9 public Form1() 10 { 11 InitializeComponent(); 12 13 textBox1.Text = "hogefuga"; 14 } 15 16 private Bitmap GenerateQRcode(string text, int width, int height) 17 { 18 var qrWriter = new BarcodeWriter() 19 { 20 Format = BarcodeFormat.QR_CODE, 21 //Options = new EncodingOptions { Height = 100, Width = 100, Margin = 0 }, 22 Options = new EncodingOptions { Height = height, Width = width, Margin = 0 }, 23 }; 24 25 return qrWriter.Write(text); 26 } 27 28 private void button1_Click(object sender, EventArgs e) 29 { 30 var result = GenerateQRcode(textBox1.Text, pictureBox1.Width, pictureBox1.Height); 31 pictureBox1.Image = result; 32 } 33 } 34}

念の為、当方の確認/実行環境を追記しておきます。

(1) 環境

(2) テスト用に作ったアプリについて

投稿2024/11/12 03:33

編集2024/11/12 03:50
dodox86

総合スコア9254

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mysknj

2024/11/12 05:03

ご回答いただいた通り、「プライマリ」出力ではなく、「項目の公開」を選択することで正常に動作するインストーラーが作成できました! 参照サイトの注意事項は覚えてましたが、知識不足で自分は該当しないと思ってました。.NET(Core)について調べてみます… 以前から同じやり方でWindowsフォームのみ作成しており、いつもと同じやり方でできるはずとばかり思っていました。 詳細な説明とおまけの確認用ソースもありがとうございます!QRコードって簡単に取得できるんですね! いつか使えそうな知識も増えて助かりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問