Skip to main content

WindowsSoftware

Use WindowsSoftware for a vendor installer and any files it needs at installation. It resolves the source, selects the setup entry point and inspects the content without running it. Its installer output is a file or setup directory with metadata for destinations to use.

Start with a vendor installer​

SourcePrepared content
MSI or EXEThe original vendor installer
DirectoryThe setup tree and its selected entry point
ZIP or TAR archiveThe extracted setup tree and its selected entry point
Resource outputThe producing resource's file or tree

Use the shared source resolvers for downloads, local files and resource outputs. For example, with the connection from Windows apps in Intune:

apiVersion: stemma/v1alpha1
kind: WindowsSoftware
metadata:
name: chrome
spec:
source:
url: https://dl.google.com/dl/chrome/install/googlechromestandaloneenterprise64.msi
destinations:
intune:
display_name: Google Chrome
description: Google Chrome.
publisher: Google LLC

stemma update WindowsSoftware/chrome locks the source; stemma prepare WindowsSoftware/chrome prepares the installer. Use stemma artifact WindowsSoftware/chrome to obtain a local copy for inspection. The kind requires destination settings; their fields and publication behaviour belong to the destination.

Select the setup file​

A single-file source is its own setup entry point. For a directory or archive, the only MSI or EXE is selected automatically. When there are several, set setup_file to a setup-relative path or a glob matching exactly one file:

source:
url: https://example.com/downloads/VendorSetup_4.2.zip
setup_file: VendorSetup.exe

A resource output can supply its own entry point. An ambiguous directory fails with the installers it found. An explicit setup_file may select another file, such as a wrapper script; the destination's commands and detection must describe what that entry point installs.

Include accompanying files​

content.files adds inputs at relative paths in the setup directory:

source:
path: Assets/Vendor.msi
content:
files:
Organisation.mst:
path: Assets/Organisation.mst

Each value uses the shared input resolvers and can supply a file or tree. The vendor installer remains the entry point unless setup_file selects another. A destination decides how to use these files; see the Intune transform example.

Select the managed version​

The selected MSI supplies ProductCode, ProductVersion and other MSI facts. ProductVersion is the managed version by default. When the installed product uses a different version, version_file selects one versioned file from the setup MSI's File table:

version_file: Zoom.exe

This changes the managed version while keeping the MSI's ProductVersion in its inspection facts. version_file requires an MSI setup file. Other installers can retain a version supplied with their source artifact; selecting a different entry point clears that source version.

Installation commands and installed-product detection are destination settings. See Intune detection for how MSI facts and the managed version become detection rules.

Icon​

spec.icon names a catalog asset exactly as it does for macOS software: icon: microsoft-word publishes icons/microsoft-word.png. stemma icon creates it from the installer on any host: an MSI supplies the icon it registers for Programs and Features (ARPPRODUCTICON) and an EXE its first icon group, the icon Explorer shows. On a Mac the default glassy presentation draws that artwork with the same renderer as macOS applications, so both platforms' icons look alike; elsewhere raw writes the largest PNG or bitmap frame as a PNG asset, enlarging small icons to 128 pixels. Unreadable frames report a decoding error. An installer without a registered icon reports no artwork; commit a square PNG or share the macOS document's asset instead.

Signature​

Declare the selected setup entry point's signing expectation:

signatures:
- signer: authenticode:4a6519d3c145fc3838df20b3009980fe59b9bc68ee5871e59aaa0097a523e333 # Google LLC

The entry point is the only signing subject, whether it is a single MSI or EXE or the selected file of a setup directory, so its entry needs no subject. Auxiliary executables are outside this scope.

stemma signature WindowsSoftware/<name> derives a complete fragment without requiring an existing declaration. It reports unsigned installers normally, as unsigned: true instead of signer. The two assertions are mutually exclusive. Omitting signatures makes no assertion, and an MSI, EXE or DLL entry point then produces a recommendation to derive one. Preparation fails when the observed state or publisher differs; invalid and unsupported signatures also fail derivation.

The signer identifies the certificate subject together with the issuing authority's public key. Routine certificate renewal keeps it while a new authority or publisher requires review. Timestamp countersignatures fix the time at which certificate validity is judged. Windows trust policy such as SmartScreen is not assessed. See signature limits.