diff --git a/.github/workflows/build-arm64-mac.yml b/.github/workflows/build-arm64-mac.yml
deleted file mode 100644
index f87c91a..0000000
--- a/.github/workflows/build-arm64-mac.yml
+++ /dev/null
@@ -1,47 +0,0 @@
-name: Build Retro-Imager for ARM64 Macs
-
-on:
- push:
- branches:
- - dev
- pull_request:
- branches:
- - dev
-
-jobs:
- build:
- name: Build on macOS ARM64
- runs-on: macos-13
-
- steps:
- - name: Checkout repository
- uses: actions/checkout@v3
-
- - name: Install Dependencies
- run: |
- brew update
- brew install cmake qt@6
-
- - name: Verify Qt Installation Path
- run: |
- echo "Qt is installed at: $(brew --prefix qt@6)"
- ls -la $(brew --prefix qt@6)
-
- - name: Configure and Build Retro-Imager
- run: |
- mkdir -p build
- cd build
- cmake -DCMAKE_PREFIX_PATH=$(brew --prefix qt@6) ../src
- make
-
- - name: Archive Build Artifacts
- if: success()
- run: |
- mkdir -p build_artifacts
- tar -czvf build_artifacts/retro-imager-arm64-mac.tar.gz build/
-
- - name: Upload Build Artifacts
- uses: actions/upload-artifact@v3
- with:
- name: retro-imager-arm64-mac
- path: build_artifacts/retro-imager-arm64-mac.tar.gz
diff --git a/.github/workflows/windows-build.yml b/.github/workflows/windows-build.yml
new file mode 100644
index 0000000..d0e0302
--- /dev/null
+++ b/.github/workflows/windows-build.yml
@@ -0,0 +1,46 @@
+name: Windows x64 Build
+
+on:
+ push:
+ branches:
+ - boogaloo
+ pull_request:
+ branches:
+ - boogaloo
+
+jobs:
+ build:
+ runs-on: windows-latest
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v3
+
+ - name: Set up Qt
+ uses: jurplel/install-qt-action@v3
+ with:
+ version: '6.7.3'
+ host: 'windows'
+ target: 'desktop'
+ arch: 'win64_msvc2019_64'
+
+ - name: Install CMake
+ run: |
+ choco install cmake --installargs '"ADD_CMAKE_TO_PATH=System"' --yes
+
+ - name: Install Visual Studio Build Tools
+ run: |
+ choco install visualstudio2019buildtools --version=16.11.9 --yes
+ choco install visualstudio2019-workload-vctools --yes
+
+ - name: Configure CMake
+ shell: cmd
+ run: |
+ call "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvars64.bat"
+ cmake -S src -B build -G "NMake Makefiles" -DCMAKE_PREFIX_PATH:PATH="%Qt5_DIR%"
+
+ - name: Build the project
+ shell: cmd
+ run: |
+ call "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvars64.bat"
+ cmake --build build --config Release
diff --git a/README.md b/README.md
index 70654da..b8ba31e 100644
--- a/README.md
+++ b/README.md
@@ -1,65 +1,154 @@
-# Retro-Imager
+# Raspberry Pi Imager
-**Retro-Imager** is a fork of the official Raspberry Pi Imager, specially tailored for retro gaming handhelds and the custom firmwares that power them. This project simplifies the process of flashing custom firmware images to your retro handheld devices, allowing you to quickly get set up and start gaming.
+Raspberry Pi Imaging Utility
-## Supported Devices & Custom Firmwares
+- To install on Raspberry Pi OS, use `sudo apt update && sudo apt install rpi-imager`.
+- Download the latest version for Windows, macOS and Ubuntu from the [Raspberry Pi downloads page](https://www.raspberrypi.com/software/).
-At present, **Retro-Imager** supports:
-**muOS** and **Rocknix**.
-More devices and firmwares will be added in future releases!
+## How to use Raspberry Pi Imager
-## Features
-
-- **Easy-to-use interface**: Retro-Imager retains the familiar look and feel of Raspberry Pi Imager, making it accessible to anyone.
-- **Handheld Focus**: Tailored specifically for retro handheld gaming devices, eliminating unnecessary options for general-purpose single-board computers.
-- **Custom Firmware Support**: Flash custom OS images like muOS and Rocknix quickly and easily.
-- **Firmware Recommendations**: The top-most firmware option for each device is our recommended choice, ensuring optimal performance and compatibility.
-
-## Getting Started
-
-### Prerequisites
-
-- A computer running Linux (x86_64) or Windows (x86_64)
-- A microSD card reader
-- A microSD card (at least 8GB, though larger is recommended)
-
-### Installation
-
-1. Download the most recent release from the [GitHub releases page](https://github.com/cmclark00/retro-imager/releases).
-2. Extract the files (if necessary) and run the application on your system:
- - For Linux: Make the file executable and run it.
- ```bash
- chmod +x retro-imager.AppImage
- ./retro-imager.AppImage
- ```
- - For Windows: Double-click the `.exe` file.
-
-### Using Retro-Imager
-
-1. Launch Retro-Imager.
-2. Select your device from the list (e.g., RG35XX Plus, RG28XX, RGB30).
-3. Choose the custom firmware you would like to install. The top-most option is the recommended firmware for your selected device.
-4. Insert your microSD card into your computer.
-5. Select the correct device from the list and click "Write".
-6. Safely remove the microSD card and insert it into your retro gaming handheld.
+Please see our [official documentation](https://www.raspberrypi.com/documentation/computers/getting-started.html#raspberry-pi-imager).
## Contributing
-We welcome contributions! Whether you're improving code, fixing bugs, or expanding firmware support, your help is appreciated.
+### Linux
-To contribute:
+#### Get dependencies
-1. Fork the repository.
-2. Create a new branch:
- ```bash
- git checkout -b feature/YourFeature
-3. Commit your changes:
- ```bash
- git commit -m "Add some feature"
-4. Push to the branch:
- ```bash
- git push origin feature/YourFeature
-5. Open a Pull Request.
+- Install the build dependencies (Debian used as an example):
+
+```sh
+sudo apt install --no-install-recommends build-essential cmake git libgnutls28-dev
+```
+
+- Get the Qt online installer from: https://www.qt.io/download-open-source
+- During installation, choose Qt 6.7, CMake and Qt Creator.
+
+#### Get the source
+
+```sh
+git clone --depth 1 https://github.com/raspberrypi/rpi-imager
+```
+
+#### Build the AppImage
+
+Modify appimagecraft.yml:
+
+- First, you _must_ set Qt6_ROOT (as a extra_variables item under build/cmake) to the root of your Qt6 installation. eg: `/opt/Qt/6.7.2/gcc_arm64/`
+- Second, you _must_ set QMAKE (as a raw_environment variable of the linuxdeploy plugin) to the full path of qmake inside that Qt6 installation. eg: `/opt/Qt/6.7.2./gcc_arm64/bin/qmake`
+
+Now, use AppImageCraft to build your AppImage:
+
+```sh
+cd rpi-imager
+export LD_LIBRARY_PATH=${your_Qt6_install_path}/lib
+./${your_platform_appimagecraft}.AppImage
+```
+
+Now mark the AppImage as executable, and run it:
+
+```sh
+chmod +x ./Raspberry_Pi_Imager-*.AppImage
+./Raspberry_Pi_Imager-*.AppImage
+```
+
+### Windows
+
+#### Get dependencies
+
+- Get the Qt online installer from: https://www.qt.io/download-open-source
+During installation, choose Qt 6.7 with Mingw64 64-bit toolchain, CMake and Qt Creator.
+
+- For building the installer, get Nullsoft scriptable install system: https://nsis.sourceforge.io/Download
+
+- It is assumed you already have a valid code signing certificate, and the Windows 10 Kit (SDK) installed.
+
+#### Building
+
+Building Raspberry Pi Imager on Windows is best done with the Qt Creator GUI.
+
+- Download source .zip from github and extract it to a folder on disk
+- Open src/CMakeLists.txt in Qt Creator.
+- Use Qt Creator to set the MINGW64_ROOT CMake variable to your MingGW64 installation path, eg `C:\Qt\Tools\mingw64`
+- For builds you distribute to others, make sure you choose "Release" in the toolchain settings and not the Debug configuration.
+- Menu "Build" -> "Build all"
+- Result will be in build_rpi-imager_someversion
+- Go to the BUILD folder, right click on the .nsi script "Compile NSIS script", to create installer.
+
+### macOS
+
+#### Get dependencies
+
+- Get the Qt online installer from: https://www.qt.io/download-open-source
+During installation, choose Qt 6.7, CMake and Qt Creator.
+- It is assumed you have an Apple developer subscription, and already have a "Developer ID" code signing certificate for distribution outside the Mac Store.
+
+#### Building
+
+- Download source .zip from github and extract it to a folder on disk
+- Start Qt Creator and open src/CMakeLists.txt
+- Use Qt Creator to set the Qt6_ROOT CMake variable to your Qt6 installation path, eg `/opt/Qt6/6.7.2/gcc_arm64`
+- Menu "Build" -> "Build all"
+- Result will be in build_rpi-imager_someversion
+- For distribution to others:
+ - Use the IMAGER_SIGNED_APP flag to enable Application signing
+ - Use the IMAGER_SIGNING_IDENTITY string to specify the Developer ID certificate Common Name
+ - Use the IMAGER_NOTARIZE_APP flag to enable notarization as part of the build
+ - Use the IMAGER_NOTARIZE_KEYCHAIN_PROFILE string to specify the name of the keychain item containing your Apple ID credentials for notarizing.
+
+### Linux embedded (netboot) build
+
+The embedded build runs under a minimalistic Linux distribution compiled by buildroot.
+To build:
+
+- You must be running a Linux system, and have the buildroot dependencies installed as listed in the buildroot manual: https://buildroot.org/downloads/manual/manual.html#requirement
+- Run:
+
+```sh
+cd rpi-imager/embedded
+./build.sh
+```
+
+The result will be in the "output" directory.
+The files can be copied to a FAT32 formatted SD card, and inserted in a Pi for testing.
+If you would like to build a (signed) netboot image there are tools for that at: https://github.com/raspberrypi/usbboot/tree/master/tools
+
+## Other notes
+
+### Custom repository
+
+If the application is started with "--repo [your own URL]" it will use a custom image repository.
+So can simply create another 'start menu shortcut' to the application with that parameter to use the application with your own images.
+
+### Telemetry
+
+In order to understand usage of the application (e.g. uptake of Raspberry Pi Imager versions and which images and operating systems are most popular) when using the default image repository, the URL, operating system name and category (if present) of a selected image are sent along with the running version of Raspberry Pi Imager, your operating system, CPU architecture, locale and Raspberry Pi revision (if applicable) to https://rpi-imager-stats.raspberrypi.com by downloadstatstelemetry.cpp.
+
+This web service is hosted by [Heroku](https://www.heroku.com) and only stores an incrementing counter using a [Redis Sorted Set](https://redis.io/topics/data-types#sorted-sets) for each URL, operating system name and category per day in the `eu-west-1` region and does not associate any personal data with those counts. This allows us to query the number of downloads over time and nothing else.
+
+The last 1,500 requests to the service are logged for one week before expiring as this is the [minimum log retention period for Heroku](https://devcenter.heroku.com/articles/logging#log-history-limits).
+
+On Windows, you can opt out of telemetry by disabling it in the Registry:
+
+```pwsh
+reg add "HKCU\Software\Raspberry Pi\Imager" /v telemetry /t REG_DWORD /d 0
+```
+
+On Linux, run `rpi-imager --disable-telemetry` or add the following to `~/.config/Raspberry Pi/Imager.conf`:
+
+```ini
+[General]
+telemetry=false
+```
+
+On macOS, disable it by editing the property list for the application:
+
+```sh
+defaults write org.raspberrypi.Imager.plist telemetry -bool NO
+```
### License
-This project is licensed under the MIT License. See the LICENSE file for details.
+
+The main code of the Imaging Utility is made available under the terms of the Apache license.
+See license.txt and files in "src/dependencies" folder for more information about the various open source licenses that apply to the third-party dependencies used such as Qt, libarchive, drivelist, mountutils and libcurl.
+For the embedded (netboot) build see also "embedded/legal-info" for more information about the extra system software included in that.
diff --git a/appimagecraft.yml b/appimagecraft.yml
index 83cbde4..82bd195 100644
--- a/appimagecraft.yml
+++ b/appimagecraft.yml
@@ -1,8 +1,8 @@
version: 1
project:
- name: org.coreymclark.retro-imager
- version: 0.3.0
+ name: org.raspberrypi.rpi-imager
+ version: 1.9.2
build:
cmake:
diff --git a/minimal_test.json b/minimal_test.json
deleted file mode 100644
index 75c3838..0000000
--- a/minimal_test.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "os_list": [
- {
- "name": "Test OS 1",
- "description": "A test OS for verifying functionality",
- "icon": "icons/erase.png",
- "url": "internal://format"
- },
- {
- "name": "Test OS 2",
- "description": "Another test OS",
- "icon": "icons/erase.png",
- "url": "internal://format"
- }
- ]
-}
\ No newline at end of file
diff --git a/os_list.json b/os_list.json
deleted file mode 100644
index fedc395..0000000
--- a/os_list.json
+++ /dev/null
@@ -1,552 +0,0 @@
-{
- "os_list": [
- {
- "name": "muOS 2410.1 Banana for RG35XX Plus",
- "description": "muOS 2410.1 Banana firmware optimized for Anbernic RG35XX Plus.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/logo.png?raw=true",
- "url": "https://dl.muos.dev/RELEASE/2410.1/muOS-RG35XX-PLUS-2410.1-BANANA-d1bae326.img.gz",
- "release_date": "2024-10-12",
- "image_download_size": 2151537628,
- "extract_size": 4504682496,
- "extract_sha256": "62c492047923e3e8709e0b015760b7f1e0db2ccab40e741fe067b49d96957624",
- "devices": [
- "rg35xx_plus"
- ]
- },
- {
- "name": "muOS 2410.1 Banana for RG28XX",
- "description": "muOS 2410.1 Banana firmware optimized for Anbernic RG28XX.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/logo.png?raw=true",
- "url": "https://dl.muos.dev/RELEASE/2410.1/muOS-RG28XX-2410.1-BANANA-d1bae326.img.gz",
- "release_date": "2024-10-12",
- "image_download_size": 2158432397,
- "extract_size": 4504682496,
- "extract_sha256": "62c492047923e3e8709e0b015760b7f1e0db2ccab40e741fe067b49d96957624",
- "devices": [
- "rg28xx"
- ]
- },
- {
- "name": "muOS 2410.1 Banana for RG35XXH",
- "description": "muOS 2410.1 Banana firmware optimized for Anbernic RG35XXH.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/logo.png?raw=true",
- "url": "https://dl.muos.dev/RELEASE/2410.1/muOS-RG35XX-H-2410.1-BANANA-a10951c4.img.gz",
- "release_date": "2024-10-12",
- "image_download_size": 2118435484,
- "extract_size": 4504682496,
- "extract_sha256": "a84a1386de3b046aea05c75a4ccc8da0fbc2ee42f89b7b78a720cf657f45d3d2",
- "devices": [
- "rg35xxh"
- ]
- },
- {
- "name": "muOS 2410.1 Banana for RG35XXSP",
- "description": "muOS 2410.1 Banana firmware optimized for Anbernic RG35XXSP.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/logo.png?raw=true",
- "url": "https://dl.muos.dev/RELEASE/2410.1/muOS-RG35XX-SP-2410.1-BANANA-d1bae326.img.gz",
- "release_date": "2024-10-12",
- "image_download_size": 2176694960,
- "extract_size": 4504682496,
- "extract_sha256": "9a529d2f089bba6616615026c6ec16e282d622adbc6ae97172b7ab73d32092c4",
- "devices": [
- "rg35xx_sp"
- ]
- },
- {
- "name": "muOS 2410.1 Banana for RG35XX24",
- "description": "muOS 2410.1 Banana firmware optimized for Anbernic RG35XX24.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/logo.png?raw=true",
- "url": "https://dl.muos.dev/RELEASE/2410.1/muOS-RG35XX-2024-2410.1-BANANA-d1bae326.img.gz",
- "release_date": "2024-10-12",
- "image_download_size": 2151137645,
- "extract_size": 4504682496,
- "extract_sha256": "fc0da5aa0dcda244be8dec28115210200fe259c374bb7b25d6d26f4db812d351",
- "devices": [
- "rg35xx_2024"
- ]
- },
- {
- "name": "muOS 2410.1 Banana for RG40XXH",
- "description": "muOS 2410.1 Banana firmware optimized for Anbernic RG40XXH.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/logo.png?raw=true",
- "url": "https://dl.muos.dev/RELEASE/2410.1/muOS-RG40XX-H-2410.1-BANANA-d1bae326.img.gz",
- "release_date": "2024-10-12",
- "image_download_size": 2132388103,
- "extract_size": 4504682496,
- "extract_sha256": "fe51f4f3a7f9e51c34eb78ef704a9a6af0233d6fdf87ccd070444034003afe5c",
- "devices": [
- "rg40xxh"
- ]
- },
- {
- "name": "muOS 2410.1 Banana for RG40XXV",
- "description": "muOS 2410.1 Banana firmware optimized for Anbernic RG40XXV.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/logo.png?raw=true",
- "url": "https://dl.muos.dev/RELEASE/2410.1/muOS-RG40XX-V-2410.1-BANANA-d1bae326.img.gz",
- "release_date": "2024-10-12",
- "image_download_size": 2132476961,
- "extract_size": 4504682496,
- "extract_sha256": "aa2cd35010e1414c62b0460d8f193d7a3c56ebcf3f59a220aebe995ab93bb051",
- "devices": [
- "rg40xxv"
- ]
- },
- {
- "name": "ROCKNIX 20241120 for Rockchip RK3326 devices, A image.",
- "description": "ROCKNIX 20241120 firmware optimized for Rockchip RK3326 devices.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/rocknix.png?raw=true",
- "url": "https://github.com/ROCKNIX/distribution/releases/download/20241120/ROCKNIX-RK3326.aarch64-20241120-a.img.gz",
- "release_date": "2024-11-20",
- "image_download_size": 1348717111,
- "extract_size": 2197815296,
- "extract_sha256": "8cc28cca1d4d88464cf156691a540111385c5b94f30aa067456cc80fcd12b747",
- "devices": [
- "rg351p",
- "rg351m",
- "rg351v",
- "r33s",
- "r35s",
- "r36s",
- "oga",
- "ogs",
- "xu10",
- "v10",
- "rgb10"
- ]
- },
- {
- "name": "ROCKNIX 20241120 for Rockchip RK3326 devices, B image.",
- "description": "ROCKNIX 20241120 firmware optimized for Rockchip RK3326 devices.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/rocknix.png?raw=true",
- "url": "https://github.com/ROCKNIX/distribution/releases/download/20241120/ROCKNIX-RK3326.aarch64-20241120-b.img.gz",
- "release_date": "2024-11-20",
- "image_download_size": 1348619756,
- "extract_size": 2197815296,
- "extract_sha256": "e43ed5ea9c8c93408a180e57409e9a07d7594ecb1ffe46f21024655f46ea9050",
- "devices": [
- "xu_mini_m",
- "rgb10x"
- ]
- },
- {
- "name": "ROCKNIX 20241120 for Rockchip RK3399 devices",
- "description": "ROCKNIX 20241120 firmware optimized for Rockchip RK3399 devices.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/rocknix.png?raw=true",
- "url": "https://github.com/ROCKNIX/distribution/releases/download/20241120/ROCKNIX-RK3399.aarch64-20241120.img.gz",
- "release_date": "2024-11-20",
- "image_download_size": 1288581465,
- "extract_size": 2198863872,
- "extract_sha256": "53091696a540d693d99d515524816825a057823c0fe1f91a0b5e4837baeb24b9",
- "devices": [
- "rg552"
- ]
- },
- {
- "name": "ROCKNIX 20241120 for Rockchip RK3566 devices",
- "description": "ROCKNIX 20241120 firmware optimized for Rockchip RK3566 devices.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/rocknix.png?raw=true",
- "url": "https://github.com/ROCKNIX/distribution/releases/download/20241120/ROCKNIX-RK3566.aarch64-20241120-Generic.img.gz",
- "release_date": "2024-11-20",
- "image_download_size": 1391749865,
- "extract_size": 2198863872,
- "extract_sha256": "4917f090e9364f47de5cf8663c0741eb79b8236c4b455a5ae4d3c8889744de27",
- "devices": [
- "rg353p",
- "rg353m",
- "rg353v",
- "rg353vs",
- "rg353ps",
- "rg503",
- "rg_arc_d",
- "rg_arc_s",
- "rk2023",
- "rgb10_max_3",
- "rgb30",
- "rgb20sx"
- ]
- },
- {
- "name": "ROCKNIX 20241120 for Powkiddy X55 devices",
- "description": "ROCKNIX 20241120 firmware optimized for Powkiddy X55 devices.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/rocknix.png?raw=true",
- "url": "https://github.com/ROCKNIX/distribution/releases/download/20241120/ROCKNIX-RK3566.aarch64-20241120-Powkiddy_x55.img.gz",
- "release_date": "2024-11-20",
- "image_download_size": 1391396234,
- "extract_size": 2198863872,
- "extract_sha256": "35391e0a49de413a2672893a07ed6ca116f90746baef620eebf8d3ab7b2ad5f7",
- "devices": [
- "x55"
- ]
- },
- {
- "name": "ROCKNIX 20241120 for Hardkernel ODROID Go Ultra and Powkiddy RGB10 Max 3 Pro devices",
- "description": "ROCKNIX 20241120 firmware optimized for ODROID Go Ultra and RGB10 Max 3 Pro devices.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/rocknix.png?raw=true",
- "url": "https://github.com/ROCKNIX/distribution/releases/download/20241120/ROCKNIX-S922X.aarch64-20241120.img.gz",
- "release_date": "2024-11-20",
- "image_download_size": 1416924259,
- "extract_size": 2185232384,
- "extract_sha256": "86cd0a48d541e3e68582107748e2f77656c153d11f6efd14563fb65a0f9c5076",
- "devices": [
- "ogu",
- "rgb10_max_3_pro"
- ]
- },
- {
- "name": "ROCKNIX 20240815 for Hardkernel ODROID N2/N2+ devices",
- "description": "ROCKNIX 20240815 firmware optimized for Hardkernel ODROID N2/N2+ devices.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/rocknix.png?raw=true",
- "url": "https://github.com/ROCKNIX/distribution/releases/download/20240815/ROCKNIX-S922X.aarch64-20240815-Odroid_N2.img.gz",
- "release_date": "2024-08-15",
- "image_download_size": 1249723275,
- "extract_size": 2185232384,
- "extract_sha256": "7e5b56f4a0c0a9d9c64e7b1ba4472dd7e2dac9c28a23585098e16349f30c7fc9",
- "devices": [
- "on2",
- "on2_plus"
- ]
- },
- {
- "name": "ROCKNIX 20240815 for Hardkernel ODROID N2L devices",
- "description": "ROCKNIX 20240815 firmware optimized for Hardkernel ODROID N2L devices.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/rocknix.png?raw=true",
- "url": "https://github.com/ROCKNIX/distribution/releases/download/20240815/ROCKNIX-S922X.aarch64-20240815-Odroid_N2L.img.gz",
- "release_date": "2024-08-15",
- "image_download_size": 1249707786,
- "extract_size": 2185232384,
- "extract_sha256": "5af36c78b57dcb35c910bb72c2ed28208fe94c94d5b7fda83d73ef33a2419910",
- "devices": [
- "on2l"
- ]
- },
- {
- "name": "ROCKNIX 20241120 for Rockchip RK3588 devices",
- "description": "ROCKNIX 20241120 firmware optimized for Rockchip RK3588 devices.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/rocknix.png?raw=true",
- "url": "https://github.com/ROCKNIX/distribution/releases/download/20241120/ROCKNIX-RK3588.aarch64-20241120.img.gz",
- "release_date": "2024-11-20",
- "image_download_size": 1451047021,
- "extract_size": 2198863872,
- "extract_sha256": "ec81027b7d9b757f09ccd78ce38c6993009e66ddd4b7e1a1206dc104ad739754",
- "devices": [
- "ace",
- "orange_pi_5",
- "orange_pi_5_plus",
- "radxa_rock_5a",
- "radxa_rock_5b",
- "radxa_rock_5b_plus",
- "radxa_rock_cm5",
- "nova"
- ]
- },
- {
- "name": "ROCKNIX 20241120 for Retroid Pocket Mini and Retroid Pocket 5 devices",
- "description": "ROCKNIX 20241120 firmware optimized for Snapdragon 865 devices.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/rocknix.png?raw=true",
- "url": "https://github.com/ROCKNIX/distribution/releases/download/20241120/ROCKNIX-SD865.aarch64-20241120.img.gz",
- "release_date": "2024-11-20",
- "image_download_size": 1404994449,
- "extract_size": 2198863872,
- "extract_sha256": "82f9336c27c9b733322e7e9f685bc1e98aa4eedb0c17f9ae297edb983ada6f39",
- "devices": [
- "rpmini",
- "rp5"
- ]
- }
- ],
- "imager": {
- "devices": [
- {
- "name": "Anbernic",
- "subitems": [
- {
- "name": "Anbernic RG40XXH",
- "tags": ["rg40xxh"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG40XX%20H.png?raw=true"
- },
- {
- "name": "Anbernic RG40XXV",
- "tags": ["rg40xxv"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG40XX%20V.png?raw=true"
- },
- {
- "name": "Anbernic RG35XXH",
- "tags": ["rg35xxh"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX%20H.png?raw=true"
- },
- {
- "name": "Anbernic RG35XX Plus",
- "tags": ["rg35xx_plus"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX%20-%20PLUS.png?raw=true"
- },
- {
- "name": "Anbernic RG35XX SP",
- "tags": ["rg35xx_sp"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX%20SP.png?raw=true"
- },
- {
- "name": "Anbernic RG35XX 2024",
- "tags": ["rg35xx_2024"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX%20-%202024.png?raw=true"
- },
- {
- "name": "Anbernic RG28XX",
- "tags": ["rg28xx"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG28XX.png?raw=true"
- },
- {
- "name": "Anbernic RG351P",
- "tags": ["rg351p"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Anbernic RG351M",
- "tags": ["rg351m"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Anbernic RG351V",
- "tags": ["rg351v"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Anbernic RG353P",
- "tags": ["rg353p"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Anbernic RG353M",
- "tags": ["rg353m"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Anbernic RG353V",
- "tags": ["rg353v"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Anbernic RG353VS",
- "tags": ["rg353vs"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Anbernic RG353PS",
- "tags": ["rg353ps"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Anbernic RG503",
- "tags": ["rg503"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Anbernic RG Arc-D",
- "tags": ["rg_arc_d"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Anbernic RG Arc-S",
- "tags": ["rg_arc_s"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- }
- ]
- },
- {
- "name": "Game Console",
- "subitems": [
- {
- "name": "Game Console R33S",
- "tags": ["r33s"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Game Console R35S",
- "tags": ["r35s"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Game Console R36S",
- "tags": ["r36s"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- }
- ]
- },
- {
- "name": "ODROID",
- "subitems": [
- {
- "name": "ODROID Go Advance",
- "tags": ["oga"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "ODROID Go Super",
- "tags": ["ogs"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "ODROID N2",
- "tags": ["on2"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "ODROID N2 Plus",
- "tags": ["on2_plus"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "ODROID N2L",
- "tags": ["on2l"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- }
- ]
- },
- {
- "name": "MagicX",
- "subitems": [
- {
- "name": "MagicX XU10",
- "tags": ["xu10"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "MagicX XU Mini M",
- "tags": ["xu_mini_m"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- }
- ]
- },
- {
- "name": "Powkiddy",
- "subitems": [
- {
- "name": "Powkiddy V10",
- "tags": ["v10"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Powkiddy RGB10",
- "tags": ["rgb10"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Powkiddy RK2023",
- "tags": ["rk2023"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Powkiddy RGB10 Max 3",
- "tags": ["rgb10_max_3"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Powkiddy RGB30",
- "tags": ["rgb30"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Powkiddy RGB20SX",
- "tags": ["rgb20sx"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Anbernic RG552",
- "tags": ["rg552"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "ODROID Go Ultra",
- "tags": ["ogu"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Powkiddy RGB10 Max 3 Pro",
- "tags": ["rgb10_max_3_pro"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Powkiddy X55",
- "tags": ["x55"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- }
- ]
- },
- {
- "name": "Gameforce",
- "subitems": [
- {
- "name": "Gameforce Ace (default)",
- "tags": ["ace"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- }
- ]
- },
- {
- "name": "Orange Pi",
- "subitems": [
- {
- "name": "Orange Pi 5",
- "tags": ["orange_pi_5"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Orange Pi 5 Plus",
- "tags": ["orange_pi_5_plus"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- }
- ]
- },
- {
- "name": "Radxa",
- "subitems": [
- {
- "name": "Radxa Rock 5a",
- "tags": ["radxa_rock_5a"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Radxa Rock 5b",
- "tags": ["radxa_rock_5b"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Radxa Rock 5b Plus",
- "tags": ["radxa_rock_5b_plus"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Radxa Rock CM5",
- "tags": ["radxa_rock_cm5"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- }
- ]
- },
- {
- "name": "Indiedroid",
- "subitems": [
- {
- "name": "Indiedroid Nova (Must set dtb in extlinuix.conf)",
- "tags": ["nova"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- }
- ]
- },
- {
- "name": "Retroid",
- "subitems": [
- {
- "name": "Retroid Pocket Mini",
- "tags": ["rpmini"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Retroid Pocket 5",
- "tags": ["rp5"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- }
- ]
- }
- ]
- }
-}
-
diff --git a/qt_plugins/assetimporters/libassimp.dylib b/qt_plugins/assetimporters/libassimp.dylib
deleted file mode 100755
index fcc24b2..0000000
Binary files a/qt_plugins/assetimporters/libassimp.dylib and /dev/null differ
diff --git a/qt_plugins/canbus/libqtpassthrucanbus.dylib b/qt_plugins/canbus/libqtpassthrucanbus.dylib
deleted file mode 100755
index f81d632..0000000
Binary files a/qt_plugins/canbus/libqtpassthrucanbus.dylib and /dev/null differ
diff --git a/qt_plugins/canbus/libqtpeakcanbus.dylib b/qt_plugins/canbus/libqtpeakcanbus.dylib
deleted file mode 100755
index b481c0a..0000000
Binary files a/qt_plugins/canbus/libqtpeakcanbus.dylib and /dev/null differ
diff --git a/qt_plugins/canbus/libqttinycanbus.dylib b/qt_plugins/canbus/libqttinycanbus.dylib
deleted file mode 100755
index e25a98b..0000000
Binary files a/qt_plugins/canbus/libqttinycanbus.dylib and /dev/null differ
diff --git a/qt_plugins/canbus/libqtvirtualcanbus.dylib b/qt_plugins/canbus/libqtvirtualcanbus.dylib
deleted file mode 100755
index 1d0afa2..0000000
Binary files a/qt_plugins/canbus/libqtvirtualcanbus.dylib and /dev/null differ
diff --git a/qt_plugins/designer/libqquickwidget.dylib b/qt_plugins/designer/libqquickwidget.dylib
deleted file mode 100755
index fa42225..0000000
Binary files a/qt_plugins/designer/libqquickwidget.dylib and /dev/null differ
diff --git a/qt_plugins/designer/libqwebengineview.dylib b/qt_plugins/designer/libqwebengineview.dylib
deleted file mode 100755
index c0e98f8..0000000
Binary files a/qt_plugins/designer/libqwebengineview.dylib and /dev/null differ
diff --git a/qt_plugins/generic/libqtuiotouchplugin.dylib b/qt_plugins/generic/libqtuiotouchplugin.dylib
deleted file mode 100755
index 5d77bc6..0000000
Binary files a/qt_plugins/generic/libqtuiotouchplugin.dylib and /dev/null differ
diff --git a/qt_plugins/geometryloaders/libdefaultgeometryloader.dylib b/qt_plugins/geometryloaders/libdefaultgeometryloader.dylib
deleted file mode 100755
index 915e18b..0000000
Binary files a/qt_plugins/geometryloaders/libdefaultgeometryloader.dylib and /dev/null differ
diff --git a/qt_plugins/geometryloaders/libgltfgeometryloader.dylib b/qt_plugins/geometryloaders/libgltfgeometryloader.dylib
deleted file mode 100755
index c26e1e3..0000000
Binary files a/qt_plugins/geometryloaders/libgltfgeometryloader.dylib and /dev/null differ
diff --git a/qt_plugins/geoservices/libqtgeoservices_itemsoverlay.dylib b/qt_plugins/geoservices/libqtgeoservices_itemsoverlay.dylib
deleted file mode 100755
index 47ec78f..0000000
Binary files a/qt_plugins/geoservices/libqtgeoservices_itemsoverlay.dylib and /dev/null differ
diff --git a/qt_plugins/geoservices/libqtgeoservices_osm.dylib b/qt_plugins/geoservices/libqtgeoservices_osm.dylib
deleted file mode 100755
index ead5dd9..0000000
Binary files a/qt_plugins/geoservices/libqtgeoservices_osm.dylib and /dev/null differ
diff --git a/qt_plugins/help/libhelpplugin.dylib b/qt_plugins/help/libhelpplugin.dylib
deleted file mode 100755
index e615f84..0000000
Binary files a/qt_plugins/help/libhelpplugin.dylib and /dev/null differ
diff --git a/qt_plugins/iconengines/libqsvgicon.dylib b/qt_plugins/iconengines/libqsvgicon.dylib
deleted file mode 100755
index 2334c1f..0000000
Binary files a/qt_plugins/iconengines/libqsvgicon.dylib and /dev/null differ
diff --git a/qt_plugins/imageformats/libqgif.dylib b/qt_plugins/imageformats/libqgif.dylib
deleted file mode 100755
index 80c37d6..0000000
Binary files a/qt_plugins/imageformats/libqgif.dylib and /dev/null differ
diff --git a/qt_plugins/imageformats/libqicns.dylib b/qt_plugins/imageformats/libqicns.dylib
deleted file mode 100755
index 2a906b9..0000000
Binary files a/qt_plugins/imageformats/libqicns.dylib and /dev/null differ
diff --git a/qt_plugins/imageformats/libqico.dylib b/qt_plugins/imageformats/libqico.dylib
deleted file mode 100755
index f8c1a2c..0000000
Binary files a/qt_plugins/imageformats/libqico.dylib and /dev/null differ
diff --git a/qt_plugins/imageformats/libqjp2.dylib b/qt_plugins/imageformats/libqjp2.dylib
deleted file mode 100755
index 589265b..0000000
Binary files a/qt_plugins/imageformats/libqjp2.dylib and /dev/null differ
diff --git a/qt_plugins/imageformats/libqjpeg.dylib b/qt_plugins/imageformats/libqjpeg.dylib
deleted file mode 100755
index 9b4c006..0000000
Binary files a/qt_plugins/imageformats/libqjpeg.dylib and /dev/null differ
diff --git a/qt_plugins/imageformats/libqmacheif.dylib b/qt_plugins/imageformats/libqmacheif.dylib
deleted file mode 100755
index a5ca073..0000000
Binary files a/qt_plugins/imageformats/libqmacheif.dylib and /dev/null differ
diff --git a/qt_plugins/imageformats/libqmng.dylib b/qt_plugins/imageformats/libqmng.dylib
deleted file mode 100755
index b03723d..0000000
Binary files a/qt_plugins/imageformats/libqmng.dylib and /dev/null differ
diff --git a/qt_plugins/imageformats/libqpdf.dylib b/qt_plugins/imageformats/libqpdf.dylib
deleted file mode 100755
index 10a7c59..0000000
Binary files a/qt_plugins/imageformats/libqpdf.dylib and /dev/null differ
diff --git a/qt_plugins/imageformats/libqsvg.dylib b/qt_plugins/imageformats/libqsvg.dylib
deleted file mode 100755
index a9cc580..0000000
Binary files a/qt_plugins/imageformats/libqsvg.dylib and /dev/null differ
diff --git a/qt_plugins/imageformats/libqtga.dylib b/qt_plugins/imageformats/libqtga.dylib
deleted file mode 100755
index 67f39da..0000000
Binary files a/qt_plugins/imageformats/libqtga.dylib and /dev/null differ
diff --git a/qt_plugins/imageformats/libqtiff.dylib b/qt_plugins/imageformats/libqtiff.dylib
deleted file mode 100755
index bf7ea97..0000000
Binary files a/qt_plugins/imageformats/libqtiff.dylib and /dev/null differ
diff --git a/qt_plugins/imageformats/libqwbmp.dylib b/qt_plugins/imageformats/libqwbmp.dylib
deleted file mode 100755
index f057406..0000000
Binary files a/qt_plugins/imageformats/libqwbmp.dylib and /dev/null differ
diff --git a/qt_plugins/imageformats/libqwebp.dylib b/qt_plugins/imageformats/libqwebp.dylib
deleted file mode 100755
index 557482f..0000000
Binary files a/qt_plugins/imageformats/libqwebp.dylib and /dev/null differ
diff --git a/qt_plugins/multimedia/libdarwinmediaplugin.dylib b/qt_plugins/multimedia/libdarwinmediaplugin.dylib
deleted file mode 100755
index a2c0e2c..0000000
Binary files a/qt_plugins/multimedia/libdarwinmediaplugin.dylib and /dev/null differ
diff --git a/qt_plugins/networkinformation/libqglib.dylib b/qt_plugins/networkinformation/libqglib.dylib
deleted file mode 100755
index 0855317..0000000
Binary files a/qt_plugins/networkinformation/libqglib.dylib and /dev/null differ
diff --git a/qt_plugins/networkinformation/libqscnetworkreachability.dylib b/qt_plugins/networkinformation/libqscnetworkreachability.dylib
deleted file mode 100755
index 72b348b..0000000
Binary files a/qt_plugins/networkinformation/libqscnetworkreachability.dylib and /dev/null differ
diff --git a/qt_plugins/opcua/libopen62541_backend.dylib b/qt_plugins/opcua/libopen62541_backend.dylib
deleted file mode 100755
index 5578936..0000000
Binary files a/qt_plugins/opcua/libopen62541_backend.dylib and /dev/null differ
diff --git a/qt_plugins/permissions/libqdarwinbluetoothpermission.a b/qt_plugins/permissions/libqdarwinbluetoothpermission.a
deleted file mode 100644
index b8122f3..0000000
Binary files a/qt_plugins/permissions/libqdarwinbluetoothpermission.a and /dev/null differ
diff --git a/qt_plugins/permissions/libqdarwinbluetoothpermission.prl b/qt_plugins/permissions/libqdarwinbluetoothpermission.prl
deleted file mode 100644
index 9f6d1ba..0000000
--- a/qt_plugins/permissions/libqdarwinbluetoothpermission.prl
+++ /dev/null
@@ -1,5 +0,0 @@
-QMAKE_PRL_TARGET = libqdarwinbluetoothpermission.a
-QMAKE_PRL_CONFIG = static
-QMAKE_PRL_VERSION = 6.8.2
-QMAKE_PRL_LIBS = -F$$[QT_INSTALL_LIBS] -framework QtCore -framework IOKit -framework DiskArbitration -framework UniformTypeIdentifiers -framework Foundation -framework CoreBluetooth
-QMAKE_PRL_LIBS_FOR_CMAKE = -F$$[QT_INSTALL_LIBS];-framework;QtCore;-framework IOKit;-framework DiskArbitration;-framework UniformTypeIdentifiers;-framework Foundation;-framework CoreBluetooth
diff --git a/qt_plugins/permissions/libqdarwincalendarpermission.a b/qt_plugins/permissions/libqdarwincalendarpermission.a
deleted file mode 100644
index 21e7ec4..0000000
Binary files a/qt_plugins/permissions/libqdarwincalendarpermission.a and /dev/null differ
diff --git a/qt_plugins/permissions/libqdarwincalendarpermission.prl b/qt_plugins/permissions/libqdarwincalendarpermission.prl
deleted file mode 100644
index fb7e5e9..0000000
--- a/qt_plugins/permissions/libqdarwincalendarpermission.prl
+++ /dev/null
@@ -1,5 +0,0 @@
-QMAKE_PRL_TARGET = libqdarwincalendarpermission.a
-QMAKE_PRL_CONFIG = static
-QMAKE_PRL_VERSION = 6.8.2
-QMAKE_PRL_LIBS = -F$$[QT_INSTALL_LIBS] -framework QtCore -framework IOKit -framework DiskArbitration -framework UniformTypeIdentifiers -framework Foundation -framework EventKit
-QMAKE_PRL_LIBS_FOR_CMAKE = -F$$[QT_INSTALL_LIBS];-framework;QtCore;-framework IOKit;-framework DiskArbitration;-framework UniformTypeIdentifiers;-framework Foundation;-framework EventKit
diff --git a/qt_plugins/permissions/libqdarwincamerapermission.a b/qt_plugins/permissions/libqdarwincamerapermission.a
deleted file mode 100644
index f319588..0000000
Binary files a/qt_plugins/permissions/libqdarwincamerapermission.a and /dev/null differ
diff --git a/qt_plugins/permissions/libqdarwincamerapermission.prl b/qt_plugins/permissions/libqdarwincamerapermission.prl
deleted file mode 100644
index 1085b53..0000000
--- a/qt_plugins/permissions/libqdarwincamerapermission.prl
+++ /dev/null
@@ -1,5 +0,0 @@
-QMAKE_PRL_TARGET = libqdarwincamerapermission.a
-QMAKE_PRL_CONFIG = static
-QMAKE_PRL_VERSION = 6.8.2
-QMAKE_PRL_LIBS = -F$$[QT_INSTALL_LIBS] -framework QtCore -framework IOKit -framework DiskArbitration -framework UniformTypeIdentifiers -framework Foundation -framework AVFoundation
-QMAKE_PRL_LIBS_FOR_CMAKE = -F$$[QT_INSTALL_LIBS];-framework;QtCore;-framework IOKit;-framework DiskArbitration;-framework UniformTypeIdentifiers;-framework Foundation;-framework AVFoundation
diff --git a/qt_plugins/permissions/libqdarwincontactspermission.a b/qt_plugins/permissions/libqdarwincontactspermission.a
deleted file mode 100644
index 548b88c..0000000
Binary files a/qt_plugins/permissions/libqdarwincontactspermission.a and /dev/null differ
diff --git a/qt_plugins/permissions/libqdarwincontactspermission.prl b/qt_plugins/permissions/libqdarwincontactspermission.prl
deleted file mode 100644
index a2d9c0e..0000000
--- a/qt_plugins/permissions/libqdarwincontactspermission.prl
+++ /dev/null
@@ -1,5 +0,0 @@
-QMAKE_PRL_TARGET = libqdarwincontactspermission.a
-QMAKE_PRL_CONFIG = static
-QMAKE_PRL_VERSION = 6.8.2
-QMAKE_PRL_LIBS = -F$$[QT_INSTALL_LIBS] -framework QtCore -framework IOKit -framework DiskArbitration -framework UniformTypeIdentifiers -framework Foundation -framework Contacts
-QMAKE_PRL_LIBS_FOR_CMAKE = -F$$[QT_INSTALL_LIBS];-framework;QtCore;-framework IOKit;-framework DiskArbitration;-framework UniformTypeIdentifiers;-framework Foundation;-framework Contacts
diff --git a/qt_plugins/permissions/libqdarwinlocationpermission.a b/qt_plugins/permissions/libqdarwinlocationpermission.a
deleted file mode 100644
index 6642bed..0000000
Binary files a/qt_plugins/permissions/libqdarwinlocationpermission.a and /dev/null differ
diff --git a/qt_plugins/permissions/libqdarwinlocationpermission.prl b/qt_plugins/permissions/libqdarwinlocationpermission.prl
deleted file mode 100644
index fe1aa38..0000000
--- a/qt_plugins/permissions/libqdarwinlocationpermission.prl
+++ /dev/null
@@ -1,5 +0,0 @@
-QMAKE_PRL_TARGET = libqdarwinlocationpermission.a
-QMAKE_PRL_CONFIG = static
-QMAKE_PRL_VERSION = 6.8.2
-QMAKE_PRL_LIBS = -F$$[QT_INSTALL_LIBS] -framework QtCore -framework IOKit -framework DiskArbitration -framework UniformTypeIdentifiers -framework Foundation -framework CoreLocation
-QMAKE_PRL_LIBS_FOR_CMAKE = -F$$[QT_INSTALL_LIBS];-framework;QtCore;-framework IOKit;-framework DiskArbitration;-framework UniformTypeIdentifiers;-framework Foundation;-framework CoreLocation
diff --git a/qt_plugins/permissions/libqdarwinmicrophonepermission.a b/qt_plugins/permissions/libqdarwinmicrophonepermission.a
deleted file mode 100644
index 77ed4ff..0000000
Binary files a/qt_plugins/permissions/libqdarwinmicrophonepermission.a and /dev/null differ
diff --git a/qt_plugins/permissions/libqdarwinmicrophonepermission.prl b/qt_plugins/permissions/libqdarwinmicrophonepermission.prl
deleted file mode 100644
index ca6f7b7..0000000
--- a/qt_plugins/permissions/libqdarwinmicrophonepermission.prl
+++ /dev/null
@@ -1,5 +0,0 @@
-QMAKE_PRL_TARGET = libqdarwinmicrophonepermission.a
-QMAKE_PRL_CONFIG = static
-QMAKE_PRL_VERSION = 6.8.2
-QMAKE_PRL_LIBS = -F$$[QT_INSTALL_LIBS] -framework QtCore -framework IOKit -framework DiskArbitration -framework UniformTypeIdentifiers -framework Foundation -framework AVFoundation
-QMAKE_PRL_LIBS_FOR_CMAKE = -F$$[QT_INSTALL_LIBS];-framework;QtCore;-framework IOKit;-framework DiskArbitration;-framework UniformTypeIdentifiers;-framework Foundation;-framework AVFoundation
diff --git a/qt_plugins/permissions/objects-Release/QDarwinBluetoothPermissionPlugin_init/QDarwinBluetoothPermissionPlugin_init.cpp.o b/qt_plugins/permissions/objects-Release/QDarwinBluetoothPermissionPlugin_init/QDarwinBluetoothPermissionPlugin_init.cpp.o
deleted file mode 100644
index 1f5594e..0000000
Binary files a/qt_plugins/permissions/objects-Release/QDarwinBluetoothPermissionPlugin_init/QDarwinBluetoothPermissionPlugin_init.cpp.o and /dev/null differ
diff --git a/qt_plugins/permissions/objects-Release/QDarwinCalendarPermissionPlugin_init/QDarwinCalendarPermissionPlugin_init.cpp.o b/qt_plugins/permissions/objects-Release/QDarwinCalendarPermissionPlugin_init/QDarwinCalendarPermissionPlugin_init.cpp.o
deleted file mode 100644
index 8476489..0000000
Binary files a/qt_plugins/permissions/objects-Release/QDarwinCalendarPermissionPlugin_init/QDarwinCalendarPermissionPlugin_init.cpp.o and /dev/null differ
diff --git a/qt_plugins/permissions/objects-Release/QDarwinCameraPermissionPlugin_init/QDarwinCameraPermissionPlugin_init.cpp.o b/qt_plugins/permissions/objects-Release/QDarwinCameraPermissionPlugin_init/QDarwinCameraPermissionPlugin_init.cpp.o
deleted file mode 100644
index f974b34..0000000
Binary files a/qt_plugins/permissions/objects-Release/QDarwinCameraPermissionPlugin_init/QDarwinCameraPermissionPlugin_init.cpp.o and /dev/null differ
diff --git a/qt_plugins/permissions/objects-Release/QDarwinContactsPermissionPlugin_init/QDarwinContactsPermissionPlugin_init.cpp.o b/qt_plugins/permissions/objects-Release/QDarwinContactsPermissionPlugin_init/QDarwinContactsPermissionPlugin_init.cpp.o
deleted file mode 100644
index 2410986..0000000
Binary files a/qt_plugins/permissions/objects-Release/QDarwinContactsPermissionPlugin_init/QDarwinContactsPermissionPlugin_init.cpp.o and /dev/null differ
diff --git a/qt_plugins/permissions/objects-Release/QDarwinLocationPermissionPlugin_init/QDarwinLocationPermissionPlugin_init.cpp.o b/qt_plugins/permissions/objects-Release/QDarwinLocationPermissionPlugin_init/QDarwinLocationPermissionPlugin_init.cpp.o
deleted file mode 100644
index d836b6f..0000000
Binary files a/qt_plugins/permissions/objects-Release/QDarwinLocationPermissionPlugin_init/QDarwinLocationPermissionPlugin_init.cpp.o and /dev/null differ
diff --git a/qt_plugins/permissions/objects-Release/QDarwinMicrophonePermissionPlugin_init/QDarwinMicrophonePermissionPlugin_init.cpp.o b/qt_plugins/permissions/objects-Release/QDarwinMicrophonePermissionPlugin_init/QDarwinMicrophonePermissionPlugin_init.cpp.o
deleted file mode 100644
index 94ff547..0000000
Binary files a/qt_plugins/permissions/objects-Release/QDarwinMicrophonePermissionPlugin_init/QDarwinMicrophonePermissionPlugin_init.cpp.o and /dev/null differ
diff --git a/qt_plugins/platforminputcontexts/libqtvirtualkeyboardplugin.dylib b/qt_plugins/platforminputcontexts/libqtvirtualkeyboardplugin.dylib
deleted file mode 100755
index 2c06f84..0000000
Binary files a/qt_plugins/platforminputcontexts/libqtvirtualkeyboardplugin.dylib and /dev/null differ
diff --git a/qt_plugins/platforms/libqcocoa.dylib b/qt_plugins/platforms/libqcocoa.dylib
deleted file mode 100755
index 889280a..0000000
Binary files a/qt_plugins/platforms/libqcocoa.dylib and /dev/null differ
diff --git a/qt_plugins/platforms/libqminimal.dylib b/qt_plugins/platforms/libqminimal.dylib
deleted file mode 100755
index e81a765..0000000
Binary files a/qt_plugins/platforms/libqminimal.dylib and /dev/null differ
diff --git a/qt_plugins/platforms/libqoffscreen.dylib b/qt_plugins/platforms/libqoffscreen.dylib
deleted file mode 100755
index 48d0a65..0000000
Binary files a/qt_plugins/platforms/libqoffscreen.dylib and /dev/null differ
diff --git a/qt_plugins/position/libqtposition_cl.dylib b/qt_plugins/position/libqtposition_cl.dylib
deleted file mode 100755
index 7b2609f..0000000
Binary files a/qt_plugins/position/libqtposition_cl.dylib and /dev/null differ
diff --git a/qt_plugins/position/libqtposition_nmea.dylib b/qt_plugins/position/libqtposition_nmea.dylib
deleted file mode 100755
index 16f391c..0000000
Binary files a/qt_plugins/position/libqtposition_nmea.dylib and /dev/null differ
diff --git a/qt_plugins/position/libqtposition_positionpoll.dylib b/qt_plugins/position/libqtposition_positionpoll.dylib
deleted file mode 100755
index 57694c8..0000000
Binary files a/qt_plugins/position/libqtposition_positionpoll.dylib and /dev/null differ
diff --git a/qt_plugins/qmllint/libquicklintplugin.dylib b/qt_plugins/qmllint/libquicklintplugin.dylib
deleted file mode 100755
index 7030a05..0000000
Binary files a/qt_plugins/qmllint/libquicklintplugin.dylib and /dev/null differ
diff --git a/qt_plugins/qmlls/libqmllsquickplugin.dylib b/qt_plugins/qmlls/libqmllsquickplugin.dylib
deleted file mode 100755
index ba20b05..0000000
Binary files a/qt_plugins/qmlls/libqmllsquickplugin.dylib and /dev/null differ
diff --git a/qt_plugins/qmltooling/libqmldbg_debugger.dylib b/qt_plugins/qmltooling/libqmldbg_debugger.dylib
deleted file mode 100755
index 2fa184c..0000000
Binary files a/qt_plugins/qmltooling/libqmldbg_debugger.dylib and /dev/null differ
diff --git a/qt_plugins/qmltooling/libqmldbg_inspector.dylib b/qt_plugins/qmltooling/libqmldbg_inspector.dylib
deleted file mode 100755
index a9503ce..0000000
Binary files a/qt_plugins/qmltooling/libqmldbg_inspector.dylib and /dev/null differ
diff --git a/qt_plugins/qmltooling/libqmldbg_local.dylib b/qt_plugins/qmltooling/libqmldbg_local.dylib
deleted file mode 100755
index 994227c..0000000
Binary files a/qt_plugins/qmltooling/libqmldbg_local.dylib and /dev/null differ
diff --git a/qt_plugins/qmltooling/libqmldbg_messages.dylib b/qt_plugins/qmltooling/libqmldbg_messages.dylib
deleted file mode 100755
index e359090..0000000
Binary files a/qt_plugins/qmltooling/libqmldbg_messages.dylib and /dev/null differ
diff --git a/qt_plugins/qmltooling/libqmldbg_native.dylib b/qt_plugins/qmltooling/libqmldbg_native.dylib
deleted file mode 100755
index 8cc2349..0000000
Binary files a/qt_plugins/qmltooling/libqmldbg_native.dylib and /dev/null differ
diff --git a/qt_plugins/qmltooling/libqmldbg_nativedebugger.dylib b/qt_plugins/qmltooling/libqmldbg_nativedebugger.dylib
deleted file mode 100755
index f0f6df7..0000000
Binary files a/qt_plugins/qmltooling/libqmldbg_nativedebugger.dylib and /dev/null differ
diff --git a/qt_plugins/qmltooling/libqmldbg_preview.dylib b/qt_plugins/qmltooling/libqmldbg_preview.dylib
deleted file mode 100755
index 0b3eab2..0000000
Binary files a/qt_plugins/qmltooling/libqmldbg_preview.dylib and /dev/null differ
diff --git a/qt_plugins/qmltooling/libqmldbg_profiler.dylib b/qt_plugins/qmltooling/libqmldbg_profiler.dylib
deleted file mode 100755
index 7d12387..0000000
Binary files a/qt_plugins/qmltooling/libqmldbg_profiler.dylib and /dev/null differ
diff --git a/qt_plugins/qmltooling/libqmldbg_quick3dprofiler.dylib b/qt_plugins/qmltooling/libqmldbg_quick3dprofiler.dylib
deleted file mode 100755
index 64a0904..0000000
Binary files a/qt_plugins/qmltooling/libqmldbg_quick3dprofiler.dylib and /dev/null differ
diff --git a/qt_plugins/qmltooling/libqmldbg_quickprofiler.dylib b/qt_plugins/qmltooling/libqmldbg_quickprofiler.dylib
deleted file mode 100755
index dddba4d..0000000
Binary files a/qt_plugins/qmltooling/libqmldbg_quickprofiler.dylib and /dev/null differ
diff --git a/qt_plugins/qmltooling/libqmldbg_server.dylib b/qt_plugins/qmltooling/libqmldbg_server.dylib
deleted file mode 100755
index 57bc0ac..0000000
Binary files a/qt_plugins/qmltooling/libqmldbg_server.dylib and /dev/null differ
diff --git a/qt_plugins/qmltooling/libqmldbg_tcp.dylib b/qt_plugins/qmltooling/libqmldbg_tcp.dylib
deleted file mode 100755
index 4c0dda8..0000000
Binary files a/qt_plugins/qmltooling/libqmldbg_tcp.dylib and /dev/null differ
diff --git a/qt_plugins/renderers/libopenglrenderer.dylib b/qt_plugins/renderers/libopenglrenderer.dylib
deleted file mode 100755
index 69f7f8a..0000000
Binary files a/qt_plugins/renderers/libopenglrenderer.dylib and /dev/null differ
diff --git a/qt_plugins/renderers/librhirenderer.dylib b/qt_plugins/renderers/librhirenderer.dylib
deleted file mode 100755
index 4d80219..0000000
Binary files a/qt_plugins/renderers/librhirenderer.dylib and /dev/null differ
diff --git a/qt_plugins/renderplugins/libscene2d.dylib b/qt_plugins/renderplugins/libscene2d.dylib
deleted file mode 100755
index 297aadf..0000000
Binary files a/qt_plugins/renderplugins/libscene2d.dylib and /dev/null differ
diff --git a/qt_plugins/sceneparsers/libassimpsceneimport.dylib b/qt_plugins/sceneparsers/libassimpsceneimport.dylib
deleted file mode 100755
index c30c9c5..0000000
Binary files a/qt_plugins/sceneparsers/libassimpsceneimport.dylib and /dev/null differ
diff --git a/qt_plugins/sceneparsers/libgltfsceneexport.dylib b/qt_plugins/sceneparsers/libgltfsceneexport.dylib
deleted file mode 100755
index 701b4bc..0000000
Binary files a/qt_plugins/sceneparsers/libgltfsceneexport.dylib and /dev/null differ
diff --git a/qt_plugins/sceneparsers/libgltfsceneimport.dylib b/qt_plugins/sceneparsers/libgltfsceneimport.dylib
deleted file mode 100755
index 54836de..0000000
Binary files a/qt_plugins/sceneparsers/libgltfsceneimport.dylib and /dev/null differ
diff --git a/qt_plugins/scxmldatamodel/libqscxmlecmascriptdatamodel.dylib b/qt_plugins/scxmldatamodel/libqscxmlecmascriptdatamodel.dylib
deleted file mode 100755
index 43c9b8f..0000000
Binary files a/qt_plugins/scxmldatamodel/libqscxmlecmascriptdatamodel.dylib and /dev/null differ
diff --git a/qt_plugins/sensors/libqtsensors_generic.dylib b/qt_plugins/sensors/libqtsensors_generic.dylib
deleted file mode 100755
index 00b9bc5..0000000
Binary files a/qt_plugins/sensors/libqtsensors_generic.dylib and /dev/null differ
diff --git a/qt_plugins/sqldrivers/libqsqlite.dylib b/qt_plugins/sqldrivers/libqsqlite.dylib
deleted file mode 100755
index 57c2d28..0000000
Binary files a/qt_plugins/sqldrivers/libqsqlite.dylib and /dev/null differ
diff --git a/qt_plugins/styles/libqmacstyle.dylib b/qt_plugins/styles/libqmacstyle.dylib
deleted file mode 100755
index 1f56999..0000000
Binary files a/qt_plugins/styles/libqmacstyle.dylib and /dev/null differ
diff --git a/qt_plugins/texttospeech/libqtexttospeech_mock.dylib b/qt_plugins/texttospeech/libqtexttospeech_mock.dylib
deleted file mode 100755
index 8cae0ba..0000000
Binary files a/qt_plugins/texttospeech/libqtexttospeech_mock.dylib and /dev/null differ
diff --git a/qt_plugins/texttospeech/libqtexttospeech_speech_macos.dylib b/qt_plugins/texttospeech/libqtexttospeech_speech_macos.dylib
deleted file mode 100755
index 3de7c3d..0000000
Binary files a/qt_plugins/texttospeech/libqtexttospeech_speech_macos.dylib and /dev/null differ
diff --git a/qt_plugins/texttospeech/libqtexttospeech_speechdarwin.dylib b/qt_plugins/texttospeech/libqtexttospeech_speechdarwin.dylib
deleted file mode 100755
index 8f0e6d8..0000000
Binary files a/qt_plugins/texttospeech/libqtexttospeech_speechdarwin.dylib and /dev/null differ
diff --git a/qt_plugins/tls/libqcertonlybackend.dylib b/qt_plugins/tls/libqcertonlybackend.dylib
deleted file mode 100755
index 5d5ec6a..0000000
Binary files a/qt_plugins/tls/libqcertonlybackend.dylib and /dev/null differ
diff --git a/qt_plugins/tls/libqopensslbackend.dylib b/qt_plugins/tls/libqopensslbackend.dylib
deleted file mode 100755
index b5281dc..0000000
Binary files a/qt_plugins/tls/libqopensslbackend.dylib and /dev/null differ
diff --git a/qt_plugins/tls/libqsecuretransportbackend.dylib b/qt_plugins/tls/libqsecuretransportbackend.dylib
deleted file mode 100755
index 152a3f6..0000000
Binary files a/qt_plugins/tls/libqsecuretransportbackend.dylib and /dev/null differ
diff --git a/qt_plugins/webview/libqtwebview_darwin.dylib b/qt_plugins/webview/libqtwebview_darwin.dylib
deleted file mode 100755
index 9d09aae..0000000
Binary files a/qt_plugins/webview/libqtwebview_darwin.dylib and /dev/null differ
diff --git a/qt_plugins/webview/libqtwebview_webengine.dylib b/qt_plugins/webview/libqtwebview_webengine.dylib
deleted file mode 100755
index 8872889..0000000
Binary files a/qt_plugins/webview/libqtwebview_webengine.dylib and /dev/null differ
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 6f88e31..8784f05 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -8,10 +8,10 @@ OPTION (DRIVELIST_FILTER_SYSTEM_DRIVES "Filter System drives from displayed driv
set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "Which macOS architectures to build for")
-project(retro-imager LANGUAGES CXX C)
-set(IMAGER_VERSION_MAJOR 0)
-set(IMAGER_VERSION_MINOR 5)
-set(IMAGER_VERSION_PATCH 0)
+project(rpi-imager LANGUAGES CXX C)
+set(IMAGER_VERSION_MAJOR 1)
+set(IMAGER_VERSION_MINOR 9)
+set(IMAGER_VERSION_PATCH 2)
set(IMAGER_VERSION_STR "${IMAGER_VERSION_MAJOR}.${IMAGER_VERSION_MINOR}.${IMAGER_VERSION_PATCH}")
set(IMAGER_VERSION_CSV "${IMAGER_VERSION_MAJOR},${IMAGER_VERSION_MINOR},${IMAGER_VERSION_PATCH},0")
add_definitions(-DIMAGER_VERSION_STR="${IMAGER_VERSION_STR}")
@@ -21,10 +21,10 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON)
#add_link_options("-fsanitize=address")
# You _must_ set your Qt6 root for the build to progress.
-set(Qt6_ROOT "$ENV{QT6_ROOT}" CACHE PATH "Your Qt6 root path")
+set(Qt6_ROOT "/opt/Qt/6.7.2/gcc_arm64" CACHE PATH "Your Qt6 root path")
if (WIN32)
- set(MINGW64_ROOT "$ENV{MINGW64_ROOT}" CACHE PATH "Your MinGW64 root path, likely provided by QtCreator")
+ set(MINGW64_ROOT "" CACHE PATH "Your MinGW64 root path, likely provided by QtCreator")
endif()
if (APPLE)
@@ -384,12 +384,12 @@ if (WIN32)
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
"${CMAKE_BINARY_DIR}/${PROJECT_NAME}.exe" "${CMAKE_BINARY_DIR}/dependencies/fat32format/fat32format.exe"
- "${CMAKE_SOURCE_DIR}/../license.txt" "${CMAKE_SOURCE_DIR}/windows/retro-imager-cli.cmd"
+ "${CMAKE_SOURCE_DIR}/../license.txt" "${CMAKE_SOURCE_DIR}/windows/rpi-imager-cli.cmd"
"${CMAKE_BINARY_DIR}/deploy")
configure_file(
- "${CMAKE_CURRENT_SOURCE_DIR}/windows/retro-imager.nsi.in"
- "${CMAKE_CURRENT_BINARY_DIR}/retro-imager.nsi"
+ "${CMAKE_CURRENT_SOURCE_DIR}/windows/rpi-imager.nsi.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/rpi-imager.nsi"
@ONLY)
add_custom_command(TARGET ${PROJECT_NAME}
@@ -402,7 +402,7 @@ if (WIN32)
add_custom_command(TARGET ${PROJECT_NAME}
POST_BUILD
- COMMAND "${WINDEPLOYQT}" --no-translations --qmldir "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_BINARY_DIR}/deploy/retro-imager.exe")
+ COMMAND "${WINDEPLOYQT}" --no-translations --qmldir "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_BINARY_DIR}/deploy/rpi-imager.exe")
# Remove excess files
add_custom_command(TARGET ${PROJECT_NAME}
@@ -433,30 +433,32 @@ elseif(APPLE)
add_custom_command(TARGET ${PROJECT_NAME}
POST_BUILD
COMMAND "${MACDEPLOYQT_EXECUTABLE}" "${CMAKE_BINARY_DIR}/${PROJECT_NAME}.app" -qmldir="${CMAKE_CURRENT_SOURCE_DIR}")
- # Don't rename the app bundle, use the project name consistently
+ add_custom_command(TARGET ${PROJECT_NAME}
+ POST_BUILD
+ COMMAND mv "${CMAKE_BINARY_DIR}/${PROJECT_NAME}.app" "${CMAKE_BINARY_DIR}/Raspberry\ Pi\ Imager.app")
# Sign the .app.
add_custom_command(TARGET ${PROJECT_NAME}
POST_BUILD
- COMMAND codesign -f --deep --digest-algorithm=sha1,sha256 -o runtime --timestamp -s "${IMAGER_SIGNING_IDENTITY}" "${CMAKE_BINARY_DIR}/${PROJECT_NAME}.app")
+ COMMAND codesign -f --deep --digest-algorithm=sha1,sha256 -o runtime --timestamp -s "${IMAGER_SIGNING_IDENTITY}" "${CMAKE_BINARY_DIR}/Raspberry\ Pi\ Imager.app")
# Create the .dmg for distribution
add_custom_command(TARGET ${PROJECT_NAME}
POST_BUILD
- COMMAND hdiutil create -volname "${PROJECT_NAME}" -srcfolder "${CMAKE_BINARY_DIR}/${PROJECT_NAME}.app" -ov -format UDBZ "${CMAKE_BINARY_DIR}/${PROJECT_NAME}.dmg")
+ COMMAND hdiutil create -volname "Raspberry Pi Imager" -srcfolder "${CMAKE_BINARY_DIR}/Raspberry\ Pi\ Imager.app" -ov -format UDBZ "${CMAKE_BINARY_DIR}/Raspberry\ Pi\ Imager.dmg")
# Sign the .dmg for distribution, but do not initialise notarisation
add_custom_command(TARGET ${PROJECT_NAME}
POST_BUILD
- COMMAND codesign -f --digest-algorithm=sha1,sha256 -o runtime --timestamp -s "${IMAGER_SIGNING_IDENTITY}" "${CMAKE_BINARY_DIR}/${PROJECT_NAME}.dmg")
+ COMMAND codesign -f --digest-algorithm=sha1,sha256 -o runtime --timestamp -s "${IMAGER_SIGNING_IDENTITY}" "${CMAKE_BINARY_DIR}/Raspberry\ Pi\ Imager.dmg")
if(IMAGER_NOTARIZE_APP)
if(IMAGER_NOTARIZE_KEYCHAIN_PROFILE)
add_custom_command(TARGET ${PROJECT_NAME}
POST_BUILD
- COMMAND xcrun notarytool submit "${CMAKE_BINARY_DIR}/${PROJECT_NAME}.dmg" --wait --keychain-profile "${IMAGER_NOTARIZE_KEYCHAIN_PROFILE}")
+ COMMAND xcrun notarytool submit "${CMAKE_BINARY_DIR}/Raspberry\ Pi\ Imager.dmg" --wait --keychain-profile "${IMAGER_NOTARIZE_KEYCHAIN_PROFILE}")
add_custom_command(TARGET ${PROJECT_NAME}
POST_BUILD
- COMMAND xcrun stapler staple "${CMAKE_BINARY_DIR}/${PROJECT_NAME}.dmg")
+ COMMAND xcrun stapler staple "${CMAKE_BINARY_DIR}/Raspberry\ Pi\ Imager.dmg")
else()
message(FATAL_ERROR "Notarization requested, but no keychain profile is supplied")
endif(IMAGER_NOTARIZE_KEYCHAIN_PROFILE)
@@ -469,12 +471,12 @@ elseif(APPLE)
# Unsigned application
add_custom_command(TARGET ${PROJECT_NAME}
POST_BUILD
- COMMAND "${MACDEPLOYQT_EXECUTABLE}" "${CMAKE_BINARY_DIR}/${PROJECT_NAME}.app" -qmldir="${CMAKE_CURRENT_SOURCE_DIR}" -always-overwrite -no-strip -dmg)
+ COMMAND "${MACDEPLOYQT_EXECUTABLE}" "${CMAKE_BINARY_DIR}/Raspberry\ Pi\ Imager.app" -qmldir="${CMAKE_CURRENT_SOURCE_DIR}" -always-overwrite -no-strip -dmg)
endif(IMAGER_SIGNED_APP)
add_custom_command(TARGET ${PROJECT_NAME}
POST_BUILD
- COMMAND "mv" "${CMAKE_BINARY_DIR}/${PROJECT_NAME}.dmg" "${CMAKE_BINARY_DIR}/${PROJECT_NAME}-${IMAGER_VERSION_STR}.dmg")
+ COMMAND "mv" "${CMAKE_BINARY_DIR}/Raspberry\ Pi\ Imager.dmg" "${CMAKE_BINARY_DIR}/Raspberry\ Pi\ Imager-${IMAGER_VERSION_STR}.dmg")
else()
# UNIX, Linux systems
@@ -492,7 +494,7 @@ else()
install(TARGETS ${PROJECT_NAME} DESTINATION bin)
install(FILES "${CMAKE_CURRENT_LIST_DIR}/../debian/rpi-imager.png" DESTINATION share/icons/hicolor/128x128/apps)
- install(FILES "linux/org.coreymclark.retro-imager.desktop" DESTINATION share/applications)
+ install(FILES "linux/org.raspberrypi.rpi-imager.desktop" DESTINATION share/applications)
install(FILES "${CMAKE_CURRENT_LIST_DIR}/../debian/rpi-imager.metainfo.xml" DESTINATION share/metainfo)
endif()
diff --git a/src/config.h b/src/config.h
index 3527123..d148216 100644
--- a/src/config.h
+++ b/src/config.h
@@ -8,13 +8,13 @@
/* Repository URL */
-#define OSLIST_URL "https://raw.githubusercontent.com/cmclark00/retro-imager/refs/heads/fix/src/os_list.json"
+#define OSLIST_URL "https://raw.githubusercontent.com/cmclark00/retro-imager/boogaloo/src/os_list.json"
/* Time synchronization URL (only used on eglfs QPA platform, URL must be HTTP) */
#define TIME_URL "http://downloads.raspberrypi.org/os_list_imagingutility_v4.json?time_synchronization"
/* Phone home the name of images downloaded for image popularity ranking */
-#define TELEMETRY_URL "http://technerdguys.com/telemetry-endpoint"
+#define TELEMETRY_URL "https://rpi-imager-stats.raspberrypi.com/downloads"
/* Hash algorithm for verifying (uncompressed image) checksum */
#define OSLIST_HASH_ALGORITHM QCryptographicHash::Sha256
diff --git a/src/icons/banner.png b/src/icons/banner.png
deleted file mode 100644
index 000982c..0000000
Binary files a/src/icons/banner.png and /dev/null differ
diff --git a/src/icons/icon.png b/src/icons/icon.png
deleted file mode 100644
index 9ca2554..0000000
Binary files a/src/icons/icon.png and /dev/null differ
diff --git a/src/icons/logo.png b/src/icons/logo.png
deleted file mode 100644
index 07540a1..0000000
Binary files a/src/icons/logo.png and /dev/null differ
diff --git a/src/icons/rocknix.png b/src/icons/rocknix.png
deleted file mode 100644
index 0dceb47..0000000
Binary files a/src/icons/rocknix.png and /dev/null differ
diff --git a/src/icons/rpi-imager.ico b/src/icons/rpi-imager.ico
index bf62901..ecb494b 100644
Binary files a/src/icons/rpi-imager.ico and b/src/icons/rpi-imager.ico differ
diff --git a/src/linux/org.coreymclark.retro-imager.desktop b/src/linux/org.raspberrypi.rpi-imager.desktop
similarity index 72%
rename from src/linux/org.coreymclark.retro-imager.desktop
rename to src/linux/org.raspberrypi.rpi-imager.desktop
index 1d6236e..5236899 100644
--- a/src/linux/org.coreymclark.retro-imager.desktop
+++ b/src/linux/org.raspberrypi.rpi-imager.desktop
@@ -1,11 +1,11 @@
[Desktop Entry]
Type=Application
Version=1.0
-Name=Retro Imager
+Name=Raspberry Pi Imager
Name[zh_CN]=树莓派启动盘制作工具
-Comment=Retro Imager
+Comment=Raspberry Pi Imager
Comment[zh_CN]=树莓派启动盘制作工具
Icon=rpi-imager
-Exec=retro-imager %F
+Exec=rpi-imager %F
Categories=Utility
StartupNotify=false
diff --git a/src/main.qml b/src/main.qml
index 7b202f8..162445c 100644
--- a/src/main.qml
+++ b/src/main.qml
@@ -11,7 +11,7 @@ import QtQuick.Controls.Material 2.2
import "qmlcomponents"
ApplicationWindow {
- // Define the colors
+ // Define the colors
property color beigeColor: "#c4bebb"
property color maroonColor: "#800000"
property color yellowColor: "#fcad01"
@@ -26,7 +26,7 @@ ApplicationWindow {
minimumWidth: imageWriter.isEmbeddedMode() ? -1 : 680
minimumHeight: imageWriter.isEmbeddedMode() ? -1 : 450
- title: qsTr("Retro Imager v%1").arg(imageWriter.constantVersion())
+ title: qsTr("Retro Imager v0.1")
FontLoader {id: roboto; source: "fonts/Roboto-Regular.ttf"}
FontLoader {id: robotoLight; source: "fonts/Roboto-Light.ttf"}
FontLoader {id: robotoBold; source: "fonts/Roboto-Bold.ttf"}
@@ -60,20 +60,28 @@ ApplicationWindow {
id: bg
spacing: 0
-
Rectangle {
id: logoContainer
- color: accentColor
implicitHeight: window.height/4
Image {
id: image
- source: "icons/banner.png"
- width: window.width * 1
+ source: "icons/logo_sxs_imager.png"
+
+ // Specify the maximum size of the image
+ width: window.width
height: window.height / 3
+
smooth: true
antialiasing: true
- fillMode: image.PreserveAspectFit
+
+ anchors {
+ left: logoContainer.left
+ top: logoContainer.top
+ bottom: logoContainer.bottom
+ topMargin: window.height
+ bottomMargin: window.height
+ }
}
}
@@ -138,8 +146,8 @@ ApplicationWindow {
bgrect.mouseOver = false
}
onClicked: {
- hwpopup.open()
- hwlist.forceActiveFocus()
+ hwpopup.open()
+ hwlist.forceActiveFocus()
}
}
Rectangle {
@@ -195,8 +203,8 @@ ApplicationWindow {
bgrect1.mouseOver = false
}
onClicked: {
- ospopup.open()
- osswipeview.currentItem.forceActiveFocus()
+ ospopup.open()
+ osswipeview.currentItem.forceActiveFocus()
}
}
@@ -254,10 +262,10 @@ ApplicationWindow {
bgrect2.mouseOver = false
}
onClicked: {
- imageWriter.startDriveListPolling()
- dstpopup.open()
- dstlist.forceActiveFocus()
- }
+ imageWriter.startDriveListPolling()
+ dstpopup.open()
+ dstlist.forceActiveFocus()
+ }
}
Rectangle {
@@ -479,8 +487,6 @@ ApplicationWindow {
}
}
- // Popup for hardware device selection with nested structure
- // Updated hwpopup definition
Popup {
id: hwpopup
x: 50
@@ -490,21 +496,6 @@ ApplicationWindow {
padding: 0
closePolicy: Popup.CloseOnEscape
property string hwselected: ""
- property string categorySelected: ""
-
- // Make sure to create both lists when the popup opens
- onOpened: {
- // Initialize the SwipeView if needed
- if (hwswipeview.count < 2) {
- // Make sure we already have the second view for device list
- var secondView = subHwlist.createObject(hwswipeview)
- hwswipeview.addItem(secondView)
- }
-
- // Make sure we're showing the first view (categories)
- hwswipeview.currentIndex = 0
- hwTitleText.text = qsTr("Retro Gaming Handheld Device")
- }
// background of title
Rectangle {
@@ -516,8 +507,7 @@ ApplicationWindow {
width: parent.width
Text {
- id: hwTitleText
- text: qsTr("Retro Gaming Handheld Device")
+ text: qsTr("Raspberry Pi Device")
horizontalAlignment: Text.AlignHCenter
anchors.fill: parent
anchors.topMargin: 10
@@ -546,7 +536,6 @@ ApplicationWindow {
}
}
}
-
// line under title
Rectangle {
id: hwpopup_title_separator
@@ -556,109 +545,30 @@ ApplicationWindow {
height: 1
}
- SwipeView {
- anchors.top: hwpopup_title_separator.bottom
- anchors.left: parent.left
- anchors.right: parent.right
- anchors.bottom: parent.bottom
- id: hwswipeview
- interactive: false
- clip: true
- // Add debug printing for SwipeView changes
- onCurrentIndexChanged: {
- console.log("SwipeView current index changed to: " + currentIndex)
- }
-
- ListView {
- id: hwlist
- clip: true
- model: ListModel {
- id: categoryModel
- // Main categories will be loaded from JSON
- }
- currentIndex: -1
- delegate: hwdelegate
- boundsBehavior: Flickable.StopAtBounds
- ScrollBar.vertical: ScrollBar {
- anchors.right: parent.right
- width: 10
- policy: hwlist.contentHeight > hwlist.height ? ScrollBar.AlwaysOn : ScrollBar.AsNeeded
- }
- Keys.onSpacePressed: {
- if (currentIndex != -1)
- selectHWcategory(model.get(currentIndex))
- }
- Accessible.onPressAction: {
- if (currentIndex != -1)
- selectHWcategory(model.get(currentIndex))
- }
- Keys.onEnterPressed: Keys.onSpacePressed(event)
- Keys.onReturnPressed: Keys.onSpacePressed(event)
- Keys.onRightPressed: {
- // Navigate into subcategories
- if (currentIndex != -1 && typeof model.get(currentIndex).subitems !== "undefined")
- selectHWcategory(model.get(currentIndex), true)
- }
- }
-
- // Add the initial device list view directly to ensure it exists
- ListView {
- id: initialDeviceList
- clip: true
- model: ListModel {
- ListElement {
- name: "Back"
- tags: "[]"
- icon: "icons/ic_chevron_left_40px.svg"
- description: "Go back to main menu"
- }
- }
- currentIndex: -1
- delegate: hwdelegate
- boundsBehavior: Flickable.StopAtBounds
- ScrollBar.vertical: ScrollBar {
- width: 10
- policy: parent.contentHeight > parent.height ? ScrollBar.AlwaysOn : ScrollBar.AsNeeded
- }
- Keys.onSpacePressed: {
- if (currentIndex != -1)
- selectHWitem(model.get(currentIndex))
- }
- Accessible.onPressAction: {
- if (currentIndex != -1)
- selectHWitem(model.get(currentIndex))
- }
- Keys.onEnterPressed: Keys.onSpacePressed(event)
- Keys.onReturnPressed: Keys.onSpacePressed(event)
- Keys.onLeftPressed: {
- hwswipeview.decrementCurrentIndex()
- hwpopup.categorySelected = ""
- hwTitleText.text = qsTr("Retro Gaming Handheld Device")
- }
- }
- }
- }
-
- // Component for the device subcategory list
- Component {
- id: subHwlist
-
ListView {
+ id: hwlist
clip: true
model: ListModel {
+ id: deviceModel
ListElement {
- name: "Back"
+ name: qsTr("[ All ]")
tags: "[]"
- icon: "icons/ic_chevron_left_40px.svg"
- description: "Go back to main menu"
+ icon: ""
+ description: ""
+ matching_type: "exclusive"
}
}
currentIndex: -1
delegate: hwdelegate
+ anchors.top: hwpopup_title_separator.bottom
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.bottom: parent.bottom
boundsBehavior: Flickable.StopAtBounds
ScrollBar.vertical: ScrollBar {
+ anchors.right: parent.right
width: 10
- policy: parent.contentHeight > parent.height ? ScrollBar.AlwaysOn : ScrollBar.AsNeeded
+ policy: hwlist.contentHeight > hwlist.height ? ScrollBar.AlwaysOn : ScrollBar.AsNeeded
}
Keys.onSpacePressed: {
if (currentIndex != -1)
@@ -670,11 +580,6 @@ ApplicationWindow {
}
Keys.onEnterPressed: Keys.onSpacePressed(event)
Keys.onReturnPressed: Keys.onSpacePressed(event)
- Keys.onLeftPressed: {
- hwswipeview.decrementCurrentIndex()
- hwpopup.categorySelected = ""
- hwTitleText.text = qsTr("Retro Gaming Handheld Device")
- }
}
}
@@ -846,14 +751,13 @@ ApplicationWindow {
}
}
- // Hardware delegate component for displaying devices and categories
Component {
id: hwdelegate
Item {
width: window.width-100
height: contentLayout.implicitHeight + 24
- Accessible.name: name+".\n"+(typeof description === "undefined" ? "" : description)
+ Accessible.name: name+".\n"+description
MouseArea {
id: hwMouseArea
@@ -862,31 +766,27 @@ ApplicationWindow {
hoverEnabled: true
onEntered: {
- bgrect3.mouseOver = true
+ bgrect.mouseOver = true
}
onExited: {
- bgrect3.mouseOver = false
+ bgrect.mouseOver = false
}
onClicked: {
- if (typeof subitems !== "undefined" && subitems) {
- selectHWcategory(model)
- } else {
- selectHWitem(model)
- }
+ selectHWitem(model)
}
}
Rectangle {
- id: bgrect3
+ id: bgrect
anchors.fill: parent
color: accentColor
visible: mouseOver && parent.ListView.view.currentIndex !== index
property bool mouseOver: false
}
Rectangle {
- id: borderrect2
+ id: borderrect
implicitHeight: 1
implicitWidth: parent.width
color: accentColor
@@ -925,21 +825,11 @@ ApplicationWindow {
Text {
Layout.fillWidth: true
- text: typeof description === "undefined" ? "" : description
font.family: roboto.name
wrapMode: Text.WordWrap
color: accentColor
}
}
-
- // Show right chevron for categories with subitems
- Image {
- source: "icons/ic_chevron_right_40px.svg"
- visible: typeof subitems !== "undefined" && subitems
- Layout.preferredHeight: 40
- Layout.preferredWidth: 40
- fillMode: Image.PreserveAspectFit
- }
}
}
}
@@ -1671,118 +1561,54 @@ ApplicationWindow {
}
}
- // Function to fetch OS list and populate the hardware categories
function fetchOSlist() {
- try {
- var oslist_json = imageWriter.getFilteredOSlist();
- var o = JSON.parse(oslist_json);
- var oslist_parsed = oslistFromJson(o);
-
- if (oslist_parsed === false) {
- return;
- }
-
- osmodel.clear();
- for (var i in oslist_parsed) {
- osmodel.append(oslist_parsed[i]);
- }
+ var oslist_json = imageWriter.getFilteredOSlist();
+ var o = JSON.parse(oslist_json)
+ var oslist_parsed = oslistFromJson(o)
+ if (oslist_parsed === false)
+ return
+ osmodel.clear()
+ for (var i in oslist_parsed) {
+ osmodel.append(oslist_parsed[i])
+ }
- if ("imager" in o) {
- var imager = o["imager"];
+ if ("imager" in o) {
+ var imager = o["imager"]
- if ("devices" in imager) {
- // Clear the category model
- categoryModel.clear();
-
- // Add an "All" option at the top
- categoryModel.append({
- name: qsTr("[ All ]"),
- tags: "[]",
- icon: "",
- description: qsTr("Show firmware for all devices"),
- matching_type: "inclusive"
- });
-
- // Process device categories more safely
- var devices = imager["devices"];
- if (devices && Array.isArray(devices)) {
- for (var j = 0; j < devices.length; j++) {
- // Create a plain JavaScript object (not a complex QML type)
- var device = {
- name: devices[j].name || "",
- description: devices[j].description || "",
- icon: devices[j].icon || "",
- matching_type: devices[j].matching_type || ""
- };
-
- // Handle subitems properly
- if (devices[j].subitems && Array.isArray(devices[j].subitems)) {
- // Create a new array for subitems
- var subitems = [];
-
- for (var k = 0; k < devices[j].subitems.length; k++) {
- var subitem = devices[j].subitems[k];
-
- // Create a plain object with only the properties we need
- var newSubitem = {
- name: subitem.name || "",
- description: subitem.description || "",
- icon: subitem.icon || "",
- matching_type: subitem.matching_type || ""
- };
-
- // Ensure tags is a properly formatted string
- if (subitem.tags) {
- if (typeof subitem.tags === "string") {
- newSubitem.tags = subitem.tags;
- } else if (Array.isArray(subitem.tags)) {
- newSubitem.tags = JSON.stringify(subitem.tags);
- } else {
- newSubitem.tags = "[]";
- }
- } else {
- newSubitem.tags = "[]";
- }
-
- subitems.push(newSubitem);
- }
-
- // Add the subitems array
- device.subitems = subitems;
- }
-
- // Add the device category to the model
- categoryModel.append(device);
- }
- }
- }
-
- // Rest of your function remains unchanged
- if (imageWriter.getBoolSetting("check_version") && "latest_version" in imager && "url" in imager) {
- if (!imageWriter.isEmbeddedMode() && imageWriter.isVersionNewer(imager["latest_version"])) {
- updatepopup.url = imager["url"];
- updatepopup.openPopup();
- }
- }
-
- if ("default_os" in imager) {
- selectNamedOS(imager["default_os"], osmodel);
- }
-
- if (imageWriter.isEmbeddedMode()) {
- if ("embedded_default_os" in imager) {
- selectNamedOS(imager["embedded_default_os"], osmodel);
- }
- if ("embedded_default_destination" in imager) {
- imageWriter.startDriveListPolling();
- setDefaultDest.drive = imager["embedded_default_destination"];
- setDefaultDest.start();
+ if ("devices" in imager)
+ {
+ deviceModel.clear()
+ var devices = imager["devices"]
+ for (var j in devices)
+ {
+ devices[j]["tags"] = JSON.stringify(devices[j]["tags"])
+ deviceModel.append(devices[j])
+ if ("default" in devices[j] && devices[j]["default"])
+ {
+ hwlist.currentIndex = deviceModel.count-1
}
}
}
- } catch (e) {
- console.error("Error in fetchOSlist:", e);
- onError("Error loading device list: " + e.message);
+
+ if (imageWriter.getBoolSetting("check_version") && "latest_version" in imager && "url" in imager) {
+ if (!imageWriter.isEmbeddedMode() && imageWriter.isVersionNewer(imager["latest_version"])) {
+ updatepopup.url = imager["url"]
+ updatepopup.openPopup()
+ }
+ }
+ if ("default_os" in imager) {
+ selectNamedOS(imager["default_os"], osmodel)
+ }
+ if (imageWriter.isEmbeddedMode()) {
+ if ("embedded_default_os" in imager) {
+ selectNamedOS(imager["embedded_default_os"], osmodel)
+ }
+ if ("embedded_default_destination" in imager) {
+ imageWriter.startDriveListPolling()
+ setDefaultDest.drive = imager["embedded_default_destination"]
+ setDefaultDest.start()
+ }
+ }
}
}
@@ -1826,265 +1652,63 @@ ApplicationWindow {
return m
}
- // Function to handle new category/subcategory hardware list
- function newHwSublist() {
- try {
- // Make sure we have enough items in SwipeView
- if (hwswipeview.count <= hwswipeview.currentIndex + 1) {
- var newlist = subHwlist.createObject(hwswipeview);
- if (!newlist) {
- console.error("Failed to create subHwlist component");
- return null;
- }
- hwswipeview.addItem(newlist);
- }
-
- var nextView = hwswipeview.itemAt(hwswipeview.currentIndex + 1);
- if (!nextView) {
- console.error("Failed to get next view in SwipeView");
- return null;
- }
-
- var m = nextView.model;
- if (!m) {
- console.error("Next view does not have a model");
- return null;
- }
-
- // Clear existing items except for the first one (Back button)
- if (m.count > 1) {
- m.remove(1, m.count - 1);
- }
-
- return m;
- } catch (e) {
- console.error("Error in newHwSublist:", e);
- return null;
- }
- }
-
- // Function to select a hardware category (parent item with subitems)
- function selectHWcategory(hwmodel, navigateOnly) {
- try {
- // Add defensive checks
- if (!hwmodel) {
- console.error("selectHWcategory called with null model");
- return;
- }
-
- if (hwmodel.name === qsTr("Back")) {
- hwswipeview.decrementCurrentIndex();
- hwpopup.categorySelected = "";
- hwTitleText.text = qsTr("Retro Gaming Handheld Device");
- return;
- }
-
- // Update the title to show current category
- hwTitleText.text = hwmodel.name;
- hwpopup.categorySelected = hwmodel.name;
-
- // Make sure we have a SwipeView with at least two items
- if (hwswipeview.count < 2) {
- // Create a new sublist view if needed
- var newlist = subHwlist.createObject(hwswipeview);
- if (!newlist) {
- console.error("Failed to create new subHwlist");
- return;
- }
- hwswipeview.addItem(newlist);
- }
-
- // Get the model of the next view
- var nextView = hwswipeview.itemAt(hwswipeview.currentIndex + 1);
- if (!nextView) {
- console.error("Failed to get next view in SwipeView");
- return;
- }
-
- var m = nextView.model;
- if (!m) {
- console.error("Next view does not have a model");
- return;
- }
-
- // Clear all items except the first one (Back button)
- if (m.count > 1) {
- m.remove(1, m.count - 1);
- }
-
- // Parse subitems if they exist - use a safer approach
- if (typeof hwmodel.subitems !== "undefined" && hwmodel.subitems) {
- var subitems = hwmodel.subitems;
-
- console.log("Processing subitems for: " + hwmodel.name);
- console.log("Subitems type: " + typeof subitems);
-
- // Check if we need to convert an object to an array
- if (!Array.isArray(subitems) && typeof subitems === "object") {
- console.log("Converting object to array");
- var subitemsArray = [];
- for (var key in subitems) {
- if (subitems.hasOwnProperty(key)) {
- var subitem = subitems[key];
- // Make sure each item has a name property
- if (typeof subitem === "object") {
- if (!subitem.name && key) {
- subitem.name = key;
- }
- subitemsArray.push(subitem);
- }
- }
- }
- subitems = subitemsArray;
- }
-
- // Make sure subitems is an array before iterating
- if (Array.isArray(subitems)) {
- console.log("Subitems count: " + subitems.length);
-
- for (var i = 0; i < subitems.length; i++) {
- console.log("Processing subitem: " + i + " - " + (subitems[i].name || "unnamed"));
-
- // Create a simple object with just the properties we need
- var item = {
- name: subitems[i].name || "",
- description: subitems[i].description || "",
- icon: subitems[i].icon || "",
- matching_type: subitems[i].matching_type || ""
- };
-
- // Handle tags appropriately
- if (typeof subitems[i].tags === "string") {
- item.tags = subitems[i].tags;
- } else if (Array.isArray(subitems[i].tags)) {
- item.tags = JSON.stringify(subitems[i].tags);
- } else {
- item.tags = "[]";
- }
-
- m.append(item);
- }
-
- // Now explicitly increment the SwipeView index to show the device list
- console.log("Setting next view current index to 0");
- nextView.currentIndex = 0;
-
- console.log("Incrementing SwipeView from index: " + hwswipeview.currentIndex);
- hwswipeview.incrementCurrentIndex();
- console.log("New SwipeView index: " + hwswipeview.currentIndex);
- } else {
- console.error("Subitems is not an array or object: " + typeof subitems);
- onError("Error: Invalid subitems format");
- }
- } else {
- console.log("No subitems found for: " + hwmodel.name);
-
- // If it's not a navigation-only action and has no subitems, select the item
- if (!navigateOnly) {
- selectHWitem(hwmodel);
- }
- }
- } catch (e) {
- console.error("Error in selectHWcategory:", e);
- onError("Error navigating hardware categories: " + e.message);
- }
- }
-
function selectHWitem(hwmodel) {
- try {
- // Add defensive checks
- if (!hwmodel) {
- console.error("selectHWitem called with null model");
- return;
+ /* Default is exclusive matching */
+ var inclusive = false
+
+ if (hwmodel.matching_type) {
+ switch (hwmodel.matching_type) {
+ case "exclusive":
+ break;
+ case "inclusive":
+ inclusive = true
+ break;
}
-
- if (hwmodel.name === qsTr("Back")) {
- hwswipeview.decrementCurrentIndex();
- hwTitleText.text = qsTr("Retro Gaming Handheld Device");
- hwpopup.categorySelected = "";
- return;
- }
-
- // Default is exclusive matching
- var inclusive = false;
-
- if (hwmodel.matching_type) {
- switch (hwmodel.matching_type) {
- case "exclusive":
- break;
- case "inclusive":
- inclusive = true;
- break;
- }
- }
-
- // Handle tags with extra care
- var tags = [];
-
- try {
- if (typeof hwmodel.tags === "string") {
- if (hwmodel.tags === "[]" || hwmodel.tags === "") {
- // Empty tags array
- tags = [];
- } else {
- // Parse JSON string
- tags = JSON.parse(hwmodel.tags);
- }
- } else if (Array.isArray(hwmodel.tags)) {
- // Direct array
- tags = hwmodel.tags;
- } else if (hwmodel.tags) {
- // Some other value, convert to string and try to parse
- tags = JSON.parse(String(hwmodel.tags));
- }
- } catch (e) {
- console.error("Error parsing tags:", e);
- tags = [];
- }
-
- // Call the filtering function with the parsed tags
- console.log("Setting HW filter with tags:", JSON.stringify(tags));
- imageWriter.setHWFilterList(tags, inclusive);
-
- // Reload list
- var oslist_json = imageWriter.getFilteredOSlist();
- var o = JSON.parse(oslist_json);
- var oslist_parsed = oslistFromJson(o);
-
- if (oslist_parsed === false) {
- return;
- }
-
- if (oslist_parsed.length != 0) {
- var candidate = oslist_parsed[0];
-
- if ("description" in candidate &&
- !("subitems" in candidate) &&
- !candidate["description"].includes("(Recommended)")
- )
- {
- candidate["description"] += " (Recommended)";
- }
- }
-
- osmodel.clear();
- for (var i in oslist_parsed) {
- osmodel.append(oslist_parsed[i]);
- }
-
- // When the HW device is changed, reset the OS selection
- oslist.currentIndex = -1;
- osswipeview.currentIndex = 0;
- imageWriter.setSrc("");
- osbutton.text = qsTr("CHOOSE CFW");
- writebutton.enabled = false;
-
- hwbutton.text = hwmodel.name;
- hwpopup.close();
- } catch (e) {
- console.error("Error in selectHWitem:", e);
- onError("Error selecting hardware item: " + e.message);
}
+
+ imageWriter.setHWFilterList(hwmodel.tags, inclusive)
+
+ /* Reload list */
+ var oslist_json = imageWriter.getFilteredOSlist();
+ var o = JSON.parse(oslist_json)
+ var oslist_parsed = oslistFromJson(o)
+ if (oslist_parsed === false)
+ return
+
+ /* As we're filtering the OS list, we need to ensure we present a 'Recommended' OS.
+ * To do this, we exploit a convention of how we build the OS list. By convention,
+ * the preferred OS for a device is listed at the top level of the list, and is at the
+ * lowest index. So..
+ */
+ if (oslist_parsed.length != 0) {
+ var candidate = oslist_parsed[0]
+
+ if ("description" in candidate &&
+ !("subitems" in candidate) &&
+ !candidate["description"].includes("(Recommended)")
+ )
+ {
+ candidate["description"] += " (Recommended)"
+ }
+ }
+
+ osmodel.clear()
+ for (var i in oslist_parsed) {
+ osmodel.append(oslist_parsed[i])
+ }
+
+ // When the HW device is changed, reset the OS selection otherwise
+ // you get a weird effect with the selection moving around in the list
+ // when the user next opens the OS list, and the user could still have
+ // an OS selected which isn't compatible with this HW device
+ oslist.currentIndex = -1
+ osswipeview.currentIndex = 0
+ imageWriter.setSrc("")
+ osbutton.text = qsTr("CHOOSE CFW")
+ writebutton.enabled = false
+
+ hwbutton.text = hwmodel.name
+ hwpopup.close()
}
/// Is the item a sub-list or sub-sub-list in the OS selection model?
@@ -2109,29 +1733,6 @@ ApplicationWindow {
if (typeof(d.subitems_json) == "string" && d.subitems_json !== "") {
var m = newSublist()
var subitems = JSON.parse(d.subitems_json)
-
- // Handle the case when subitems is an object instead of an array
- if (!Array.isArray(subitems) && typeof subitems === "object") {
- console.log("Converting object to array from subitems_json");
-
- // Create an array from the object properties
- var subitemsArray = [];
- for (var key in subitems) {
- if (subitems.hasOwnProperty(key)) {
- var subitem = subitems[key];
- // Make sure each item has a name property
- if (typeof subitem === "object") {
- if (!subitem.name && key) {
- subitem.name = key;
- }
- subitemsArray.push(subitem);
- }
- }
- }
-
- console.log("Converted to array with " + subitemsArray.length + " items");
- subitems = subitemsArray;
- }
for (var i in subitems)
{
@@ -2157,7 +1758,7 @@ ApplicationWindow {
{
console.log("Failure: Backend should have pre-flattened the JSON!");
- osswipeview.itemAt(osswipeview.currentIndex+1).currentIndex = (selectFirstSubitem ===true) ? 0 : -1
+ osswipeview.itemAt(osswipeview.currentIndex+1).currentIndex = (selectFirstSubitem === true) ? 0 : -1
osswipeview.incrementCurrentIndex()
}
} else if (d.url === "") {
@@ -2204,4 +1805,4 @@ ApplicationWindow {
writebutton.enabled = true
}
}
-}
\ No newline at end of file
+}
diff --git a/src/os_list.json b/src/os_list.json
index fedc395..2773259 100644
--- a/src/os_list.json
+++ b/src/os_list.json
@@ -1,552 +1,135 @@
{
- "os_list": [
- {
- "name": "muOS 2410.1 Banana for RG35XX Plus",
- "description": "muOS 2410.1 Banana firmware optimized for Anbernic RG35XX Plus.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/logo.png?raw=true",
- "url": "https://dl.muos.dev/RELEASE/2410.1/muOS-RG35XX-PLUS-2410.1-BANANA-d1bae326.img.gz",
- "release_date": "2024-10-12",
- "image_download_size": 2151537628,
- "extract_size": 4504682496,
- "extract_sha256": "62c492047923e3e8709e0b015760b7f1e0db2ccab40e741fe067b49d96957624",
- "devices": [
- "rg35xx_plus"
- ]
- },
- {
- "name": "muOS 2410.1 Banana for RG28XX",
- "description": "muOS 2410.1 Banana firmware optimized for Anbernic RG28XX.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/logo.png?raw=true",
- "url": "https://dl.muos.dev/RELEASE/2410.1/muOS-RG28XX-2410.1-BANANA-d1bae326.img.gz",
- "release_date": "2024-10-12",
- "image_download_size": 2158432397,
- "extract_size": 4504682496,
- "extract_sha256": "62c492047923e3e8709e0b015760b7f1e0db2ccab40e741fe067b49d96957624",
- "devices": [
- "rg28xx"
- ]
- },
- {
- "name": "muOS 2410.1 Banana for RG35XXH",
- "description": "muOS 2410.1 Banana firmware optimized for Anbernic RG35XXH.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/logo.png?raw=true",
- "url": "https://dl.muos.dev/RELEASE/2410.1/muOS-RG35XX-H-2410.1-BANANA-a10951c4.img.gz",
- "release_date": "2024-10-12",
- "image_download_size": 2118435484,
- "extract_size": 4504682496,
- "extract_sha256": "a84a1386de3b046aea05c75a4ccc8da0fbc2ee42f89b7b78a720cf657f45d3d2",
- "devices": [
- "rg35xxh"
- ]
- },
- {
- "name": "muOS 2410.1 Banana for RG35XXSP",
- "description": "muOS 2410.1 Banana firmware optimized for Anbernic RG35XXSP.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/logo.png?raw=true",
- "url": "https://dl.muos.dev/RELEASE/2410.1/muOS-RG35XX-SP-2410.1-BANANA-d1bae326.img.gz",
- "release_date": "2024-10-12",
- "image_download_size": 2176694960,
- "extract_size": 4504682496,
- "extract_sha256": "9a529d2f089bba6616615026c6ec16e282d622adbc6ae97172b7ab73d32092c4",
- "devices": [
- "rg35xx_sp"
- ]
- },
- {
- "name": "muOS 2410.1 Banana for RG35XX24",
- "description": "muOS 2410.1 Banana firmware optimized for Anbernic RG35XX24.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/logo.png?raw=true",
- "url": "https://dl.muos.dev/RELEASE/2410.1/muOS-RG35XX-2024-2410.1-BANANA-d1bae326.img.gz",
- "release_date": "2024-10-12",
- "image_download_size": 2151137645,
- "extract_size": 4504682496,
- "extract_sha256": "fc0da5aa0dcda244be8dec28115210200fe259c374bb7b25d6d26f4db812d351",
- "devices": [
- "rg35xx_2024"
- ]
- },
- {
- "name": "muOS 2410.1 Banana for RG40XXH",
- "description": "muOS 2410.1 Banana firmware optimized for Anbernic RG40XXH.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/logo.png?raw=true",
- "url": "https://dl.muos.dev/RELEASE/2410.1/muOS-RG40XX-H-2410.1-BANANA-d1bae326.img.gz",
- "release_date": "2024-10-12",
- "image_download_size": 2132388103,
- "extract_size": 4504682496,
- "extract_sha256": "fe51f4f3a7f9e51c34eb78ef704a9a6af0233d6fdf87ccd070444034003afe5c",
- "devices": [
- "rg40xxh"
- ]
- },
- {
- "name": "muOS 2410.1 Banana for RG40XXV",
- "description": "muOS 2410.1 Banana firmware optimized for Anbernic RG40XXV.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/logo.png?raw=true",
- "url": "https://dl.muos.dev/RELEASE/2410.1/muOS-RG40XX-V-2410.1-BANANA-d1bae326.img.gz",
- "release_date": "2024-10-12",
- "image_download_size": 2132476961,
- "extract_size": 4504682496,
- "extract_sha256": "aa2cd35010e1414c62b0460d8f193d7a3c56ebcf3f59a220aebe995ab93bb051",
- "devices": [
- "rg40xxv"
- ]
- },
- {
- "name": "ROCKNIX 20241120 for Rockchip RK3326 devices, A image.",
- "description": "ROCKNIX 20241120 firmware optimized for Rockchip RK3326 devices.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/rocknix.png?raw=true",
- "url": "https://github.com/ROCKNIX/distribution/releases/download/20241120/ROCKNIX-RK3326.aarch64-20241120-a.img.gz",
- "release_date": "2024-11-20",
- "image_download_size": 1348717111,
- "extract_size": 2197815296,
- "extract_sha256": "8cc28cca1d4d88464cf156691a540111385c5b94f30aa067456cc80fcd12b747",
- "devices": [
- "rg351p",
- "rg351m",
- "rg351v",
- "r33s",
- "r35s",
- "r36s",
- "oga",
- "ogs",
- "xu10",
- "v10",
- "rgb10"
- ]
- },
- {
- "name": "ROCKNIX 20241120 for Rockchip RK3326 devices, B image.",
- "description": "ROCKNIX 20241120 firmware optimized for Rockchip RK3326 devices.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/rocknix.png?raw=true",
- "url": "https://github.com/ROCKNIX/distribution/releases/download/20241120/ROCKNIX-RK3326.aarch64-20241120-b.img.gz",
- "release_date": "2024-11-20",
- "image_download_size": 1348619756,
- "extract_size": 2197815296,
- "extract_sha256": "e43ed5ea9c8c93408a180e57409e9a07d7594ecb1ffe46f21024655f46ea9050",
- "devices": [
- "xu_mini_m",
- "rgb10x"
- ]
- },
- {
- "name": "ROCKNIX 20241120 for Rockchip RK3399 devices",
- "description": "ROCKNIX 20241120 firmware optimized for Rockchip RK3399 devices.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/rocknix.png?raw=true",
- "url": "https://github.com/ROCKNIX/distribution/releases/download/20241120/ROCKNIX-RK3399.aarch64-20241120.img.gz",
- "release_date": "2024-11-20",
- "image_download_size": 1288581465,
- "extract_size": 2198863872,
- "extract_sha256": "53091696a540d693d99d515524816825a057823c0fe1f91a0b5e4837baeb24b9",
- "devices": [
- "rg552"
- ]
- },
- {
- "name": "ROCKNIX 20241120 for Rockchip RK3566 devices",
- "description": "ROCKNIX 20241120 firmware optimized for Rockchip RK3566 devices.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/rocknix.png?raw=true",
- "url": "https://github.com/ROCKNIX/distribution/releases/download/20241120/ROCKNIX-RK3566.aarch64-20241120-Generic.img.gz",
- "release_date": "2024-11-20",
- "image_download_size": 1391749865,
- "extract_size": 2198863872,
- "extract_sha256": "4917f090e9364f47de5cf8663c0741eb79b8236c4b455a5ae4d3c8889744de27",
- "devices": [
- "rg353p",
- "rg353m",
- "rg353v",
- "rg353vs",
- "rg353ps",
- "rg503",
- "rg_arc_d",
- "rg_arc_s",
- "rk2023",
- "rgb10_max_3",
- "rgb30",
- "rgb20sx"
- ]
- },
- {
- "name": "ROCKNIX 20241120 for Powkiddy X55 devices",
- "description": "ROCKNIX 20241120 firmware optimized for Powkiddy X55 devices.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/rocknix.png?raw=true",
- "url": "https://github.com/ROCKNIX/distribution/releases/download/20241120/ROCKNIX-RK3566.aarch64-20241120-Powkiddy_x55.img.gz",
- "release_date": "2024-11-20",
- "image_download_size": 1391396234,
- "extract_size": 2198863872,
- "extract_sha256": "35391e0a49de413a2672893a07ed6ca116f90746baef620eebf8d3ab7b2ad5f7",
- "devices": [
- "x55"
- ]
- },
- {
- "name": "ROCKNIX 20241120 for Hardkernel ODROID Go Ultra and Powkiddy RGB10 Max 3 Pro devices",
- "description": "ROCKNIX 20241120 firmware optimized for ODROID Go Ultra and RGB10 Max 3 Pro devices.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/rocknix.png?raw=true",
- "url": "https://github.com/ROCKNIX/distribution/releases/download/20241120/ROCKNIX-S922X.aarch64-20241120.img.gz",
- "release_date": "2024-11-20",
- "image_download_size": 1416924259,
- "extract_size": 2185232384,
- "extract_sha256": "86cd0a48d541e3e68582107748e2f77656c153d11f6efd14563fb65a0f9c5076",
- "devices": [
- "ogu",
- "rgb10_max_3_pro"
- ]
- },
- {
- "name": "ROCKNIX 20240815 for Hardkernel ODROID N2/N2+ devices",
- "description": "ROCKNIX 20240815 firmware optimized for Hardkernel ODROID N2/N2+ devices.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/rocknix.png?raw=true",
- "url": "https://github.com/ROCKNIX/distribution/releases/download/20240815/ROCKNIX-S922X.aarch64-20240815-Odroid_N2.img.gz",
- "release_date": "2024-08-15",
- "image_download_size": 1249723275,
- "extract_size": 2185232384,
- "extract_sha256": "7e5b56f4a0c0a9d9c64e7b1ba4472dd7e2dac9c28a23585098e16349f30c7fc9",
- "devices": [
- "on2",
- "on2_plus"
- ]
- },
- {
- "name": "ROCKNIX 20240815 for Hardkernel ODROID N2L devices",
- "description": "ROCKNIX 20240815 firmware optimized for Hardkernel ODROID N2L devices.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/rocknix.png?raw=true",
- "url": "https://github.com/ROCKNIX/distribution/releases/download/20240815/ROCKNIX-S922X.aarch64-20240815-Odroid_N2L.img.gz",
- "release_date": "2024-08-15",
- "image_download_size": 1249707786,
- "extract_size": 2185232384,
- "extract_sha256": "5af36c78b57dcb35c910bb72c2ed28208fe94c94d5b7fda83d73ef33a2419910",
- "devices": [
- "on2l"
- ]
- },
- {
- "name": "ROCKNIX 20241120 for Rockchip RK3588 devices",
- "description": "ROCKNIX 20241120 firmware optimized for Rockchip RK3588 devices.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/rocknix.png?raw=true",
- "url": "https://github.com/ROCKNIX/distribution/releases/download/20241120/ROCKNIX-RK3588.aarch64-20241120.img.gz",
- "release_date": "2024-11-20",
- "image_download_size": 1451047021,
- "extract_size": 2198863872,
- "extract_sha256": "ec81027b7d9b757f09ccd78ce38c6993009e66ddd4b7e1a1206dc104ad739754",
- "devices": [
- "ace",
- "orange_pi_5",
- "orange_pi_5_plus",
- "radxa_rock_5a",
- "radxa_rock_5b",
- "radxa_rock_5b_plus",
- "radxa_rock_cm5",
- "nova"
- ]
- },
- {
- "name": "ROCKNIX 20241120 for Retroid Pocket Mini and Retroid Pocket 5 devices",
- "description": "ROCKNIX 20241120 firmware optimized for Snapdragon 865 devices.",
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/rocknix.png?raw=true",
- "url": "https://github.com/ROCKNIX/distribution/releases/download/20241120/ROCKNIX-SD865.aarch64-20241120.img.gz",
- "release_date": "2024-11-20",
- "image_download_size": 1404994449,
- "extract_size": 2198863872,
- "extract_sha256": "82f9336c27c9b733322e7e9f685bc1e98aa4eedb0c17f9ae297edb983ada6f39",
- "devices": [
- "rpmini",
- "rp5"
- ]
- }
- ],
- "imager": {
- "devices": [
- {
- "name": "Anbernic",
- "subitems": [
- {
- "name": "Anbernic RG40XXH",
- "tags": ["rg40xxh"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG40XX%20H.png?raw=true"
- },
- {
- "name": "Anbernic RG40XXV",
- "tags": ["rg40xxv"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG40XX%20V.png?raw=true"
- },
- {
- "name": "Anbernic RG35XXH",
- "tags": ["rg35xxh"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX%20H.png?raw=true"
- },
- {
- "name": "Anbernic RG35XX Plus",
- "tags": ["rg35xx_plus"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX%20-%20PLUS.png?raw=true"
- },
- {
- "name": "Anbernic RG35XX SP",
- "tags": ["rg35xx_sp"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX%20SP.png?raw=true"
- },
- {
- "name": "Anbernic RG35XX 2024",
- "tags": ["rg35xx_2024"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX%20-%202024.png?raw=true"
- },
- {
- "name": "Anbernic RG28XX",
- "tags": ["rg28xx"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG28XX.png?raw=true"
- },
- {
- "name": "Anbernic RG351P",
- "tags": ["rg351p"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Anbernic RG351M",
- "tags": ["rg351m"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Anbernic RG351V",
- "tags": ["rg351v"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Anbernic RG353P",
- "tags": ["rg353p"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Anbernic RG353M",
- "tags": ["rg353m"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Anbernic RG353V",
- "tags": ["rg353v"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Anbernic RG353VS",
- "tags": ["rg353vs"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Anbernic RG353PS",
- "tags": ["rg353ps"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Anbernic RG503",
- "tags": ["rg503"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Anbernic RG Arc-D",
- "tags": ["rg_arc_d"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Anbernic RG Arc-S",
- "tags": ["rg_arc_s"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- }
- ]
- },
- {
- "name": "Game Console",
- "subitems": [
- {
- "name": "Game Console R33S",
- "tags": ["r33s"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Game Console R35S",
- "tags": ["r35s"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Game Console R36S",
- "tags": ["r36s"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- }
- ]
- },
- {
- "name": "ODROID",
- "subitems": [
- {
- "name": "ODROID Go Advance",
- "tags": ["oga"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "ODROID Go Super",
- "tags": ["ogs"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "ODROID N2",
- "tags": ["on2"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "ODROID N2 Plus",
- "tags": ["on2_plus"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "ODROID N2L",
- "tags": ["on2l"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- }
- ]
- },
- {
- "name": "MagicX",
- "subitems": [
- {
- "name": "MagicX XU10",
- "tags": ["xu10"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "MagicX XU Mini M",
- "tags": ["xu_mini_m"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- }
- ]
- },
- {
- "name": "Powkiddy",
- "subitems": [
- {
- "name": "Powkiddy V10",
- "tags": ["v10"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Powkiddy RGB10",
- "tags": ["rgb10"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Powkiddy RK2023",
- "tags": ["rk2023"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Powkiddy RGB10 Max 3",
- "tags": ["rgb10_max_3"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Powkiddy RGB30",
- "tags": ["rgb30"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Powkiddy RGB20SX",
- "tags": ["rgb20sx"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Anbernic RG552",
- "tags": ["rg552"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "ODROID Go Ultra",
- "tags": ["ogu"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Powkiddy RGB10 Max 3 Pro",
- "tags": ["rgb10_max_3_pro"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Powkiddy X55",
- "tags": ["x55"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- }
- ]
- },
- {
- "name": "Gameforce",
- "subitems": [
- {
- "name": "Gameforce Ace (default)",
- "tags": ["ace"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- }
- ]
- },
- {
- "name": "Orange Pi",
- "subitems": [
- {
- "name": "Orange Pi 5",
- "tags": ["orange_pi_5"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Orange Pi 5 Plus",
- "tags": ["orange_pi_5_plus"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- }
- ]
- },
- {
- "name": "Radxa",
- "subitems": [
- {
- "name": "Radxa Rock 5a",
- "tags": ["radxa_rock_5a"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Radxa Rock 5b",
- "tags": ["radxa_rock_5b"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Radxa Rock 5b Plus",
- "tags": ["radxa_rock_5b_plus"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Radxa Rock CM5",
- "tags": ["radxa_rock_cm5"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- }
- ]
- },
- {
- "name": "Indiedroid",
- "subitems": [
- {
- "name": "Indiedroid Nova (Must set dtb in extlinuix.conf)",
- "tags": ["nova"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- }
- ]
- },
- {
- "name": "Retroid",
- "subitems": [
- {
- "name": "Retroid Pocket Mini",
- "tags": ["rpmini"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- },
- {
- "name": "Retroid Pocket 5",
- "tags": ["rp5"],
- "icon": "https://github.com/cmclark00/retro-imager/blob/fix/src/icons/RG35XX.png?raw=true"
- }
- ]
- }
- ]
- }
+ "os_list": [
+ {
+ "name": "muOS 2410.1 Banana for RG35XX Plus",
+ "description": "muOS 2410.1 Banana firmware optimized for Anbernic RG35XX Plus.",
+ "icon": "https://muos.dev/lib/tpl/muos/images/logo.png",
+ "url": "https://dl.muos.dev/RELEASE/2410.1/muOS-RG35XX-PLUS-2410.1-BANANA-d1bae326.img.gz",
+ "release_date": "2024-10-12",
+ "image_download_size": 2151537628,
+ "extract_size": 4504682496,
+ "extract_sha256": "62c492047923e3e8709e0b015760b7f1e0db2ccab40e741fe067b49d96957624",
+ "devices": [
+ "rg35xx_plus"
+ ]
+ },
+ {
+ "name": "muOS 2410.1 Banana for RG28XX",
+ "description": "muOS 2410.1 Banana firmware optimized for Anbernic RG28XX.",
+ "icon": "https://muos.dev/lib/tpl/muos/images/logo.png",
+ "url": "https://dl.muos.dev/RELEASE/2410.1/muOS-RG28XX-2410.1-BANANA-d1bae326.img.gz",
+ "release_date": "2024-10-12",
+ "image_download_size": 2158432397,
+ "extract_size": 4504682496,
+ "extract_sha256": "62c492047923e3e8709e0b015760b7f1e0db2ccab40e741fe067b49d96957624",
+ "devices": [
+ "rg28xx"
+ ]
+ },
+ {
+ "name": "muOS 2410.1 Banana for RG35XXH",
+ "description": "muOS 2410.1 Banana firmware optimized for Anbernic RG35XXH.",
+ "icon": "https://muos.dev/lib/tpl/muos/images/logo.png",
+ "url": "https://dl.muos.dev/RELEASE/2410.1/muOS-RG35XX-H-2410.1-BANANA-d1bae326.img.gz",
+ "release_date": "2024-10-12",
+ "image_download_size": 2132124667,
+ "extract_size": 4504682496,
+ "extract_sha256": "d0d54809fcc128e43a42a2e13bfcb3427be97e05d0776263612ccce08677ea08",
+ "devices": [
+ "rg35xxh"
+ ]
+ },
+ {
+ "name": "muOS 2410.1 Banana for RG35XXSP",
+ "description": "muOS 2410.1 Banana firmware optimized for Anbernic RG35XXSP.",
+ "icon": "https://muos.dev/lib/tpl/muos/images/logo.png",
+ "url": "https://dl.muos.dev/RELEASE/2410.1/muOS-RG35XX-SP-2410.1-BANANA-d1bae326.img.gz",
+ "release_date": "2024-10-12",
+ "image_download_size": 2176694960,
+ "extract_size": 4504682496,
+ "extract_sha256": "9a529d2f089bba6616615026c6ec16e282d622adbc6ae97172b7ab73d32092c4",
+ "devices": [
+ "rg35xx_sp"
+ ]
+ },
+ {
+ "name": "muOS 2410.1 Banana for RG35XX24",
+ "description": "muOS 2410.1 Banana firmware optimized for Anbernic RG35XX24.",
+ "icon": "https://muos.dev/lib/tpl/muos/images/logo.png",
+ "url": "https://dl.muos.dev/RELEASE/2410.1/muOS-RG35XX-2024-2410.1-BANANA-d1bae326.img.gz",
+ "release_date": "2024-10-12",
+ "image_download_size": 2151137645,
+ "extract_size": 4504682496,
+ "extract_sha256": "fc0da5aa0dcda244be8dec28115210200fe259c374bb7b25d6d26f4db812d351",
+ "devices": [
+ "rg35xx_2024"
+ ]
+ },
+ {
+ "name": "muOS 2410.1 Banana for RG40XXH",
+ "description": "muOS 2410.1 Banana firmware optimized for Anbernic RG40XXH.",
+ "icon": "https://muos.dev/lib/tpl/muos/images/logo.png",
+ "url": "https://dl.muos.dev/RELEASE/2410.1/muOS-RG40XX-H-2410.1-BANANA-d1bae326.img.gz",
+ "release_date": "2024-10-12",
+ "image_download_size": 2132388103,
+ "extract_size": 4504682496,
+ "extract_sha256": "fe51f4f3a7f9e51c34eb78ef704a9a6af0233d6fdf87ccd070444034003afe5c",
+ "devices": [
+ "rg40xxh"
+ ]
+ },
+ {
+ "name": "muOS 2410.1 Banana for RG40XXV",
+ "description": "muOS 2410.1 Banana firmware optimized for Anbernic RG40XXV.",
+ "icon": "https://muos.dev/lib/tpl/muos/images/logo.png",
+ "url": "https://dl.muos.dev/RELEASE/2410.1/muOS-RG40XX-V-2410.1-BANANA-d1bae326.img.gz",
+ "release_date": "2024-10-12",
+ "image_download_size": 2132476961,
+ "extract_size": 4504682496,
+ "extract_sha256": "aa2cd35010e1414c62b0460d8f193d7a3c56ebcf3f59a220aebe995ab93bb051",
+ "devices": [
+ "rg40xxv"
+ ]
+ }
+ ],
+ "imager": {
+ "devices": [
+ {
+ "name": "Anbernic RG40XXH",
+ "tags": ["rg40xxh"],
+ "icon": "https://github.com/cmclark00/retro-imager/blob/boogaloo/src/icons/RG40XX%20H.png?raw=true"
+ },
+ {
+ "name": "Anbernic RG40XXV",
+ "tags": ["rg40xxv"],
+ "icon": "https://github.com/cmclark00/retro-imager/blob/boogaloo/src/icons/RG40XX%20V.png?raw=true"
+ },
+ {
+ "name": "Anbernic RG35XXH",
+ "tags": ["rg35xxh"],
+ "icon": "https://github.com/cmclark00/retro-imager/blob/boogaloo/src/icons/RG35XX%20H.png?raw=true"
+ },
+ {
+ "name": "Anbernic RG35XX Plus",
+ "tags": ["rg35xx_plus"],
+ "icon": "https://github.com/cmclark00/retro-imager/blob/boogaloo/src/icons/RG35XX%20-%20PLUS.png?raw=true"
+ },
+ {
+ "name": "Anbernic RG35XX SP",
+ "tags": ["rg35xx_sp"],
+ "icon": "https://github.com/cmclark00/retro-imager/blob/boogaloo/src/icons/RG35XX%20SP.png?raw=true"
+ },
+ {
+ "name": "Anbernic RG35XX 2024",
+ "tags": ["rg35xx_2024"],
+ "icon": "https://github.com/cmclark00/retro-imager/blob/boogaloo/src/icons/RG35XX%20-%202024.png?raw=true"
+ },
+ {
+ "name": "Anbernic RG28XX",
+ "tags": ["rg28xx"],
+ "icon": "https://github.com/cmclark00/retro-imager/blob/boogaloo/src/icons/RG28XX.png?raw=true"
+ }
+
+ ]
+ }
}
-
diff --git a/src/qml.qrc b/src/qml.qrc
index d86215f..8dcca05 100644
--- a/src/qml.qrc
+++ b/src/qml.qrc
@@ -32,7 +32,7 @@
icons/cat_language_specific_operating_systems.png
icons/cat_3d_printing.png
icons/logo_stacked_imager.png
- icons/banner.png
+ icons/logo_sxs_imager.png
qmlcomponents/ImButton.qml
qmlcomponents/ImButtonRed.qml
qmlcomponents/ImCheckBox.qml
diff --git a/src/windows/retro-imager-cli.cmd b/src/windows/rpi-imager-cli.cmd
similarity index 53%
rename from src/windows/retro-imager-cli.cmd
rename to src/windows/rpi-imager-cli.cmd
index 8158775..99c15f7 100644
--- a/src/windows/retro-imager-cli.cmd
+++ b/src/windows/rpi-imager-cli.cmd
@@ -1,9 +1,9 @@
@echo off
rem
-rem For scripting: call retro-imager.exe and wait until it finished before continuing
+rem For scripting: call rpi-imager.exe and wait until it finished before continuing
rem This is necessary because it is compiled as GUI application, and Windows
rem normalling does not wait until those exit
rem
-start /WAIT retro-imager.exe --cli %*
+start /WAIT rpi-imager.exe --cli %*
diff --git a/src/windows/retro-imager.nsi.in b/src/windows/rpi-imager.nsi.in
similarity index 96%
rename from src/windows/retro-imager.nsi.in
rename to src/windows/rpi-imager.nsi.in
index bc1e1ce..348efd0 100644
--- a/src/windows/retro-imager.nsi.in
+++ b/src/windows/rpi-imager.nsi.in
@@ -4,20 +4,20 @@
# by Vlasis K. Barkas aka Red Wine red_wine@freemail.gr Sep 2006
############################################################################################
-!define APP_NAME "Retro Imager"
-!define COMP_NAME "coreymclark"
+!define APP_NAME "Raspberry Pi Imager"
+!define COMP_NAME "Raspberry Pi Ltd"
!define VERSION "@IMAGER_VERSION_STR@"
-!define INSTALLER_NAME "retro-imager-${VERSION}.exe"
+!define INSTALLER_NAME "imager-${VERSION}.exe"
!define COPYRIGHT "Raspberry Pi Ltd"
-!define DESCRIPTION "Retro Imager"
-!define MAIN_APP_EXE "retro-imager.exe"
+!define DESCRIPTION "Raspberry Pi Imager"
+!define MAIN_APP_EXE "rpi-imager.exe"
!define INSTALL_TYPE "SetShellVarContext current"
!define REG_ROOT "HKCU"
!define REG_APP_PATH "Software\Microsoft\Windows\CurrentVersion\App Paths\${MAIN_APP_EXE}"
!define UNINSTALL_PATH "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}"
# Window to close if running
-!define EXE_TO_TERMINATE "retro-imager.exe"
+!define EXE_TO_TERMINATE "rpi-imager.exe"
######################################################################
@@ -38,7 +38,7 @@ OutFile "${INSTALLER_NAME}"
BrandingText "${APP_NAME}"
XPStyle on
InstallDirRegKey "${REG_ROOT}" "${REG_APP_PATH}" ""
-InstallDir "$PROGRAMFILES\Retro Imager"
+InstallDir "$PROGRAMFILES\Raspberry Pi Imager"
######################################################################
@@ -89,7 +89,7 @@ InstallDir "$PROGRAMFILES\Retro Imager"
!ifdef REG_START_MENU
!define MUI_STARTMENUPAGE_NODISABLE
-!define MUI_STARTMENUPAGE_DEFAULTFOLDER "Retro Imager"
+!define MUI_STARTMENUPAGE_DEFAULTFOLDER "Raspberry Pi"
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "${REG_ROOT}"
!define MUI_STARTMENUPAGE_REGISTRY_KEY "${UNINSTALL_PATH}"
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "${REG_START_MENU}"
@@ -256,8 +256,8 @@ File "deploy\libgcc_s_seh-1.dll"
File "deploy\libstdc++-6.dll"
File "deploy\libwinpthread-1.dll"
File "deploy\license.txt"
-File "deploy\retro-imager-cli.cmd"
-File "deploy\retro-imager.exe"
+File "deploy\rpi-imager-cli.cmd"
+File "deploy\rpi-imager.exe"
SetOutPath "$INSTDIR\generic"
File "deploy\generic\qtuiotouchplugin.dll"
SetOutPath "$INSTDIR\iconengines"
@@ -766,13 +766,13 @@ WriteRegStr ${REG_ROOT} "${UNINSTALL_PATH}" "URLInfoAbout" "${WEB_SITE}"
!endif
-WriteRegStr SHCTX "Software\Classes\.zip\OpenWithProgIds" "RETRO_IMAGINGUTILITY" ""
-WriteRegStr SHCTX "Software\Classes\.gz\OpenWithProgIds" "RETRO_IMAGINGUTILITY" ""
-WriteRegStr SHCTX "Software\Classes\.xz\OpenWithProgIds" "RETRO_IMAGINGUTILITY" ""
-WriteRegStr SHCTX "Software\Classes\.img\OpenWithProgIds" "RETRO_IMAGINGUTILITY" ""
-WriteRegStr SHCTX "Software\Classes\.zstd\OpenWithProgIds" "RETRO_IMAGINGUTILITY" ""
-WriteRegStr SHCTX "Software\Classes\RETRO_IMAGINGUTILITY\shell\open" "FriendlyAppName" "Retro Imager"
-WriteRegStr SHCTX "Software\Classes\RETRO_IMAGINGUTILITY\shell\open\command" "" '"$INSTDIR\retro-imager.exe" "%1"'
+WriteRegStr SHCTX "Software\Classes\.zip\OpenWithProgIds" "RPI_IMAGINGUTILITY" ""
+WriteRegStr SHCTX "Software\Classes\.gz\OpenWithProgIds" "RPI_IMAGINGUTILITY" ""
+WriteRegStr SHCTX "Software\Classes\.xz\OpenWithProgIds" "RPI_IMAGINGUTILITY" ""
+WriteRegStr SHCTX "Software\Classes\.img\OpenWithProgIds" "RPI_IMAGINGUTILITY" ""
+WriteRegStr SHCTX "Software\Classes\.zstd\OpenWithProgIds" "RPI_IMAGINGUTILITY" ""
+WriteRegStr SHCTX "Software\Classes\RPI_IMAGINGUTILITY\shell\open" "FriendlyAppName" "Raspberry Pi Imager"
+WriteRegStr SHCTX "Software\Classes\RPI_IMAGINGUTILITY\shell\open\command" "" '"$INSTDIR\rpi-imager.exe" "%1"'
SectionEnd
@@ -805,8 +805,8 @@ Delete "$INSTDIR\Qt5Widgets.dll"
Delete "$INSTDIR\Qt5WinExtras.dll"
# Old name
Delete "$INSTDIR\imagingutility.exe"
-Delete "$INSTDIR\retro-imager.exe"
-Delete "$INSTDIR\retro-imager-cli.cmd"
+Delete "$INSTDIR\rpi-imager.exe"
+Delete "$INSTDIR\rpi-imager-cli.cmd"
Delete "$INSTDIR\styles\qwindowsvistastyle.dll"
Delete "$INSTDIR\QtQuick.2\plugins.qmltypes"
Delete "$INSTDIR\QtQuick.2\qmldir"
@@ -1195,8 +1195,8 @@ Delete "$INSTDIR\Qt6Svg.dll"
Delete "$INSTDIR\Qt6VirtualKeyboard.dll"
Delete "$INSTDIR\Qt6Widgets.dll"
Delete "$INSTDIR\libgcc_s_seh-1.dll"
-Delete "$INSTDIR\retro-imager-cli.cmd"
-Delete "$INSTDIR\retro-imager.exe"
+Delete "$INSTDIR\rpi-imager-cli.cmd"
+Delete "$INSTDIR\rpi-imager.exe"
Delete "$INSTDIR\generic\qtuiotouchplugin.dll"
Delete "$INSTDIR\iconengines\qsvgicon.dll"
Delete "$INSTDIR\imageformats\qgif.dll"
@@ -1699,30 +1699,30 @@ RmDir "$SMPROGRAMS\$SM_Folder"
!endif
!ifndef REG_START_MENU
-Delete "$SMPROGRAMS\Retro Imager${APP_NAME}.lnk"
+Delete "$SMPROGRAMS\Raspberry Pi\${APP_NAME}.lnk"
!ifdef WEB_SITE
-Delete "$SMPROGRAMS\Retro Imager\${APP_NAME} Website.lnk"
+Delete "$SMPROGRAMS\Raspberry Pi\${APP_NAME} Website.lnk"
!endif
-RmDir "$SMPROGRAMS\Retro Imager"
+RmDir "$SMPROGRAMS\Raspberry Pi"
!endif
DeleteRegKey ${REG_ROOT} "${REG_APP_PATH}"
DeleteRegKey ${REG_ROOT} "${UNINSTALL_PATH}"
# File associations
-DeleteRegValue SHCTX "Software\Classes\.zip\OpenWithProgIds" "RETRO_IMAGINGUTILITY"
-DeleteRegValue SHCTX "Software\Classes\.gz\OpenWithProgIds" "RETRO_IMAGINGUTILITY"
-DeleteRegValue SHCTX "Software\Classes\.xz\OpenWithProgIds" "RETRO_IMAGINGUTILITY"
-DeleteRegValue SHCTX "Software\Classes\.img\OpenWithProgIds" "RETRO_IMAGINGUTILITY"
-DeleteRegValue SHCTX "Software\Classes\.zstd\OpenWithProgIds" "RETRO_IMAGINGUTILITY"
-DeleteRegKey SHCTX "Software\Classes\RETRO_IMAGINGUTILITY"
+DeleteRegValue SHCTX "Software\Classes\.zip\OpenWithProgIds" "RPI_IMAGINGUTILITY"
+DeleteRegValue SHCTX "Software\Classes\.gz\OpenWithProgIds" "RPI_IMAGINGUTILITY"
+DeleteRegValue SHCTX "Software\Classes\.xz\OpenWithProgIds" "RPI_IMAGINGUTILITY"
+DeleteRegValue SHCTX "Software\Classes\.img\OpenWithProgIds" "RPI_IMAGINGUTILITY"
+DeleteRegValue SHCTX "Software\Classes\.zstd\OpenWithProgIds" "RPI_IMAGINGUTILITY"
+DeleteRegKey SHCTX "Software\Classes\RPI_IMAGINGUTILITY"
DeleteRegKey ${REG_ROOT} ""
-RMDir /r "$APPDATA\Retro Imager\Imager"
-RMDir "$APPDATA\Retro Imager"
-RMDir /r "$LOCALAPPDATA\Retro Imager\Imager"
-RMDir "$LOCALAPPDATA\Retro Imager"
+RMDir /r "$APPDATA\Raspberry Pi\Imager"
+RMDir "$APPDATA\Raspberry Pi"
+RMDir /r "$LOCALAPPDATA\Raspberry Pi\Imager"
+RMDir "$LOCALAPPDATA\Raspberry Pi"
SectionEnd
diff --git a/test_os_list.json b/test_os_list.json
deleted file mode 100644
index de84dde..0000000
--- a/test_os_list.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "os_list": [
- {
- "name": "Test OS 1",
- "description": "A test OS for verifying functionality",
- "icon": "icons/erase.png",
- "url": "internal://format",
- "devices": ["rg40xxh"]
- },
- {
- "name": "Test OS 2",
- "description": "Another test OS",
- "icon": "icons/erase.png",
- "url": "internal://format",
- "devices": ["rg35xx_plus"]
- }
- ],
- "imager": {
- "devices": [
- {
- "name": "Test Device Category",
- "subitems": [
- {
- "name": "Test Device 1",
- "tags": ["rg40xxh"],
- "icon": "icons/erase.png"
- },
- {
- "name": "Test Device 2",
- "tags": ["rg35xx_plus"],
- "icon": "icons/erase.png"
- }
- ]
- }
- ]
- }
-}
\ No newline at end of file