diff --git a/.cargo/config.toml b/.cargo/config.toml index e565974..9247f16 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,2 +1,7 @@ [alias] -run-watch = "watch -c -x check -x run" \ No newline at end of file +run-watch = "watch -c -x check -x run" + +# [target.'cfg(all(windows, target_env = "msvc"))'] +# rustflags = ["-C", "target-feature=+crt-static"] +# rustflags = ["-C", "link-arg=/MANIFESTUAC:level='requireAdministrator' uiAccess='false'"] +# rustflags = ["-C", "target-feature=+crt-static", "-C", "link-arg=/MANIFESTUAC:level='requireAdministrator' uiAccess='false'"] diff --git a/Cargo.lock b/Cargo.lock index 50f5d26..f357b4b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4326,6 +4326,7 @@ dependencies = [ "serde", "serde_cbor_2", "serde_json", + "tauri-winres", "thiserror 2.0.18", ] @@ -6018,6 +6019,17 @@ dependencies = [ "objc", ] +[[package]] +name = "tauri-winres" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1087b111fe2b005e42dbdc1990fc18593234238d47453b0c99b7de1c9ab2c1e0" +dependencies = [ + "dunce", + "embed-resource", + "toml 0.9.12+spec-1.1.0", +] + [[package]] name = "tempfile" version = "3.25.0" diff --git a/Cargo.toml b/Cargo.toml index fe86f22..ffe47d2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,14 +5,15 @@ description = "An open source commissioning tool for Pico FIDO security keys. De authors = ["Suyog Tandel", "PicoForge Contributers"] license = "AGPL-3.0" edition = "2024" +build = "build.rs" [dependencies] # tokio = { version = "1.49", features = ["full"] } serde = { version = "1", features = ["derive"] } serde_json = "1" -log = "0.4" # Logging facade -log4rs = "1" # For logging to output (like stdout) -directories = "6" # For Applcation config/data dir handling +log = "0.4" # Logging facade +log4rs = "1" # For logging to output (like stdout) +directories = "6" # For Applcation config/data dir handling # For device management backend: pcsc = "2" # Standard Smart Card API (connect to the key) @@ -43,7 +44,44 @@ codegen-units = 1 # Allows LLVM to perform better optimization. lto = true # Enables link-time-optimizations however is not stable. opt-level = 3 # Prioritizes speed. Use `z` if you prefer small binary size. # panic = "abort" # Higher performance by disabling panic handlers. -strip = true # Ensures debug symbols are removed. +strip = true # Ensures debug symbols are removed. +[target.'cfg(windows)'.build-dependencies] +tauri-winres = "0.3" + +# Tauri winres config:g +[package.metadata.tauri-winres] +FileDescription = "An open source commissioning tool for Pico FIDO security keys." +ProductName = "PicoForge" +OriginalFilename = "picoforge.exe" +LegalCopyright = "Copyright © 2026 Suyog Tandel" + +# Cargo-Packager config: [package.metadata.packager] -# before-packaging-command = "cargo build --release" +name = "picoforge" +productName = "picoforge" +description = "An open source commissioning tool for Pico FIDO security keys. Developed with Rust and GPUI." +category = "Utility" +authors = ["Suyog Tandel", "PicoForge Contributers"] +identifier = "in.suyogtandel.picoforge" +license_file = "LICENSE" + +icons = [ + "./static/appIcons/icon.icns", + "./static/appIcons/icon.png", + "./static/appIcons/icon.ico", +] + +[package.metadata.packager.macos] +info_plist_path = "Info.plist" + +[package.metadata.packager.linux] +generate_desktop_entry = false + +[package.metadata.packager.appimage] +excluded_libraries = ["libpcsclite*.so*"] +files = { "data/in.suyogtandel.picoforge.desktop" = "usr/share/applications/in.suyogtandel.picoforge.desktop", "static/appIcons/in.suyogtandel.picoforge-symbolic.svg" = "usr/share/icons/hicolor/symbolic/apps/in.suyogtandel.picoforge-symbolic.svg", "static/appIcons/in.suyogtandel.picoforge.svg" = "usr/share/icons/hicolor/scalable/apps/in.suyogtandel.picoforge.svg" } + +# NOTE: The paths for .deb packages needs to be verified not sure about these. +[package.metadata.packager.deb] +files = { "data/in.suyogtandel.picoforge.desktop" = "usr/share/applications/in.suyogtandel.picoforge.desktop", "static/appIcons/in.suyogtandel.picoforge-symbolic.svg" = "usr/share/icons/hicolor/symbolic/apps/in.suyogtandel.picoforge-symbolic.svg", "static/appIcons/in.suyogtandel.picoforge.svg" = "usr/share/icons/hicolor/scalable/apps/in.suyogtandel.picoforge.svg" } diff --git a/Info.plist b/Info.plist new file mode 100644 index 0000000..5983820 --- /dev/null +++ b/Info.plist @@ -0,0 +1,32 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleDisplayName + picoforge + CFBundleExecutable + picoforge + CFBundleIconFile + icon.icns + CFBundleIdentifier + in.suyogtandel.picoforge + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + picoforge + CFBundlePackageType + APPL + CFBundleShortVersionString + 0.4.1 + CFBundleVersion + 0.4.1 + CSResourcesFileMapped + + LSRequiresCarbon + + NSHighResolutionCapable + + + diff --git a/Packager.toml b/Packager.toml deleted file mode 100644 index e3b878c..0000000 --- a/Packager.toml +++ /dev/null @@ -1,45 +0,0 @@ -name = "picoforge" -productName = "picoforge" -description = "An open source commissioning tool for Pico FIDO security keys. Developed with Rust and GPUI." -category = "Utility" -version = "0.4.0" -authors = ["Suyog Tandel", "PicoForge Contributers"] -identifier = "in.suyogtandel.picoforge" -license_file = "LICENSE" - -icons = [ - "./static/appIcons/in.suyogtandel.picoforge.svg", - "./static/appIcons/icon.png", - "./static/appIcons/icon.ico", - "./static/appIcons/icon.icns", - "./static/appIcons/32x32.png", - "./static/appIcons/64x64.png", - "./static/appIcons/128x128.png", - "./static/appIcons/128x128@2x.png", - "./static/appIcons/Square30x30Logo.png", - "./static/appIcons/Square44x44Logo.png", - "./static/appIcons/Square71x71Logo.png", - "./static/appIcons/Square89x89Logo.png", - "./static/appIcons/Square107x107Logo.png", - "./static/appIcons/Square142x142Logo.png", - "./static/appIcons/Square150x150Logo.png", - "./static/appIcons/Square284x284Logo.png", - "./static/appIcons/Square310x310Logo.png", - "./static/appIcons/StoreLogo.png", -] - -# beforePackagingCommand = "cargo build --release" - -binaries = [{ main = true, name = "picoforge" }] -# outDir = "packaging/cargoPackager" - -[linux] -generateDesktopEntry = false - -[appimage] -excludedLibs = ["libpcsclite*.so*"] -files = { "data/in.suyogtandel.picoforge.desktop" = "usr/share/applications/in.suyogtandel.picoforge.desktop", "static/appIcons/in.suyogtandel.picoforge-symbolic.svg" = "usr/share/icons/hicolor/symbolic/apps/in.suyogtandel.picoforge-symbolic.svg", "static/appIcons/in.suyogtandel.picoforge.svg" = "usr/share/icons/hicolor/scalable/apps/in.suyogtandel.picoforge.svg" } - -# NOTE: The paths for .deb packages needs to be verified not sure about these. -[deb] -files = { "data/in.suyogtandel.picoforge.desktop" = "usr/share/applications/in.suyogtandel.picoforge.desktop", "static/appIcons/in.suyogtandel.picoforge-symbolic.svg" = "usr/share/icons/hicolor/symbolic/apps/in.suyogtandel.picoforge-symbolic.svg", "static/appIcons/in.suyogtandel.picoforge.svg" = "usr/share/icons/hicolor/scalable/apps/in.suyogtandel.picoforge.svg" } diff --git a/build.rs b/build.rs new file mode 100644 index 0000000..1aae248 --- /dev/null +++ b/build.rs @@ -0,0 +1,13 @@ +#[cfg(windows)] +use tauri_winres; + +// Configures windows application resource.( fix for app icon and launching app as admin) +#[cfg(windows)] +fn main() { + let mut res = tauri_winres::WindowsResource::new(); + res.set_icon("static/appIcons/icon.ico"); + res.compile().unwrap(); +} + +#[cfg(unix)] +fn main() {}