VS2022 Setupプロジェクトにおけるエラーとその対処方法(3つの必要条件)

いいね・ストックで追記。***とにかくいいねの方向で***


WPFアプリケーションにおけるインストーラ制作において、```Microsoft Visual Studio Installer Projects 2022```を導入すると、フリーソフトによくあるインストーラを出力させることができます。


本稿では以下の記事を参考に、そのエラーとトラブルシューティングを提示する記事です。
可能な限りシンプルに行きましょう。

# 詳しい解説記事

https://qiita.com/Kosen-amai/items/44392fdf3bd8b56cfacb


https://zenn.dev/overdrive1708/articles/howto-vs2022-create-application-installer#%E6%8B%A1%E5%BC%B5%E6%A9%9F%E8%83%BD%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB



ハイレッツゴ。
<iframe width="560" height="315" src="https://www.youtube.com/embed/QheUXCPACPY?si=D1tnAd6anlJ2WTg0&amp;start=40" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>


# 必要条件1

・SetUpプロジェクト内の親プロパティ内で、Target FramewWorkとTarget Runtime ターゲットランタイムがセットアッププロジェクト内の```項目の公開```とのものと一致している


※後で判明したのだが「発行」側の設定は変えても問題なかった
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145714/4b018336-93d1-47c2-8031-623c18fe9a6d.png)


## 証明:試しに変更してビルドしてみる
とりあえず手っ取り早くSetUpプロジェクトのほうをソリューションのプロパティから変更する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145714/c2f5c9c4-1118-407a-82a7-f6fa1da2efd1.png)



→　X86に変更する（発行の設定と不一致）

以下出力結果
```sass:編集リクはノーサンキューで
23:11 でビルドが開始されました...
------ Starting pre-build validation for project 'HaruaConvert_Setup' ------ 
------ Pre-build validation for project 'HaruaConvert_Setup' completed ------
1>------ ビルド開始: プロジェクト: HaruaConvert_Setup, 構成: Release ------
Building file 'C:\git\HaruaConvert\HaruaConvert_Setup\Release\HaruaConvert_Setup.msi'...
WARNING: Configuration file 'C:\git\HaruaConvert\WpfApp3\obj\x64\Release\net8.0-windows10.0.22621.0\HaruaConvert.dll.config' is being used to configure all executables
WARNING: File 'HaruaConvert.exe' of project output '項目の公開 from HaruaConvert (Release x64)' targeting 'x64' is not compatible with the project's target platform 'x86'
ERROR: File 'HaruaConvert.dll' of project output '項目の公開 from HaruaConvert (Release x64)' targeting 'AMD64' is not compatible with the project's target platform 'x86'
WARNING: File 'HaruaConvert.dll' of project output '項目の公開 from HaruaConvert (Release x64)' targeting 'x64' is not compatible with the project's target platform 'x86'
WARNING: File 'HaruaConvert.exe' of project output '項目の公開 from HaruaConvert (Release x64)' targeting 'x64' is not compatible with the project's target platform 'x86'
ERROR: File 'HaruaConvert.dll' of project output '項目の公開 from HaruaConvert (Release x64)' targeting 'AMD64' is not compatible with the project's target platform 'x86'
WARNING: File 'HaruaConvert.dll' of project output '項目の公開 from HaruaConvert (Release x64)' targeting 'x64' is not compatible with the project's target platform 'x86'
Build process cancelled
========== ビルド: 成功 0、失敗 1、最新の状態 1、スキップ 0 ==========
=========== ビルド は 23:11 で完了し、02.566 秒 掛かりました ==========

```

ビルドは失敗している。

→もとに戻してみる

ビルドに成功。
```sass:部分的に抜粋
Packaging file 'NAudio.Midi.dll'...
========== ビルド: 成功 1、失敗 0、最新の状態 1、スキップ 0 ==========
=========== ビルド は 23:14 で完了し、15.991 秒 掛かりました ==========
```

シンプルですね。

## 必要条件２

 ```User's Desktop```


において、***```AlwaysCreateプロパティ```がTrueでなければならない。***

ハイレッツゴ。



#### ```User’s DeskTop```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145714/eb44502d-5f8c-404a-9ce0-a51faa1f255b.png)


***なんか即失敗した***
```sass:再編集なし
========== ビルド: 成功 0、失敗 1、最新の状態 1、スキップ 0 ==========
=========== ビルド は 23:34 で完了し、00.204 秒 掛かりました ==========

```


#### ```User's Program Menu```は？
    
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145714/b9b3e833-16f9-4230-9a5f-f5ea57a22f80.png)

前回のUser’s DesktopはTrueに戻す

→　普通に成功
※動作するかはまだ調べてません
　→念のためソリューションのクリーン
 　→　問題なく成功。（ちなみにクリーンを挟むと成功 2 と出る）



#### ```Application Folder``` は？
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145714/e4773784-2cf5-4c25-b4d0-384c08281108.png)


→Falseに変更する

    　→　***ビルド成功***
     　　→　ソリューションのクリーン
       　　　→　ビルド成功

※動作するかはまだ調べてません
いいね・ストックで追記。


### 必要条件3
***```プロジェクト出力```→```項目の公開```のランタイム設定が統一されていないと失敗する***


おそらく、```他の項目の公開```と一致してないといけないと考えてる
　→出力対象プロジェクトの「発行」設定は適当に変えてもビルド成功だったため。多分その辺は独立している。アプリが動作するかどうかは別

試しに```Release Any CPU```としてみる
Application Folder直下で試す


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145714/a07d3f0b-c169-4a8c-bd77-71b7673696fe.png)

ハイレッツゴ。

```sass:再編集不可
0:05 でビルドが開始されました...
------ Starting pre-build validation for project 'HaruaConvert_Setup' ------ 
------ Pre-build validation for project 'HaruaConvert_Setup' completed ------
1>------ ビルド開始: プロジェクト: HaruaConvert_Setup, 構成: Debug ------
Building file 'C:\git\HaruaConvert\HaruaConvert_Setup\Debug\HaruaConvert_Setup.msi'...
ERROR: Unrecoverable build error - 0x80004003
========== ビルド: 成功 0、失敗 1、最新の状態 1、スキップ 0 ==========
=========== ビルド は 0:05 で完了し、01.899 秒 掛かりました ==========
```

即失敗でした。



### その他わかったこと
**プロジェクト出力グループは複数あってもよい**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145714/f5bacdc0-9d95-46f4-b7c8-7efd3b02f52d.png)


適当に追加しても成功。
どの場所に追加してもよい。後々困るのかどうかは知らないが
ただしTarget Runtime等は一致させること



### プロジェクト出力グループを適当な場所に追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145714/cc88c7ee-0e37-446a-a736-fa527e4cde5b.png)

ターゲットランタイムは合わせないと失敗する、これは既知なので合わせる。

問題なく成功。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145714/d037f61e-1218-4f61-86e4-0cba5caa54ea.png)




## 「発行」するアプリケーションの設定は適当でもいい
（かなりたぶん）設定上は独立しているのでアプリが動作するかどうかに関係なく出力はされる。


x86とかに変える

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145714/1235aca5-d2a1-436d-b555-32a717f6d331.png)

 ここを再編集してターゲットランタイムを変えたりしてみる
 →新しいプロファイルが、SetUpプロジェクトで読み込んでいるものと一致しないため失敗。

 改めてﾊｲﾚｯﾂｺﾞ

 →ビルド成功。


 他の設定もいじってみたけど一応出力はされた。

 # あとがき
 アプリが動作するかどうかの知見はあくまで「発行(Publisher)」の設定に依存するようです。SetUpプロジェクト側はビルドに成功するかどうからしい。

 面白くなかったらBadボタン、チャンネル登録をお願いします。
 可愛いひつじ様お待ちしてます（他は要らんので）。

 あ、それとネタバレゲーム動画嫌いだったらごめんなさい（陳謝）