Skip to content

mleem97/GregToolsModmanager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GregTools Modmanager

Sponsor mleem97 Desktop Build Discord Notify Daily Security Scan Self-Signed Setup

Desktop app for Steam Workshop management, mod browsing, and publishing for Data Center (Steamworks API, App ID 4170200).

📦 Open-source and external dependencies

This project is developed in the open and uses many open-source libraries (.NET, MAUI, Facepunch.Steamworks, and more). It also ships Valve’s closed-source steam_api64.dll (Steamworks), which is governed by Valve terms.

See EXTERNAL_DEPENDENCIES.md for a full license and redistribution breakdown.

✨ Features

  • Mod Store: Browse, search, subscribe, favorite, and vote on Workshop items.
  • Mod Manager: Dependency health checks, MelonLoader status, and FMF plugin channels.
  • Authoring tools: Create projects from templates, edit metadata, and publish with change notes.
  • Template scaffolding: Modded templates create content/Mods, content/Plugins, and content/ModFramework/ (including ModFramework/FMF/Plugins) to mirror {GameRoot} layout.
  • Post-upload sync: Re-downloads from Steam after publish to keep local content in sync.
  • Headless CLI: Supports scripted/CI publish flows.
  • Pagination: All major list views support paging.

🧰 Open in Visual Studio

Use WorkshopUploader.sln in this repository root.

If you open only WorkshopUploader.csproj from another solution context, Visual Studio may pick a different solution unexpectedly.

🏗️ Build

dotnet build WorkshopUploader.csproj -c Debug

Or:

dotnet build WorkshopUploader.sln -c Debug

Target: .NET 9 + .NET MAUI (Windows). The project uses WindowsAppSDKSelfContained so required Windows App SDK components are shipped with the app.

▶️ Run (recommended)

  • Use Visual Studio 2022 with the .NET MAUI workload and Windows App SDK components.
  • Open WorkshopUploader.sln.
  • Set WorkshopUploader as startup project.
  • Press F5.

📤 Publish (win10-x64)

dotnet publish WorkshopUploader.csproj -c Release

Output:

bin/Release/net9.0-windows10.0.19041.0/win10-x64/publish/WorkshopUploader.exe

Publish to a custom self-contained folder

dotnet publish WorkshopUploader.csproj -c Release -p:SelfContained=true -p:WindowsPackageType=None -p:WindowsAppSDKSelfContained=true -o .\publish-out

🧱 Create installer (Setup.exe via Inno Setup)

  1. Install Inno Setup 6 (includes ISCC.exe).
  2. Run:
.\build.ps1

This runs dotnet publish and creates:

installer\Output\GregToolsModmanager-<Version>-Setup.exe

Installer behavior:

  • Wizard install/uninstall integration in Windows Apps settings.
  • Start menu entry and optional desktop shortcut.
  • Default install path: C:\Program Files\GregTools Modmanager (admin required).

Useful options:

  • Skip publish and only rebuild setup: ./build.ps1 -SkipPublish
  • Inno script path: installer\GregToolsModmanager.iss

Update/reinstall behavior

  • Setup uses the same AppId, detects existing installs, and overwrites the target folder.
  • Running WorkshopUploader.exe is closed through Windows Restart Manager (CloseApplications).
  • Portable install via install-local.ps1 also closes the app and replaces the install directory.

App does not start after setup

  • The installer runs elevated, but final launch uses runasoriginaluser so the app starts non-elevated (important for WinUI/WebView2/MAUI stability).
  • If problems continue, check Event Viewer and test CloseApplications=no in GregToolsModmanager.iss.

🔐 Code signing, SmartScreen, and trust notice

  • Current state: We currently use self-signed code signing for CI/community builds.
  • Why: I cannot afford an official OV/EV certificate at the moment.
  • Impact for users: Windows/SmartScreen may still show warnings (for example, Unknown Publisher or reputation prompts), even when the file is signed.
  • Runtime note: This app targets .NET 9 + .NET MAUI (Windows) and depends on Windows runtime components; if startup fails on end-user systems, install/repair the Visual C++ Redistributable and Windows App SDK runtime (see troubleshooting below).
  • Rotation policy: CI rotates/recreates self-signed certificates on a 7-day cadence (or earlier if close to expiry), and refreshes the rolling latest prerelease artifacts after successful signing.

Signing commands and references

  • Official OV/EV code signing is currently not enabled due to certificate cost.
  • A self-signed CI path is available for community/testing builds.
  • Manual signing docs: installer\CODE_SIGNING.md.
  • Create a self-signed certificate:
.\installer\create-selfsigned-codesign-cert.ps1
  • Sign only (without rebuilding setup):
.\build.ps1 -SignOnly

Set CODE_SIGN_THUMBPRINT (or use -SetupPath when needed).

💼 Portable install (no Setup.exe)

.\install-local.ps1

Installs per-user to %LOCALAPPDATA%\Programs\GregTools Modmanager\ (no admin).

Uninstall:

.\install-local.ps1 -Uninstall

🧯 Crash dumps (WER LocalDumps)

Enable local dumps:

.\installer\configure-localdumps.ps1

Enable machine-wide (elevated shell):

.\installer\configure-localdumps.ps1 -Scope Machine

Disable:

.\installer\configure-localdumps.ps1 -Disable

Default dump directories:

  • Current user: %LOCALAPPDATA%\GregToolsModmanager\dumps
  • Machine: C:\ProgramData\GregToolsModmanager\dumps

🚚 Deploy all mods to Workshop folders

pwsh -File scripts/Deploy-Release-ToWorkshop.ps1

Builds framework/plugins/mods and creates Steamworks-compatible project folders under <GameRoot>/workshop/.

🩺 Troubleshooting

  1. Open Event ViewerWindows LogsApplication and look for WorkshopUploader.exe faults.
  2. Install/repair the Microsoft Visual C++ Redistributable.
  3. Install the Windows App SDK Runtime.
  4. Prefer running with F5 from Visual Studio on the same machine you use to build.
  5. Ensure Windows 10 version 1809+ (OS build 17763+).

🎮 Deploy next to the game

Copy the publish output to:

{GameRoot}/WorkshopUploader/

Place it next to the game executable (not inside Mods or MelonLoader).

🛡️ VirusTotal

Third-party scan for transparency (self-contained .NET apps may be flagged heuristically; always compare checksums from official releases):

❤️ Sponsorship

If this project helps you and you want to support ongoing maintenance and improvements:

🔗 See also