Curated Examples
README
- Source repository: https://github.com/EvotecIT/PSPublishModule
- Example group:
DotNetPublish
DotNetPublish Examples
This folder contains starter examples for the DotNet publish engine.
Files:
Example.ServiceMsi.json- service packaging + MSI prepare/build pattern.
Example.GeneratedServiceMsi.json- service packaging + generated WiX SDK MSI authoring pattern.
Example.LinuxDesktopDebian.json- Linux desktop publish + native Debian package, command, desktop entry, MIME types, and icon.
Example.MacDesktopApp.json- macOS desktop publish +
.appbundle layout, ICNS generation, channel-appropriate code signing, document associations, and transport ZIP.
- macOS desktop publish +
Example.RebuildState.json- rebuild/state preservation pattern with service lifecycle.
Example.PortableBundleMsi.json- desktop app + service sidecar + portable bundle + MSI pattern.
Example.PackageBundleMsi.json- service/CLI package layout with README copy, module payload include, generated wrapper script, bundle post-process, and MSI from the composed bundle.
Example.StorePackage.json- desktop app + Store/MSIX packaging project pattern.
Example.StoreSubmit.json- packaged-app Partner Center submission pattern for
powerforge store submit.
- packaged-app Partner Center submission pattern for
Example.StoreDesktopSubmit.json- MSI/EXE Partner Center submission pattern for
powerforge store submit.
- MSI/EXE Partner Center submission pattern for
These are intentionally production-shaped templates. Update project/service/installer paths for your repository before running.
Typical Usage
- Copy one template to repo root:
Copy-Item '.\Module\Examples\DotNetPublish\Example.ServiceMsi.json' '.\powerforge.dotnetpublish.json'
For desktop/portable delivery:
Copy-Item '.\Module\Examples\DotNetPublish\Example.PortableBundleMsi.json' '.\powerforge.dotnetpublish.json'
For a Linux desktop Debian package, copy the template and run PowerForge on Linux with dpkg-deb available:
Copy-Item '.\Module\Examples\DotNetPublish\Example.LinuxDesktopDebian.json' '.\powerforge.dotnetpublish.json'
For a macOS application bundle, copy the template and run PowerForge on macOS with the system codesign, sips, iconutil, and ditto tools:
Copy-Item '.\Module\Examples\DotNetPublish\Example.MacDesktopApp.json' '.\powerforge.dotnetpublish.json'
Adjust
Projects,Targets,Installers,StorePackages, or Store submission paths as needed.Validate and plan:
Invoke-DotNetPublish -ConfigPath '.\powerforge.dotnetpublish.json' -Validate
Invoke-DotNetPublish -ConfigPath '.\powerforge.dotnetpublish.json' -Plan
- Run:
Invoke-DotNetPublish -ConfigPath '.\powerforge.dotnetpublish.json' -ExitCode
Notes
Example.ServiceMsi.jsonexpects a WiX installer project (*.wixproj).Example.GeneratedServiceMsi.jsonusesInstallers[].Authoringto generateProduct.wxsand a WiX SDK project duringmsi.build; useTypeon each authoring component (File,Folder,RemoveFolder,Service,RegistryValue,Shortcut). It also shows typed finish-page launch and RTF license agreement authoring throughExitLaunchandLicenseAgreement.Example.LinuxDesktopDebian.jsonusesInstallers[].Kind = Debianand keeps Linux package layout,/usr/bincommand wiring, freedesktop metadata, anddpkg-debexecution in PowerForge. The product repository supplies only declarative identity and paths.Example.MacDesktopApp.jsonusesInstallers[].Kind = MacAppand keeps.applayout,Info.plist, ICNS generation, signing, verification, anddittopackaging in PowerForge. ItsCodesignIdentity = "-"is deliberately local-only proof, so PowerForge omits hardened runtime to keep multi-file apps launchable without an Apple Team ID. Direct distribution enables hardened runtime by supplying aDeveloper ID Applicationidentity, a trusted timestamp, and PowerForge's Apple notarization/stapling flow.Example.RebuildState.jsonis aimed at preserve/restore deployments and service-aware rebuild flows.Example.PortableBundleMsi.jsonshows how to useBundles, include sidecar targets, and build an MSI from the composed bundle instead of the raw publish output.Example.PackageBundleMsi.jsonis the starter for TierBridge-style packages: composed service/CLI payload, shipped PowerShell module, generated scripts, ZIP, and MSI from the bundle.Example.StorePackage.jsonshows how to keep Store/MSIX packaging in the same PowerForge publish matrix as the app target.Example.StoreSubmit.jsonshows how to submit a packaged-app ZIP to Partner Center from the DotNetPublish manifest afterStorePackages[]produces the*.msixuploador*.appxuploadartifact.Example.StoreDesktopSubmit.jsonshows how to submit MSI/EXE metadata through the newer desktop Store submission API.- For command naming and fast overrides, see:
Docs/PSPublishModule.DotNetPublish.Quickstart.md