Bundle
dsh-bat2exe
Compile Windows .bat/.cmd launchers into real .exe shells inside DeepSeek Harness: renders the icon, emits the C# wrapper, compiles with csc.exe (or dotnet), and installs Start Menu / Desktop shortcuts.
- Source
- nirvanaslash
- License
- MIT
- Updated
- Updated yesterday
Readme
# dsh-bat2exe Turn a Windows `.bat` / `.cmd` launcher into a real `.exe` — from inside DeepSeek Harness. The EXE is a **thin shell**: it locates the batch file next to itself and hands the whole job to `cmd.exe`. The launcher logic stays editable text, no tool path is baked into the binary, and upgrading whatever the batch file calls needs no recompilation. ## Install ```powershell dsh plugin --profile web add dsh-bat2exe ``` Restart DSH, then ask the agent to build a launcher — or call the tool directly. ## Tools ### `bat2exe_build` | Parameter | Meaning | |---|---| | `bat` | **required** — path to the `.bat`/`.cmd` file (absolute, or relative to the working directory) | | `name` | output executable name; defaults to the batch name with `.exe` | | `iconText` | up to four characters drawn on a generated icon | | `iconTextColour` | icon text colour as `#rrggbb` | | `icon` | use an existing `.ico` instead of rendering one | | `startMenuShortcut` | also write a Start Menu shortcut | | `desktopShortcut` | also write a Desktop shortcut | The build runs four steps, all local and offline: 1. **Icon** — renders a rounded-square plate with a diagonal gradient and the given text, using a built-in 5×7 bitmap font, then packs it as a 256×256 ICO. No image library, no external tool. 2. **C# shell** — emits a wrapper whose only job is to run the batch file from its own directory, forwarding all arguments and preserving the exit code. 3. **Compile** — `csc.exe` from the .NET Framework (falling back to `dotnet build` when only the .NET SDK is present), with the icon embedded as a resource. 4. **Shortcuts** — optional `.lnk` files, written through `WScript.Shell`. ### `bat2exe_probe` Reports the local toolchain — C# compiler path, .NET SDK presence, PowerShell, and the resolved defaults — so a failure can be diagnosed before a build is attempted. ## Settings `bat2exe` registers a settings namespace, so defaults are editable in **Settings → Plugins** rather than by hand-editing a profile patch: | Key | Default | Meaning | |---|---|---| | `iconText` | `BAT` | text drawn on a generated icon | | `iconFrom` / `iconTo` | `#12204a` / `#4a6cf7` | gradient start / end | | `workDir` | `.bat2exe` | where `*.cs`, `*.ico` and other by-products go | | `startMenuShortcut` | `false` | default for the Start Menu shortcut | | `desktopShortcut` | `false` | default for the Desktop shortcut | Per-call tool arguments always win over these defaults. ## Requirements - **Windows.** The pipeline compiles a Windows PE and writes `.lnk` files. - A C# compiler: .NET Framework 4.x (`csc.exe`, present on stock Windows) **or** the .NET SDK. - PowerShell for shortcut creation only (`pwsh` preferred, Windows PowerShell accepted). `bat2exe_probe` reports exactly which of these were found. ## What gets written Everything lives next to the batch file, so a launcher folder is self-contained: ``` DSH-Web.bat <- your launcher (unchanged) DSH-Web.exe <- the compiled shell .bat2exe/ DSH-Web.ico <- generated (or your supplied) icon DSH-Web.cs <- the emitted C# source, kept for inspection ``` ## License MIT
Install
dsh plugin --profile web add github:nirvanaslash/dsh-bat2exe
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-bat2exe from the hub
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.