Menu Close

MSIX Hero 1.0.16 – signed MSIX app attach scripts and more

A new minor update of MSIX Hero is available. This build improves the experience of MSIX app attach (UI and command-line driven) and fixes a few spotted issues. The update is highly recommended.

Changes

  • App attach scripts are now digitally signed.
  • Because of the previous, the configuration of package(s) for app attach has been moved to a separate JSON file app-attach.json, which is then accessed by staging and registration scripts. In order to make adjustments (like changing the MSIX junction point path) edit the JSON file directly. Below is a typical file structure that is created (either from UI or from MSIXHeroCLI.exe):
  • All MSIX app attach scripts have now constant names (for example stage.ps1) and do not contain the name of the package anymore. This has the following benefits:
    • It is easier to run them manually by just typing a few letters in Terminal window
    • This is also now semantically correct, as the scripts are now effectively the same for all packages, since the configurable data has been moved to the JSON config.
  • The content of the scripts for app attach has been generally improved in terms of code formatting, and a missing dismount routine (also not present in templates on MSDN) has been added to the destage.ps1 script.
  • Staging script had previously duplicated curly braces, which could cause an error returned by mklink. The issue has been fixed in this version.
  • Speaking of mklink, its exit codes are now checked by the staging script. Non-zero exit code will break immediately.
  • The dialog for certificate extraction can now trigger self-elevation (UAC) in case the checkbox for trusted store is checked.
  • In the same wizard, a shield has been added to indicate possible elevation.

Download

The app will be updated automatically in a few hours if you installed it from app installer file. New users can download MSIX Hero from the Download page.

Update impact

Here is a visual comparison and update impact analysis of MSIX Hero 1.0.14 -> 1.0.16 upgrade. You can get similar results by exploring the options in the Ribbon > Tools > Update impact analyzer.

MSIX Hero 1.0.14 – extended CLI and bug-fixes

Version 1.0.14 of MSIX Hero is now available for download. This version contains the following changes:

New command line verb appattach

Previously, creating VHD files for MSIX app attach was only possible interactively (with help of MSIX Hero UI). In this version, a new command line verb has been added to make it possible to automate this operation.

The new verb appattach has the following sample usage:

MSIXHeroCLI.exe appattach --package "C:\pkgs\MSIX-Hero.msix" --directory "C:\pkgs\VHD\MSIX-Hero" --extractCert --createScripts

Due to some internals, this command requires administrative privileges’. More information about CLI usage can be found in the following documentation page: Command Line Interface (CLI) Reference > Creating VHD for MSIX app attach (appattach)

Resolved issues

  • It was not possible to open .appinstaller files with UTF-8 BOM (Byte-Order-Mark). The issue has been fixed in this version.
  • If property SystemAppId was present in an opened YAML file, its value was lost on re-saving. Note that this value is valid according to the documentation, but returns validation error from winget and Azure pipelines from the official repository. This is why it is hidden in the MSIX Hero UI. Anyway, in this version any value of SystemAppId is preserved if present in the original file.
  • Winget validation (winget validate command) was not executed at the end of YAML export, if no Windows Terminal Preview was installed. In this build, the command is executed even if a standard stable version of terminal is installed.
  • Some APPX/MSIX manifests could not be parsed correctly. The problem was reported for Konica Minolta packages, but could potentially affect some more. In this version, parsing of these specific manifest files has been fixed.
  • Dependencies tab was empty for packages/manifests using older syntax for prerequisites (<Prerequisites />). In this version, the dependencies are shown correctly.
  • Log files in previous version could contained too many log entries for certificate validation. In this version, some verbose logs are not anymore of type INFO but of a more verbose DEBUG level.
  • YamlDotNet was missing in the About window, section Third-party software. It has been added in this version (great package by the way, kudos to contributors)

Download

The app will be updated automatically in a few hours if you installed it from app installer file. New users can download MSIX Hero from the Download page.

Update impact

Last, but not least. Have you already tested how Update impact (a major highlight of version 0.9.0) works? Below is a comparison between MSIX Hero 1.0.5 and MSIX Hero 1.0.14. You can get similar results by exploring the options in the Ribbon > Tools > Update impact analyzer.

MSIX Hero 1.0.5

Version 1.0.5 of MSIX Hero is now available for download. This is just a minor bug-fix release.

Improvements

  • Getting packages is now generally faster. Results may vary, but a typical gain of 50% shorter loading time shouldn’t be anything unusual.
  • Pressing CTRL+F when a list of packages, volumes or events is focused moves the focus to the search box.

Resolved issues

  • Some older packages or packages with unexpected namespaces could be falsely reported as malformed (the problem was reported in app KONICA MINOLTA Print Experience but there may be potentially some more apps affected by this). The issue has been fixed in this build.
  • In some cases, unexpected values in the package manifest could cause a crash to desktop when selecting an affected package in the installed package list. The issue has been fixed in this build.
  • The progress bar for loading was not being refreshed during the initial loading of packages. The issue has been fixed in this build.
  • Some specific combination of selection, filter and navigation in the package list could trigger a “ghost” selection, which could result in the multi-selection view being presented, even with only a single package being actually selected. The issue has been fixed in this build.

Download

The app will be updated automatically in a few hours if you installed it from app installer file. New users can download MSIX Hero from the Download page.

Update impact

Last, but not least. Have you already tested how Update impact (a major highlight of version 0.9.0) works? Below is a comparison between MSIX Hero 1.0.0 and MSIX Hero 1.0.5. You can get similar results by exploring the options in the Ribbon > Tools > Update impact analyzer.

MSIX Hero 1.0 is a “silent hero”

A new build of MSIX Hero has been just published. This is a major release, which brings a few interesting highlights. One of these additions is the ability to execute certain operations from a command-line interface – silently, without any interaction (thus “silent hero”).

Command-line support

After installing the new package, an app alias MSIXHeroCLI.exe will be available in terminal of your choice (if you haven’t installed Windows Terminal yet, this is a good moment to grab it from github or Microsoft Store).

The command line version of MSIX Hero has currently the following options:

  • Packing folders to MSIX packages, unpacking MSIX packages
  • Signing a package (and updating the manifest accordingly)
    • With a selected combination of PFX file and a password,
    • With a certificate identified by a thumbprint,
    • With default signing settings as defined in program settings
  • Installing a certificate from a certificate file or from a signed MSIX package.
  • Creating a new certificate for self-signing

To get started, type MSIXHeroCLI.exe in terminal and press Enter

You can also get a help for a specific command by executing MSIXHeroCLI.exe <command-name> --help, for example MSIXHeroCLI.exe sign --help

Below are a few command samples:

To sign a package with a PFX file and a password:

MSIXHeroCLI.exe sign --file "c:\signing\cert.pfx" --password "Start123" --increaseVersion Major "c:\msix\unsigned-package.msix"

Note: Syntax for this command uses a limited subset of features and commands of signtool.exe. For example, you can use -f, -p, -t and --sha1 to specify the PFX path, password, timestamp URL and certificate thumbprint respectively. The additional value of MSIX Hero in comparison to signtool.exe is that the package manifest is adjusted automatically.

To pack a folder to an MSIX package

MSIXHeroCLI.exe pack --package "c:\msix\packed.msix" --directory "C:\msix\unpacked"

Note: the switches also support short form -p and -d, which is exactly the format that makeappx.exe supports.

Importing a certificate from a signed package to Trusted People store

The following command let you install a package signed with an untrusted certificate by importing it to the Trusted People store. You have to start MSIXHeroCLI.exe as administrator in order for this to work.

MSIXHeroCLI.exe trust "C:\msix\signed-package-with-untrusted-certificate.msix"

Finally, if execution of a command fails due to an error reported by any SDK-tool (for example, makeappx.exe or signtool.exe) its exit code or error code will be reported as exit code of MSIXHeroCLI.exe.

Read more about the command line interface in the following article:

New indicator representing signature status

In both sidebar and the Package Expert window, a new badge is shown which indicates the status of the signature. When a package is installed, it will be almost always shown as trusted, for example:

Clicking on the publisher name opens a Windows Explorer dialog with the signature properties.

If the package is not signed, the following is shown:

Finally, if the package is signed but the certificate is not trusted, yet another prompt is shown, this time with an extra button for importing the certificate to the Trusted People store with two-clicks (the second click to confirm the UAC dialog).

Showing execution aliases

Execution aliases are now visible in the sidebar, where previously only an information about Start Menu icon was present:

Left picture: MSIX Hero 0.9.1, right picture the new view in MSIX Hero 1.0.0. The UI version of MSIX Hero can be started from the Start menu, but the command line version does not install any icon, and instead relies on the execution alias.

Ability to define global password for package signing

It is now possible to define global password for package signing with PFX. The password will be stored in encrypted form in program configuration, using standard Windows Data Protection API (encryption keys stored in loaded User Profile). In previous versions of MSIX Hero, the password must be typed every time the signing was required.

Note: The settings defined on this screen are fully respected by MSIXHeroCLI.exe when it is started without any extra parameters for certificate selection.

Resolved issues

  • The button Install certificate… in Ribbon > Certificates was not triggering UAC dialog, but instantly failing with access denied error when MSIX Hero was not started as admin. This regression has been fixed in this build, and UAC dialog will be now shown correctly.
  • The authoring tool information stopped showing in the sidebar due to a wrong namespace lookup, a regression introduced in the last version. This issue has been fixed in this build.
  • Switching the type of package signing (from PFX file to Installed certificate or vice-versa) in the Settings dialog could write wrong values for PFX path and/or thumbprint if no other changes were done. This issue has been fixes in this build.
  • Some MSIX packages could not be packed or signed by previous version of MSIX Hero (an error about invalid manifest was thrown). This error in namespace lookup has been fixed in this version.

Download

The app will be updated automatically in a few hours if you installed it from app installer file. New users can download MSIX Hero from the Download page.

Update impact

Last, but not least. Have you already tested how Update impact (a major highlight of version 0.9.0) works? This is the comparison between MSIX Hero 0.9.1 and MSIX Hero 1.0.0. You can get similar results by exploring the options in the Ribbon > Tools > Update impact analyzer.

MSIX Hero 0.9.1

This is just a minor bug-fix release. It fixes or improves the following reported issues:

  • Added recognition of a few popular regular expression patterns for redirection rules (the display text shown in the PSF tab).
  • Packages having PSF executable launcher in folders other than root (for example VFS/...) were shown as having no redirected target. In this version, such packages show correct redirected paths for entry points. Since the issue has been fixed, packages created by Tim Mangan’s PsfTooling are now displayed properly in MSIX Hero.
  • MSIX Hero is now less strict in terms of the expected file name of the PSF launcher. Previously, only typical names like PsfLauncher.exe, PsfLauncher32.exe etc. were considered. Starting from this version, anything that starts with PsfLauncher* is considered to be a potential entry point for PSF. This enables executable names like PsfLauncher1.exe etc. to be shown with their actual target paths (see screenshot above).
  • Additional minor performance and stability optimizations.

Download

The app will be updated automatically in a few hours if you installed it from app installer file. New users can download MSIX Hero from the Download page.

MSIX Hero 0.9 – Understand update impacts and more

A new version of MSIX Hero (0.9) has been released. This build contains new functions and several improvements and fixes to reported issues.

Analyzing update impacts

This new feature lets you compare two packages from the same family (but with different version) and estimate the update impacts. MSIX has an out-of-the-box support for byte-level differencing, which is super handy during updates, where the MSIX source is on a remote location. The MSIX framework is intelligent enough to understand what has actually changed between two versions, and only download the chunks, containing the changed or added content.

With MSIX Hero, you can do a dry-run, and see how much really needs to be re-downloaded. For example, the following picture shows the update impact when updating MSIX Hero from version 0.6 to 0.9:

This means that although the new package contains as much as 67 MB files (25 MB after compression), only 1.9 MB will be downloaded on your computer when executing this particular update path. This is is just around 7.7% of the total package size, a true relief for the msixhero.net server 🙂

You can also use the other tabs to find out about the exact size of added, changed, deleted or unchanged resources, plus an exact list of changed files with their impact on the overall update.

In order to start playing around, press Update impact analyzer in the Tools ribbon and follow the on-screen instructions.

Version 0.9 has a limitation – it can only compare MSIX/APPX packages. Support for bundles will be added later.

Event viewer has been promoted to the main screen

Prior to MSIX Hero 0.9, in order to view MSIX/APPX logs, it was necessary to open a dialog by going to HOME > MSIX event logs.

MSIX Hero Version 8.3

In this new version, the viewer for logs is available directly from the left panel:

MSIX Hero Version 0.9

A few visual changes have been applied:

  • More logs are read at once
  • It is possible to filter the list by using the search box
  • The type of the log is now an icon instead of text
  • Three buttons are displayed in the ribbon to open the system Event viewer with the requested data loaded.

Compact package list now shows architecture instead of the package type

In the compact view, the place of the package type (UWP, Win32 etc.) has been now taken by the architecture (x86, x64 etc). You can still see the old value in the full list view (by dragging the splitter between the list and the sidebar) or in the sidebar.

Left: MSIX Hero 0.8.3. Right: MSIX Hero 0.9.

By the way, it is now possible to sort and group the list by the value of the Architecture column.

Small visual adjustments

There are small visual adjustments in this builds. Most of them are visible in the package list and the ribbon:

  • The background color for contextual tabs changed from green to dark blue:
MSIX Hero 0.8.3
MSIX Hero 0.9
  • Several lines and borders have been removed for some cleaner look and feel:
MSIX Hero 0.8.3
MSIX Hero 0.9.0
  • A button to open Settings has been added at the bottom of the left sidebar.
  • The top bar in the Package Expert window and in the package sidebar is now a bit smaller to allow for more content.

Other changes

  • Some packages with custom namespace prefixes (other than ns or uap) could be read improperly in versions prior to 0.9. This has been fixed in this build.
  • Several operations are now cancellable.
  • A problem with inconsistent tile color in the package list and in the sidebar has been fixed in this build.

Download

The app will be updated automatically in a few hours if you installed it from app installer file. New users can download MSIX Hero from the Download page.

MSIX Hero 0.8.3

A minor update to MSIX Hero has been released. This newest version 0.8.3 contains three changes to the handling of YAML files for winget:

  • When saving a manifest, an extra empty line is now appended at the end of the file
  • The manifest version is NOT added automatically. In previous version, 0.1.0 was used as a default (with an option to edit it). Although the field is a part of the standard definition, it seems that for a time being it may cause false positives and warnings in automated Azure Pipelines after making a pull request. In this build, some adjustments have been made to make sure that the manifest version is not editable and won’t be inserted, unless the YAML file being opened has it defined. Only in this case, the manifest version is visible and editable, in any other case the field won’t be even displayed. Note that this is a temporary solution, and may be changed in the future if validation of pull requests changes
  • It is now possible to open a YAML manifest by passing its full path as the argument to msixhero.exe. Note: previously this functionality was only limited to .appinstaller, .msix and .appx files.

Download

The app will be updated automatically in a few hours if you installed it from app installer file. New users can download MSIX Hero from the Download page.

MSIX Hero 0.8.1 meets winget YAML editor

A new version of MSIX Hero has been just released. There is a new feature which should be especially interesting for authors and contributors of package manifests in the winget repository (see https://devblogs.microsoft.com/commandline/windows-package-manager-preview/ for more details about winget, and https://github.com/microsoft/winget-pkgs to see the git repository for package manifests).

MSIX Hero has now a pretty complete editor which can create, build and open existing manifests (YAML). It simplifies several tasks which are sometimes tedious, for example:

  • It can read file hashes (from local or remote files) and signature hashes (APPX and MSIX)
  • It can recognize the setup type (exe, Nullsoft, InnoSetup, MSI, MSIX, APPX) and set the properties and metadata information accordingly
  • It validates the data in order to ensure, that the manifest fulfills at least minimum requirements for a package to be accepted in winget repository.
  • If installed on the same machine where winget is available, MSIX Hero fires winget CLI validation for each saved manifest.

In order to get to the winget manifest editor:

  • Press FILE > New > Winget manifest to start from scratch
  • Or, in FILE > Open > Winget manifest (YAML) and pick up any existing manifest to open it for editing
  • Or, in the list of installed MSIX packages highlight a package of your interest and open the editor from the contextual ribbon DEVELOPER > Winget manifest (YAML)
  • Finally, there is also a dedicated button in the EDIT ribbon.

Once there, do not forget to use this button for a quick start.

Choosing an existing installer does the following:

  • Getting name, version and publisher. For MSI sources, they are taken from MSI properties ProductName, ProductVersion and Manufacturer. For MSIX, the package identity is used. For other and executable files, file version info API is used.
  • Calculating installer hash (SHA-256)
  • For APPX and MSIX: Calculating signature hash (SHA-256) – if the package is signed
  • Reading additional properties or extrapolating them from other likely sources. For example, MSIX Hero tries to come with a reasonable value for the copyrights and EULA information, license URL, description etc.
  • For MSIX packages, AppMoniker field is also guessed. In the current implementation, this is just the name of the executable being the target of the manifested application.
  • For EXE packages, the type of the setup can be guessed. Currently the recognition of both NSIS and InnoSetup installers is supported. Other executable setups are reported as generic ones, and the silent command line arguments are left to be filled by the user.
  • Based on the name of the package and its publisher, a proposal for the package identifier is also created. Currently, it is just a concatenation of both values (minus spaces) separated by a dot character.

Here is what will be created if an installer (EXE) compiled with InnoSetup is chosen:

Once the manifest is created, it can be commited and pushed via pull request to this repository:

https://github.com/microsoft/winget-pkgs

Readme document explains, how to contribute and mentions a few additional guidelines to follow before submitting a contribution.

Other changes in version 0.8.1:

  • The status bar has been removed, as it only repeated the information visible already in other places.
  • Minor clean-up and adjustments of size and margins of ribbon tabs
  • The default grouping by publisher has been disabled. You can enable it again by going to the VIEW ribbon tab and selecting the right mode from the gallery.

Download

The app will be updated automatically in a few hours if you installed it from app installer file. New users can download MSIX Hero from the Download page.

Update

It seems that this version may produce a manifest which is not quite accepted by pipelines running after opening pull requests. The problem is caused by documented property ManifestVersion. In order to mitigate this issue on pipeline side, an update has been made that disables editing of manifest version. See more information about updated version here:

News / Release / MSIX Hero 0.8.3

MSIX Hero 0.7.1.0

A new version of MSIX Hero is there. This is just a minor update that fixes a bug reported by @BogdanMitrache, where packages having both a definition stored in PSF file config.json AND the Advanced Installer‘s executable wrapper AiStub.exe and/or AiStubElevated.exe were not showing a correctly resolved target path. This version fixes the issue.

Download

The app will be updated automatically in a few hours if you installed it from app installer file. New users can download MSIX Hero from the Download page.

Getting MSIX Hero with winget

Thanks to folks from Microsoft, MSIX Hero is also available in the repository of winget packages (https://github.com/microsoft/winget-pkgs/tree/master/manifests/MarcinOtorowski/MSIXHero). This means that installing MSIX Hero is now even easier than before, provided that you have a winget client installed.

If you haven’t tried it yet, I highly recommend getting it now for testing and previewing of how the official Windows package manager works. You can get the client from the following URL:

https://github.com/microsoft/winget-cli/releases

And then discover and install apps using a few basic commands (type winget to see help). For example, this is how you install MSIX Hero (the newest version) using exactly 24 key strokes:

winget install msixhero

Have fun with testing!