ここまでサービスとアプリケーションプロジェクトによる、写真ファイルを振り分けするソフトを作成しました。
これらのソフトを配布するためにインストーラを作成します。
インストール後は、写真ファイルの振り分けまで確認します。
Setup Projectの作成
Visual Studio 2022のSetup Projectは拡張機能に含まれています。
Visual Studio 2022のメニューより「拡張機能」-「拡張機能の管理」を選択します。
拡張機能の検索枠に「setup」を入力します。
Microsoft Visual Studio Installer Project 2022を選択し、インストールを行います。
インストール完了後、写真振り分けソフトのソリューションを開き「追加」-「新しいプロジェクト」を選択します。
検索枠に「setup」と入力します。
Setup Projectを選択し、「次へ」をクリックします。
プロジェクト名は任意ですが、「setup_prj」としました。
「作成」をクリックします。
Setup Projectが作成され、デフォルトの画面が表示します。
ここに配布するファイルの追加や設定を行っていきます。
インストーラの作成
Setup Projectを操作して写真ファイル振り分けソフトのインストーラを作成します。
配布ファイルの登録
配布するファイルをSetup Projectに登録する前に、サービスと登録用アプリケーションの配布物・Release(リリース)を作成します。
メニューより「ビルド」-「構成マネージャー」を選択します。
構成マネージャー画面よりアクティブソリューション構成を「Release」に変更します。
サービスおよび登録用アプリケーションのプロジェクトがReleaseになることを確認し、「閉じる」をクリックします。
サービスおよび登録用アプリケーションのプロジェクトをビルドすると[bin]-[Release]フォルダにビルドファイルが出力されます。
こちらが配布するファイルです。
プロジェクト(setup_prj)を右クリックし、[View]-[ファイルシステム]の順に選択します。
File Systemウインドウにて[File System on Target Machine]-[Application Folder]を右クリックします。
[Add]-[ファイル]の順に選択します。
先ほどビルドしたサービスプロジェクトのReleaseフォルダより、実行ファイル(photo_sorting.exe)および(photo_sorting.config)の2ファイルを選択します。
Application Folderの一覧に追加されることを確認します。
このとき、依存関係ファイルも同時に追加されます。
同様にビルドした登録用アプリケーションのReleaseフォルダより、実行ファイル(setting_app.exe)および(setting_app.config)の2ファイルを選択します。
Application Folderの一覧に追加されることを確認します。
配布するファイルを設定できました。続けてアイコンファイルを追加します。
File Systemウインドウにて[File System on Target Machine]-[Application Folder]を右クリックします。
[Add]-[ファイル]の順に選択し、同様にアイコンファイルを選択します。
追加したアイコンファイル右クリックし、[プロパティウインドウ]を選択します。
プロパティよりExcludeをTrueに変更します。
こうすることでiconファイルは配布先から除外されます。
アイコンファイルはショートカットの指定などで使用します。
スタートメニュー登録
スタートメニューから起動するため、ショートカットを追加します。
User’s Program Menuを右クリックし、[Add]-[Folder]の順に選択します。
「New Folder #%d1」というフォルダが作成することを確認し、このフォルダを「写真振り分けソフト」にリネームします。
「写真振り分けソフト」フォルダを選択し、画面右の一覧を右クリックします。
[新しいショートカットの作成]を選択します。
Select Item in Project画面にて、Application Folderをダブルクリックします。
中の「setting_app.exe」を選択して「OK」をクリックします。
「Shortcut to %ssetting_app.exe」という項目が作成することを確認し、これを「登録用アプリケーション」にリネームします。
「登録用アプリケーション」を右クリックし、[プロパティウインドウ]を選択します。
Iconより(Blowse…)を選択します。
Icon画面にて「Blowse…」をクリックします。
Select Item in Project画面よりApplication Folderを選択します。
アイコンファイルを選択して「OK」をクリックします。
Current icon枠にアイコンが表示されることを確認し、選択して「OK」をクリックします。
サービスの登録
サービスはアプリケーションと異なりインストールで登録、アンイストールで削除する必要があります。
ソリューションエクスプローラーよりプロジェクト(setup_prj)を右クリックし、[View]-[カスタム動作]を選択します。
Custom Actionsを右クリックし、[カスタム動作の追加]を選択します。
Select Item in Project画面よりサービスプログラムの実態(photo_sorting.exe)を選択し、「OK」をクリックします。
photo_sorting.exeがそれぞれのカスタム動作に追加されます。
これでインストール・アンイストールするとサービスの追加と削除を行ってくれます。
ユーザーインタフェース
インストーラのユーザーインタフェースに関する部分を設定します。
プロジェクト(setup_prj)を右クリックし、[View]-[ユーザーインタフェース]を選択します。
User Interface画面より、[Install]-[インストールフォルダー]のプロパティウインドウを表示します。
InstallAllUsersVisibleをFalseにします。
すべてのユーザー/固有のユーザーのインストール選択が無くなり、すべてのユーザーにインストールが適用されます。
Startを右クリックし、[ダイアログの追加]を選択します。
Add Dialog画面にて[ライセンス条項]を選択し、「OK」クリックします。
追加した「ライセンス条項」を「ようこそ」の次に表示するよう、ドラッグアンドドロップして移動します。
ライセンス条項のプロパティウインドウを表示します。
LicenseFileの項目にて使用許諾書のファイルを指定します。
プロパティ設定
プロパティを設定して調整します。
プロジェクト(setup_prj)を右クリックし、[プロパティ]を選択します。
プロパティページにて「Prerequisites…」をクリックします。
必須コンポーネント画面にて、Microsoft.NET Framework 4.7.2(x86およびx64)がチェックされていることを確認します。
チェックされていない場合はチェックしてから「OK」をクリックします。
プロジェクト(setup_prj)を選択した状態でプロパティウインドウを開きます。
次のプロパティを変更します。
プロパティ | 値 | 説明 |
---|---|---|
AddRemoveProgramsIcon | アイコンを指定 | アプリケーションの追加と削除で表示するアイコン |
Author | s-sk | インストーラの作成者 |
Description | 写真振り分けソフト | インストーラの説明 |
InstallAllUsers | True | 全ユーザー共通/個別ユーザー |
Manufacturer | s-sk | アプリケーションの作成者 |
ProductName | 写真振り分けソフト | アプリケーションの名前 |
RemovePreviousVersions | True | 旧バージョンを削除する/しない |
Title | 写真振り分けソフト | インストーラのタイトル |
File SystemよりApplication Folderを右クリックし、[プロパティウインドウ]を選択します。
DefaultLocationを選択し、「[ProgramFilesFolder]¥PhotoSorting」と変更します。
DefaultLocationはデフォルトのインストールファイル配布先フォルダです。
動作確認
インストールから動作まで確認します。
プロジェクト(setup_prj)をビルドすると次の2ファイルを出力します。
setup.exeをダブルクリックするとインストーラが起動します。
「次へ」をクリックして先に進みます。
「ライセンス条項」の表示、使用許諾契約内容が確認できました。
[同意する]を選択し、「次へ」をクリックします。
インストールフォルダーの選択ではデフォルトのインストール先が正しいことを確認します。
また、すべてのユーザー/個別のユーザーの選択が出てこないことを確認します。
「次へ」をクリックします。
インストールの確認ではそのまま「次へ」をクリックします。
インストールが開始します。
ユーザーアカウント制御画面では「はい」をクリックします。
インストールの完了後に「閉じる」をクリックします。
サービス(photo_sorting)を確認すると「停止中」でした、インストール直後は自動で起動してくれませんでした。
OSを再起動して起動確認をします。
再起動後はサービス(photo_sorting)が起動しました。
スタートメニューより登録用アプリケーションを起動します。
どういうわけかアイコンが変わっていないですがそのまま進めます。
登録用アプリケーションが起動しました。
振り分けをテストする設定を行い、「更新」をクリックしてみます。
登録に失敗してしまいました。
このままでは先に進めないためログを確認してみます。すると、ログそのものが作成できていませんでした。
原因は登録用アプリケーションの起動ユーザーがインストール先フォルダの書き込み権限をもっていないため、ファイルアクセスに失敗していました。
一時的な回避策として、登録用アプリケーションを一旦終了後に「管理者起動」します。
再度書き込みを行い、正しく更新することができました。
振り分けのテストを行います。
整頓されず置きっぱなしの昔のデジカメファイル(2006ファイル:11GB)を振り分け元フォルダにコピーします。
30秒以上待機して・・・振り分けされる動きがありません・・・
再度ログを確認すると、振り分け以前に設定更新のログもありませんでした。(登録を上手く読み取っていない?)
どうやら登録ファイル(setting.json)が存在しない状態でサービスが起動すると、登録変更を検知できてない模様です。
原因調査は別の機会にして、登録ファイル(setting.json)を作成した状態でサービスを起動します。
今度は読み込みしました。
再度、デジカメファイルをコピーしてみると・・・振り分けが行われました。
一通りの動作確認ができましたので、アンイストールを確認します。
アプリケーションの追加と削除を表示します。
ここでも何故かアイコンが正しく変更していませんが、先に進みます。
写真振り分けソフトをアンイストールします。
アンイストールの確認メッセージで「はい」をクリックします。
インストール時と同様にユーザーアカウント制御では「はい」をクリックします。
アンイストールが開始します。
アンイストールが正しく行われました。
配布は「setup.exe」ファイルと「setup_prj.msi」ファイルを配ればよさそうです。
まとめ
4ステップに分けて写真ファイルを振り分けするソフトを作成してきました。
個人・無料の範囲でソフトを作成したのは初めてですが、作成する楽しみについて少しでも伝わっていただければ嬉しいです。
バグを含めて色々問題がありましたので、改善後にフリーウェア申請にもトライしてみようと思います。