diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index be6fb77..a1eb0df 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -90,17 +90,27 @@ jobs:
- name: Run build_runner
run: dart run build_runner build --delete-conflicting-outputs
- - name: Build Windows app
- run: flutter build windows --release
+ - name: Install fastforge
+ run: dart pub global activate fastforge
- name: Create MSIX package
- run: dart run msix:create
+ run: fastforge package --platform windows --targets msix
- name: Upload MSIX artifact
uses: actions/upload-artifact@v4
with:
name: scrcpy_buddy_msix
- path: build\windows\x64\runner\Release\scrcpy_buddy.msix
+ path: dist\**\*.msix
+ if-no-files-found: error
+
+ - name: Create Inno Setup EXE
+ run: fastforge package --platform windows --targets exe
+
+ - name: Upload Inno Setup EXE artifact
+ uses: actions/upload-artifact@v4
+ with:
+ name: scrcpy_buddy_exe
+ path: dist\**\*.exe
if-no-files-found: error
build-macos:
diff --git a/README.md b/README.md
index bd3c22b..90d084b 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,4 @@
+
@@ -9,46 +10,41 @@
alt="scrcpy v3.3.4"/>
-# scrcpy buddy 🤝
-
-
-
scrcpy buddy is a clean, minimalist Flutter-based desktop application that provides an intuitive graphical interface
for [scrcpy](https://github.com/Genymobile/scrcpy), the popular Android screen mirroring and control tool. Built with
Fluent UI design principles, it brings a polished, native desktop experience to managing your Android devices across
Windows, Linux, and macOS.
-* [scrcpy buddy 🤝](#scrcpy-buddy-)
- * [Requirements](#requirements)
- * [Features](#features)
- * [Coming next](#coming-next)
- * [Supported languages](#supported-languages)
- * [Screenshots](#screenshots)
- * [Download & Installation](#download--installation)
- * [Supported and tested platforms](#supported-and-tested-platforms)
- * [Installation](#installation)
- * [MacOS](#macos)
- * [Opening the app on MacOS](#opening-the-app-on-macos)
- * [Linux](#linux)
- * [Windows](#windows)
- * [Usage instructions](#usage-instructions)
- * [Running scrcpy](#running-scrcpy)
- * [Customizing scrcpy options](#customizing-scrcpy-options)
- * [Profile management](#profile-management)
- * [Configuring a default profile](#configuring-a-default-profile)
- * [Troubleshooting](#troubleshooting)
- * [ADB / scrcpy not found](#adb--scrcpy-not-found)
- * [Setting executable path manually in settings](#setting-executable-path-manually-in-settings)
- * [How it works](#how-it-works)
- * [List of commands used by the app](#list-of-commands-used-by-the-app)
- * [ADB Commands](#adb-commands)
- * [scrcpy Commands](#scrcpy-commands)
- * [License](#license)
- * [Artworks credits](#artworks-credits)
+* [Requirements](#requirements)
+* [Features](#features)
+ * [Coming next](#coming-next)
+* [Supported languages](#supported-languages)
+* [Screenshots](#screenshots)
+* [Download & Installation](#download--installation)
+ * [Supported and tested platforms](#supported-and-tested-platforms)
+ * [Installation](#installation)
+ * [MacOS](#macos)
+ * [Opening the app on MacOS](#opening-the-app-on-macos)
+ * [Linux](#linux)
+ * [Windows](#windows)
+* [Usage instructions](#usage-instructions)
+ * [Running scrcpy](#running-scrcpy)
+ * [Customizing scrcpy options](#customizing-scrcpy-options)
+ * [Profile management](#profile-management)
+ * [Configuring a default profile](#configuring-a-default-profile)
+* [Troubleshooting](#troubleshooting)
+ * [ADB / scrcpy not found](#adb--scrcpy-not-found)
+ * [Setting executable path manually in settings](#setting-executable-path-manually-in-settings)
+* [How it works](#how-it-works)
+ * [List of commands used by the app](#list-of-commands-used-by-the-app)
+ * [ADB Commands](#adb-commands)
+ * [scrcpy Commands](#scrcpy-commands)
+* [License](#license)
+* [Artworks credits](#artworks-credits)
-## Requirements
+# Requirements
To use this app, you need the following:
@@ -57,7 +53,7 @@ To use this app, you need the following:
- Android device(s) with "Developer options" and USB / Network debugging
enabled: https://developer.android.com/tools/adb#Enabling
-## Features
+# Features
- Run scrcpy on multiple connected devices
- ADB Device management (Switch USB Device to network / disconnect device)
@@ -69,16 +65,17 @@ To use this app, you need the following:
from a connected device
- Close app to tray
-### Coming next
+## Coming next
See [milestones](https://github.com/Codertainment/scrcpy_buddy/milestones)
-## Supported languages
+# Supported languages
+
- Only English for now
But the app is built with i18n in mind. So, support for more languages can be added gradually.
-## Screenshots
+# Screenshots
(may not be up-to-date)
@@ -89,11 +86,11 @@ But the app is built with i18n in mind. So, support for more languages can be ad
|  |  |  |
|  |  |  |
-## Download & Installation
+# Download & Installation
All downloads can be found on the [latest release](https://github.com/Codertainment/scrcpy_buddy/releases/latest) page
-### Supported and tested platforms
+## Supported and tested platforms
| OS | Minimum Supported | Tested ✅ |
|---------|-----------------------------|---------------|
@@ -101,9 +98,9 @@ All downloads can be found on the [latest release](https://github.com/Codertainm
| Windows | 7 (?) | 11 |
| Linux | Should work on all versions | KUbuntu 25.10 |
-### Installation
+## Installation
-#### MacOS
+### MacOS
- Download and open the DMG File
- Make sure you have administrator privileges
@@ -111,7 +108,7 @@ All downloads can be found on the [latest release](https://github.com/Codertainm
- Open the app by searching for it (⌘ Space)
- See [the next section](#opening-the-app-on-macos) to understand how to open the app
-#### Opening the app on MacOS
+### Opening the app on MacOS
For macOS apps to be verified, a developer account is required, which has a membership fee of $99/year. As this is my
personal project, I cannot afford this.
@@ -121,7 +118,7 @@ Hence, the app is unverified, and it requires **manual intervention to open it f
Follow the instructions from [Apple Support](https://support.apple.com/guide/mac-help/mchleab3a043) to manually override
the signing and check and open the app.
-#### Linux
+### Linux
Possible installation options:
@@ -129,7 +126,7 @@ Possible installation options:
- Download and install the snap manually (`$ sudo snap install .snap --classic --dangerous`)
- Download and open the AppImage
-#### Windows
+### Windows
@@ -143,9 +140,9 @@ Possible installation options:
updates)
- Install via EXE Setup
-## Usage instructions
+# Usage instructions
-### Running scrcpy
+## Running scrcpy
Once you have everything setup, connected Android devices (through ADB) should show up in the homepage (known as "
Devices").
@@ -158,13 +155,13 @@ To run scrcpy on your device(s):
- Configure scrcpy options as you wish by navigating to the categories
- Click on "Start" at the top right corner
-### Customizing scrcpy options
+## Customizing scrcpy options
- Simply navigate to the desired category from the navigation drawer
- Change the options as you'd like
- All changes are saved automatically to the currently selected profile (visible in the dropdown button at top right)
-### Profile management
+## Profile management
A profile contains:
@@ -178,7 +175,7 @@ The dropdown button at the top indicates the currently active profile.
By clicking on the dropdown button, you can switch between profiles, create a new profile or navigate to the profile
management page.
-### Configuring a default profile
+## Configuring a default profile
You can choose a single profile to be the default one (everytime you open the app), or let the last used profile be the
default one.
@@ -192,9 +189,9 @@ To default to the last used profile:
- Go to settings, under the "Default profile" section, select "Last used" from the dropdown menu
-## Troubleshooting
+# Troubleshooting
-### ADB / scrcpy not found
+## ADB / scrcpy not found
If you have ADB and/or scrcpy setup and installed in your path:
@@ -202,10 +199,10 @@ If you have ADB and/or scrcpy setup and installed in your path:
can [set the executable in settings manually](#setting-executable-path-manually-in-settings).
- To find out the installation path, run this command in the terminal:
- e.g.
- - For Windows: `where adb`
- - For MacOS/Linux: `which adb`
+ - For Windows: `where adb`
+ - For MacOS/Linux: `which adb`
-### Setting executable path manually in settings
+## Setting executable path manually in settings

@@ -215,7 +212,7 @@ Verify that the app is able to access the executables by clicking on "Check".
It should show the adb or scrcpy version.
-## How it works
+# How it works
scrcpy buddy functions as a graphical user interface (GUI) wrapper for command-line tools. The application does not
communicate directly with Android devices or access device data itself. Instead, it exclusively interacts with adb and
@@ -223,9 +220,9 @@ scrcpy.
All device communication and data processing occur through these external tools, which operate under their own
respective privacy policies and security models.
-### List of commands used by the app
+## List of commands used by the app
-#### ADB Commands
+### ADB Commands
- `adb --version` - Retrieves the installed adb version
- `adb devices -l` - Lists connected Android devices
@@ -235,19 +232,20 @@ respective privacy policies and security models.
- `adb shell ip route show` - Retrieves network routing information from connected devices
- `adb tcpip` - Switches device connection mode to TCP/IP
-#### scrcpy Commands
+### scrcpy Commands
- `scrcpy` - Launches screen mirroring with user-configured options from the application UI
- `scrcpy --version` - Retrieves the installed scrcpy version
- `scrcpy --list-apps` - Lists applications installed on connected devices
-## License
+# License
Apache-2.0: See [LICENSE](LICENSE)
-## Artworks credits
+# Artworks credits
> The Android robot is reproduced or modified from work created and shared by Google and used according to terms
> described in the Creative Commons 3.0 Attribution License (https://creativecommons.org/licenses/by/3.0/).
-Thanks to my friend, [@SudipRajbanshi](https://github.com/SudipRajbanshi) for creating the beautiful logo, banner and tray icon ❤️
\ No newline at end of file
+Thanks to my friend, [@SudipRajbanshi](https://github.com/SudipRajbanshi) for creating the beautiful logo, banner and
+tray icon ❤️
\ No newline at end of file
diff --git a/pubspec.yaml b/pubspec.yaml
index f5f3018..2a3f3e1 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -132,12 +132,3 @@ flutter_launcher_icons:
generate: true
macos:
generate: true
-
-msix_config:
- display_name: scrcpy buddy
- publisher_display_name: Codertainment
- publisher: CN=5EFFC3AA-14FC-4D47-AABD-2F91F482F2F7
- identity_name: Codertainment.scrcpybuddy
- store: true
- logo_path: assets/icon_light_1024.png
- capabilities: privateNetworkClientServer, usb
\ No newline at end of file
diff --git a/windows/packaging/exe/make_config.yaml b/windows/packaging/exe/make_config.yaml
new file mode 100644
index 0000000..60be51a
--- /dev/null
+++ b/windows/packaging/exe/make_config.yaml
@@ -0,0 +1,13 @@
+# The value of AppId uniquely identifies this application.
+# Do not use the same AppId value in installers for other applications.
+app_id: dev.codertainment.scrcpy_buddy
+publisher: Codertainment
+publisher_url: https://github.com/Codertainment/scrcpy_buddy
+display_name: scrcpy buddy
+create_desktop_icon: true
+# See: https://jrsoftware.org/ishelp/index.php?topic=setup_defaultdirname
+# install_dir_name: "D:\\HELLO-WORLD"
+# This path is relative to the root directory of your project; The format of icon file must be ico, can not be png or others
+setup_icon_file: windows\runner\resources\app_icon.ico
+locales:
+ - en
\ No newline at end of file
diff --git a/windows/packaging/msix/make_config.yaml b/windows/packaging/msix/make_config.yaml
new file mode 100644
index 0000000..ebd5d60
--- /dev/null
+++ b/windows/packaging/msix/make_config.yaml
@@ -0,0 +1,7 @@
+display_name: scrcpy buddy
+publisher_display_name: Codertainment
+publisher: CN=5EFFC3AA-14FC-4D47-AABD-2F91F482F2F7
+identity_name: Codertainment.scrcpybuddy
+store: 'true'
+logo_path: assets/icon_light_1024.png
+capabilities: privateNetworkClientServer, usb
\ No newline at end of file
diff --git a/windows/runner/main.cpp b/windows/runner/main.cpp
index 33af3b3..ad1275b 100644
--- a/windows/runner/main.cpp
+++ b/windows/runner/main.cpp
@@ -7,7 +7,7 @@
int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev,
_In_ wchar_t *command_line, _In_ int show_command) {
- HWND hwnd = ::FindWindow(L"FLUTTER_RUNNER_WIN32_WINDOW", L"scrcpy_buddy");
+ HWND hwnd = ::FindWindow(L"FLUTTER_RUNNER_WIN32_WINDOW", L"scrcpy buddy");
if (hwnd != NULL) {
::ShowWindow(hwnd, SW_NORMAL);
::SetForegroundWindow(hwnd);