この記事を手に取ってきただき、ありがとうございます。
なんちゃってエンジニア Mojatto でございます。
前回の記事で、最近本業で業務支援を目的としたデスクトップアプリを作っていると書きましたが、この前久々にFlutterでアプリ制作をしました。
実に学生時代にこそこそ作っていた、ツイート専用X(旧: Twitter)クライアントアプリ「Bulletter」以来のFlutterで、調べつつ思い出しつつ、楽しみながら制作に取り組んでいました。
初めてFlutterに触った当時は、微妙に独特な文法に慣れず、苦しみながら調べつつ取り組んでいた覚えがありますが、いろいろ経験を積んで時間を空けて触ってみると、意外と楽しく感じられるものです。
概要
このエントリでは、Flutter を用いて Windows 向けのデスクトップアプリを開発する場合に、自作アプリを起動時から管理者として実行を要求するように設定する方法について説明します。
Flutter そのものについては、kazutxt 様の Zenn 文書がわかりやすいかと思います。
気になった方は、ぜひチェックしてみてください。
このエントリでできるようになること
このエントリの内容を用いて、以下のようなことが実現可能となります。
- Flutterを用いて作成したデスクトップアプリを、管理者権限を要求するように設定する方法がわかる
- 作成したデスクトップアプリの実行時に、管理者権限を求める画面を表示させることができる
検証環境
このエントリは、以下の環境で検証を行っています。
項目名 | 内容 |
OS | Windows 11 Home(22H2) |
CPU | AMD Ryzen 7 7840U |
IDE | VisualStudio Code + Flutter Extension v3.82.0 |
SDK | Flutter 3.16.9 stable channel + Dart 3.2.6 + DevTools 2.28.5 |
準備するもの
このエントリでは、以下のものが準備できていることを前提とします。
- Windows PCにてFlutterの開発環境が整っていること
- Flutterを用いてある程度デスクトップアプリの開発が完了していること
- 制作したデスクトップアプリのビルドが通ること
手順
このエントリでは、プロジェクト新規作成時に生成されるテンプレートアプリを使用して、説明します。
このスクリーンショットを撮って気づきましたが、テンプレートのテーマがMaterial3を用いるようにデフォルトでフラグがTrueに設定されるようになったみたいですね。
1. CMakeLists.txt に管理者権限を要求する設定項目を追加する
プロジェクトの Runner フォルダにある CMakeLists.txt を編集し、アプリ起動時に管理者権限での実行を要求するように設定項目を追加します。
Windows 向けにアプリをビルド・実行する場合は、以下のパスにCMakeLists.txtが配置されているので、これをテキストエディタで開きます。<プロジェクトのルートディレクトリ>/windows/runner/CMakeLists.txt
CMakeLists.txt を開いたら、以下の記述を追加します。
これは、Windows 向けアプリケーションについて、常に管理者として実行させる(UAC、ユーザ・アカウント制限を通じてユーザ自身に管理者権限への昇格を求める)ための設定記述となります。
C#などでアプリケーションを開発する際に、アプリケーションマニフェストに記述する内容を、CMakeフォーマットで記述している形です。set_target_properties(${BINARY_NAME} PROPERTIES LINK_FLAGS "/MANIFESTUAC:\"level='requireAdministrator' uiAccess='false'\" /SUBSYSTEM:WINDOWS")
実際に記述した例が、以下の通りです。
2. アプリケーションをビルドする
CMakeLists.txt の編集が完了したら、通常通りアプリケーションを Windows 向けにビルドします。
PowerShell> flutter build windows
3. ビルドしたアプリケーションをビルドして動作を確認する
ビルドが完了したら、実際にアプリケーションを実行してみます。
通常では、Windows向けにビルドしたアプリケーションは、以下のパスに配置されています。<プロジェクトのルートディレクトリ>/build/windows/x64/runner/Release
アプリケーションの exe ファイルを確認してみると、管理者権限が必要であることを示す、盾マークが付与されています。
設定が正しく行われていれば、この exe ファイルをダブルクリックしてアプリケーションを実行すると、管理者権限での実行をするか確認する UAC のダイアログが表示されます。
そのままアプリケーションを実行し、自身が制作したアプリケーションのウィンドウが表示され、想定通りの動作が確認出来たら、作業は正常に完了しています。
参考文献
本件について議論されていた Github Issues
コメント