Installation & Maintenance
NH Reader uses native Tauri packaging (tauri build) for local builds. There is no automated packaging workflow, and the project will not publish release assets until properly signed releases are available. Build and sign packages locally using the commands in package.json.
📦 Distribution Formats
| Platform | Formats | Package Type | Distribution / Build Method |
|---|---|---|---|
| Windows | NSIS (.exe), WiX (.msi), Portable (.zip) |
Installer / MSI / Standalone | Manual local build and signing |
| macOS | DMG (.dmg), App bundle (.app), Portable (.zip) |
Disk Image / Bundle / Standalone | Manual local build and signing |
| Linux | Debian (.deb), AppImage (.AppImage), Portable (.tar.gz) |
Native package / Self-contained / Archive | Manual local build and signing |
| Android | APK (.apk) |
Sideloadable Android Package | Manual local build and signing |
| iOS | Xcode archive, IPA (.ipa) |
iPhone / iPad | Manual build and signing via Tauri CLI / Xcode on macOS |
📦 Installing on Desktop
Install the package you built and signed locally. The project does not publish release assets.
📦 Windows
- Build with
npm run tauri:build:releaseand, when you want a signed installer, sign withnpm run sign. Find the NSIS.exeor WiX.msiundersrc-tauri/target/release/bundle/. - Run the installer:
- NSIS Setup: Supports both Current User (per-user, non-elevated) and All Users (per-machine, administrative) installation scopes, custom directory selection, and creates Desktop / Start Menu shortcuts.
- WiX MSI: Standard enterprise-ready Windows Installer package with silent install capability (
msiexec /i ... /qn).
- Launch
NH Readerfrom the Start Menu or Desktop shortcut.
📦 macOS
- Build with
npm run tauri:build:release, then sign the generated.appbundle withnpm run sign(identity from--identityorAPPLE_SIGNING_IDENTITY; notarization and stapling run automatically whenAPPLE_ID,APPLE_APP_SPECIFIC_PASSWORDandAPPLE_TEAM_IDare set). - Open the DMG disk image and drag NH Reader into the Applications folder.
- Launch from Launchpad or
/Applications. (Note: For ad-hoc unsigned builds on macOS, control-click the app and choose “Open” on first launch to approve Gatekeeper).
📦 Linux
- Build with
npm run tauri:build:release, then sign the generated package withnpm run sign(an armored detachedgpgsignature created next to the package and verified automatically). - For Debian/Ubuntu:
sudo dpkg -i nh-reader_<version>_amd64.deb - For AppImage:
chmod +x nh-reader_<version>_amd64.AppImage ./nh-reader_<version>_amd64.AppImage🔨 Building Desktop from Source (Optional)
If you prefer building your own desktop packages from source:
- Install dependencies:
npm install - Build commands:
# Windows (generates NSIS .exe and WiX .msi in src-tauri/target/release/bundle/) npm run tauri:build:release # macOS (generates .dmg and .app in src-tauri/target/release/bundle/) npm run tauri:build:release # Linux (generates .deb and .AppImage in src-tauri/target/release/bundle/) npm run tauri:build:release
📱 Mobile Platforms — Android & iOS (Manual Build Mandatory)
[!NOTE] There is no automated packaging workflow. All platform packages must be built and signed manually from source.
[!IMPORTANT] Hardware Testing Notice: Android, macOS, and iOS builds are community-supported and untested by the maintainer. iOS builds require macOS, Xcode, and valid Apple signing credentials.
🤖 Android (APK Manual Build & Sideloading)
To compile and install your own Android APK:
- Prerequisites:
- Android Studio with Android SDK Platform 34 and NDK installed.
- Java JDK 17 (e.g. Temurin or OpenJDK).
- Rust Android targets:
rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android
- Initialize Android Project:
npm run tauri:android:init - Generate a Free Release Signing Keystore:
keytool -genkey -v -keystore src-tauri/gen/android/release.keystore -alias nh-reader -keyalg RSA -keysize 2048 -validity 10000 -storepass nhreader -keypass nhreader -dname "CN=HELIX Origin, OU=NH Reader, O=HELIX Origin, L=Tokyo, ST=Tokyo, C=JP" - Compile the APK:
npm run tauri:android:buildThe output APK will be generated at:
src-tauri/gen/android/app/build/outputs/apk/universal/release/*.apk - Install on Device:
- Transfer the
.apkfile to your device and tap to install (grant “Install unknown apps” permission if prompted). - Or install directly via ADB:
adb install src-tauri/gen/android/app/build/outputs/apk/universal/release/*.apk
- Transfer the
🍎 iOS (Manual Build & Signing)
To compile and sign for iOS:
- Prerequisites:
- macOS computer with Xcode 15+ installed.
- Rust iOS targets:
rustup target add aarch64-apple-ios x86_64-apple-ios aarch64-apple-ios-sim - CocoaPods (
sudo gem install cocoapods) or modern SPM.
- Initialize iOS Project:
npm run tauri:ios:init - Build via CLI or Xcode:
- Via CLI:
npm run tauri:ios:build - Or open the generated Xcode project:
open src-tauri/gen/ios/nh-reader.xcodeproj
- Via CLI:
- Configure Signing:
- In Xcode, go to Signing & Capabilities.
- Select your Apple Developer team, signing identity, and a provisioning profile for the app’s bundle identifier.
- Deploy & Run:
- Select a connected iPhone or iPad in Xcode and click Run, or export the signed archive for distribution.
🧳 Portable Mode
NH Reader supports a 100% self-contained portable mode:
- Download or extract the standalone application executable.
- Place a
.portableempty marker file (or create adata/folder) next tonh-reader.exe. - When launched, the application stores the SQLite database (
database.sqlite), image cache, and download files entirely within the local directory rather than the OS app-data locations. - Note: PortableApps (.paf.exe) format was dropped in favor of clean portable zip distributions and native installers.
🛠️ Uninstallation
- Windows: Use standard Windows Settings → Installed Apps (or Control Panel → Programs and Features) to uninstall cleanly. The NSIS and MSI uninstallers remove installed files, registry keys, and shortcuts.
- macOS: Drag NH Reader.app from
/Applicationsto the Trash. - Linux: Run
sudo apt remove nh-reader(for.deb) or remove the AppImage file. - Android: Long-press the NH Reader icon and select Uninstall.
User data (favorites, blacklist, and settings stored in database.sqlite) is preserved by default. To perform a complete factory reset on desktop, remove the %LOCALAPPDATA%\NH Reader directory.
🔐 Zero-Cost Code Signing
Free Code Signing (Zero Budget / No API Keys)
- Windows: Uses a self-signed code signing certificate generated locally with PowerShell (
New-SelfSignedCertificate) stored incertificates/as.pfx. This signs the binaries for integrity without requiring a paid Commercial CA certificate. - macOS: Sign the generated app bundle with
npm run sign(identity from--identityorAPPLE_SIGNING_IDENTITY). Notarization and stapling run automatically whenAPPLE_ID,APPLE_APP_SPECIFIC_PASSWORDandAPPLE_TEAM_IDare set. - Linux:
npm run signcreates an armored detached signature next to the package and verifies it; check it manually withgpg --verify path/to/package.asc path/to/package. - Android: Generate your own protected keystore with
keytool -genkeypair -keystore src-tauri/gen/android/release.keystore -alias nh-reader -keyalg RSA -keysize 2048 -validity 10000, then sign withnpm run sign -- path/to/app.apk(defaults to that keystore and thenh-readeralias; override with--ks/--ks-alias).apksignerprompts for the keystore password, or setANDROID_KEYSTORE_PASSWORD. - iOS: Use
npm run sign -- --ios CODE_SIGN_STYLE=Manual DEVELOPMENT_TEAM=<team-id> CODE_SIGN_IDENTITY="Apple Distribution" PROVISIONING_PROFILE_SPECIFIER=<profile-name>on macOS with Xcode, an Apple signing identity, and a valid provisioning profile.
The Windows helper can generate a self-signed certificate if no PFX is present. That signature does not establish a trusted publisher identity. The project does not provide a trusted signing certificate for release binaries.
- Related: Getting Started · Architecture · Security
📚 Documentation Index
- Core: Home · Getting Started · Installation & Maintenance
- App Features: Search & Filters · Blacklist · Favorites & History · Reader & Galleries · Settings & API Key · Localization
- Architecture & Development: Architecture · Backend (Rust) · Frontend (SvelteKit) · Packaging & Bundling · Development & Contributing
- Reference: Security · Privacy · Troubleshooting · FAQ
NH Reader — a lightweight, modern, cross-platform client for nhentai.net.
Documentation Home · Repository · Releases · Security · Privacy · TOS · License