https://github.com/lemutec/micasetup
MicaSetup is a universal advanced installation package generation tool project.
https://github.com/lemutec/micasetup
inst installer setup uninst uninstaller
Last synced: 4 months ago
JSON representation
MicaSetup is a universal advanced installation package generation tool project.
- Host: GitHub
- URL: https://github.com/lemutec/micasetup
- Owner: lemutec
- License: mit
- Created: 2023-03-07T19:21:43.000Z (over 3 years ago)
- Default Branch: v2
- Last Pushed: 2025-01-12T10:12:10.000Z (over 1 year ago)
- Last Synced: 2025-04-02T22:33:08.572Z (about 1 year ago)
- Topics: inst, installer, setup, uninst, uninstaller
- Language: C#
- Homepage:
- Size: 8.34 MB
- Stars: 66
- Watchers: 2
- Forks: 3
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README

[](https://github.com/lemutec/MicaSetup/blob/v2/LICENSE) [](https://nuget.org/packages/MicaSetup.Tools) [](https://github.com/lemutec/MicaSetup/actions/workflows/micasetup.yml) [](https://dotnet.microsoft.com/zh-cn/download/dotnet/latest/runtime)
# 📦MicaSetup
MicaSetup is a universal advanced installation package generation tool project that supports various features and allows customization of the full entire installation process.
## 🔣Toolkits
| Toolkits | Description | GUI | CLI |
| -------- | --------------------------------------------------------- | ----------------- | ----------------- |
| MakeIcon | Create setup and uninst icon, both *.png and *.ico. | Ready | Ready |
| MakeMica | Build a package installer using configuration JSON file. | Under development | Under development |
| MakeMui | A GUI for editing the multi-language XAML resource files. | Under development | / |
## 🌒ScreenShots


## 💡Features
### 🌟Advanced Features
| Features | Completion | Addition |
| ------------------- | ---------- | ------------------------------------------------------------ |
| Mica Backdrop | ☑ | Support Windows11 Mica Backdrop. |
| Theme | ☑ | Support Dark and Light theme. |
| Archive File | ☑ | Pack your app with `7z.exe`, so it's easy to customize your archive file or not. |
| Animations | ☑ | Support a lot of advanced animations.
Such as Indeterminate ProgressBar, supported when your installation is no progress hint. |
| ~~Notification~~ | ~~☑~~ | ~~Windows10 (or higher) Notification.~~ |
| HiDPI | ☑ | Support to process DPI awareness. |
| Firewall | ☑ | Support allows your app to access the Network through Windows Firewall Policy. |
| Anti Unpacking | ☑ | Support encryption type archive file package.
Needs create your app archive file with password firstly.
Also can sign your setup program by `.snk`. |
| .NET SDKs Installer | 🔲 | Auto detect and install the .NET/.NET Core/.NET Framework Runtime.
[Download .NET SDKs for Visual Studio](https://dotnet.microsoft.com/en-us/download/visual-studio-sdks) |
| MSIX Installer | 🔲 | Using MSIX package instead of archive file.
Provide the function the same as following command.
`certmgr.exe -add app.cer -s -r localMachine AuthRoot`. |
| Online Installer | 🔲 | Using Network instead of archive file. |
### ✨General Features
| Features | Completion | Addition |
| ------------------ | ---------- | ------------------------------------------------------------ |
| Host Builder | ☑ | Support a simple HostBuilder for handling setup configs. |
| Debugger | ☑ | Unlike other installation architectures, too difficult to debug.
Support using VS2022 (or higher) to debug codes. |
| WindowChrome | ☑ | Support WindowChrome to keep native window style instead of borderless style. |
| Shortcut | ☑ | Support to create your app shortcut (`.lnk`). |
| Fork Process | ☑ | Support setup process forked itself to avoid the file lock. |
| Folder Picker | ☑ | Support advanced Folder Picker by `WindowsAPICodePack-Shell`. |
| Globalization | ☑ | Support English, Chinese and Japanese nowaday.
Support other languages customized by yourself. |
| Registry | ☑ | Support x86/x64 registry. |
| Create StartMenu | ☑ | Support to create Start Menu in system folder. |
| Create QuickLaunch | ☑ | Support to create Quick Launch shortcut (`.lnk`).
Quick Launch has been obsoleted since Windows 10. |
| Create Uninst | ☑ | Support to create `Uninst.exe` for system uninstallation. |
| Delay Uninst | ☑ | Support to delete file delay until reboot.
Useful for handling when uninst files fails. |
| Auto Run | ☑ | Support to make your installed app auto run. |
| Security Control | ☑ | Support to make your installed path Allow Full File Security. |
| Install Font | 🔲 | Support to install your fonts into system. |
| Install Silent | 🔲 | Support silent installation using CLI `/q`.
Useful for auto updating in the background. |
| Install Automate | 🔲 | Support no interactive installation using CLI `/a`.
Useful for auto updating in the foreground. |
## 🎛️Personalized Controls
| Controls | Completion | Addition |
| ------------------ | ---------- | ------------------------------------------------- |
| WindowX | ☑ | Support Mica Backdrop.
Support WindowChrome. |
| SetupProgressBar | ☑ | Support Indeterminate Animation. |
| MessageBoxX | ☑ | Simple MessageBox instead of Classics. |
| SmoothScrollViewer | ☑ | Support smoothly scrolling. |
## 😋Demos
> The programs using MicaSetup.
[QL-Win/QuickLook](https://github.com/QL-Win/QuickLook) (Recommended)
[GenshinMatrix/Fischless.Relauncher](https://github.com/GenshinMatrix/Fischless.Relauncher)
[lemutec/LyricStudio](https://github.com/lemutec/LyricStudio)
[GenshinMatrix/Fischless](https://github.com/GenshinMatrix/Fischless)
## 📖Usage & Wikis
### Build via NuGet package
```xml
```
and then you can use `makemica.exe` and `7z.exe` from NuGet cache directory in your PowerShell script.
```powershell
Write-Host "Get NuGet global package cache directory"
$globalPackages = (dotnet nuget locals global-packages --list) -split ":\s*", 2 | Select-Object -Last 1
$sevenZip = Join-Path $globalPackages "micasetup.tools\2.5.0\build\bin\7z.exe"
$exePath = Join-Path $globalPackages "micasetup.tools\2.5.0\build\makemica.exe"
Write-Host "7z packing"
& $sevenZip a $package7z ".\*" -t7z -mx=5 -mf=BCJ2 -r -y
Write-Host "Installer building"
# Ensure your micasetup.json file here
& $exePath
```
### Usage of `fetchver`
```bash
@echo off
for /f "tokens=* delims=" %%i in ('fetchver.exe /v3 "fetchver.exe"') do set fetchver=%%i
@echo The result is: %fetchver%
@pause
```
Support options: v1, v2, v3, v4
## 🎃Developer
### ⚙️Debug Codes
Run the `setup_dummy.cmd` for creating some dummy things used in project.
Such as `publish.7z` as your app published package and full size font used in Setup programs.
And then Run VS2026 (or higher) as Admin to open the `.slnx`.
### 📦Create Setup
Run the `setup_build.cmd` for building the full Setup programs.
Command Flow:
1. Build my app, named `MicaApp` using `dotnet publish`.
2. Pack my app using `7z.exe`.
3. Build Uninst, named `Uninst.exe` using `msbuild`.
4. Build Setup, named `MicaSetup.exe` using `msbuild`.
## 🚀Contributes
🈺Welcome PRs, issues, wikis, demos.
## 🌟Components
Including follow [components](COMPONENTS.md).
## 📑License
This software codes are licensed under the [MIT](LICENSE) License.