Optimizing Software Packaging – What To Know About Advanced Installer

One of the best tools that IT professionals can have in their arsenal is a packaging tool. This simplifies their tasks and saves them time. Businesses need to provide their IT teams with comprehensive packaging tools that are easy to deploy and highly compatible.

One such product that has garnered a significant amount of interest is Advanced Installer. What you get with this powerful packaging tool for developers, businesses, and ISVs, among others, is an advanced application packaging software. It simplifies software deployment in a big way.

And before fully committing, organizations can try out the trial version. It comes with full features allowing them to make a more informed decisions. To help you with that task, let’s go over what you have to look forward to with Advanced Installer.

Introduction

As already mentioned, Advanced Installer is a software packaging and deployment tool designed to eliminate the challenges often encountered with packaging and updating software.

Clients get an all-in-one packaging tool that can create, edit, update, and repackage MSI, EXE, App-V, APPX, and MSIX. Because of the user-friendly and intuitive design as well as the plethora of features and capabilities, IT professionals should expect an application that optimizes the packaging process.

Businesses will also appreciate how easy the integration will be. They’ll also enjoy the compatibility that provides support for various platforms and formats. In addition, IT professionals can easily create customizable and visually appealing installers. They can also benefit from the integration of Advanced Installer with popular development tools and environments.

Ultimately, using Advanced Installer gives your organization a product that enables you to build reliable MSI packages. These meet the latest Microsoft Windows logo certification requirements and generally follow the recommended Windows Installer best practices.

Requirements

Before proceeding with the purchase and installation of Advanced Installer, it’s also important to be aware of the specific requirements that the application demands. In the table below, you’ll find both the hardware and software requirements that you need to know.

HardwareSoftware
Required minimum: Core 2 class CPU1GB RAM1366 × 768 screen resolution 2GB hard drive spaceAdvanced Installer IDE – for Advanced Installer to run properly on a system, you will need: Windows 7 or newer. The latest Windows Platform SDK. However, this is optional as it will only be required when building certain types of packages.
What is recommended: i5 class CPU4GB RAM1920 × 1200 screen resolution 10GB hard drive spaceCreate Install Packages – Advanced Installer produces MSI or EXE install files that are designed to run on: Windows 7 or newer Windows Server 2008 R2 or newer.  
 Create MSIX Packages – Advanced Installer produces MSIX packages that are designed to run on: Windows 10 version 1507 or newer Windows Server 2016 (Long Term Servicing Channel) or newer.
 For Java – Advanced Installer for Java can create install bundles to install Java programs on these versions of MacOS: Mac OS 10.x Power PC Mac OS 10.x Intel.
 Windows 10/11 Compatibility – Advanced Installer and the EXE/MSI install packages it generates have been shown to work on Windows 10 and Windows 11.

Latest upgrades

Some new, recently announced updates for Advanced Installer are available. One in particular of great interest is the new nested Context Menus for File Associations in MSIX. The goal of this feature is to give organizations a more organized and efficient user interface. It ultimately streamlines the management of file associations.

As a result of this, you should have improved navigation and better usability. Moreover, clients will now also find a reboot option for NewPrerequisite and UpdatePrerequisite command lines coupled with support for Java versions 19 through 22.

The above improvements combine with new translations for default strings, a refactored build log for improved clarity, and an AppInstaller theme that is now supporting BrowseDlg dialog for a better user experience. More than just the new features, however, Advanced Installer has addressed challenges that clients were facing, including:

  • Fix EXE icon issue in non-English language projects.
  • Addressing the problem of the “Install side-by-side” option not always preserved on upgrades.
  • Fixing the reboot prompt issues during uninstallation.
  • Resolved the issue that was causing files to be digitally signed twice in an MSIX build.
  • Address the problem causing the description field to fail to set MSI name in UAC using trusted signing.
  • Corrected the issue causing the system to not prompt for the certificate password when the entered password was incorrect.
  • Resolved the problem of scheduled tasks failing if they were scheduled to run at task creation.

Available features

In the table below, you’ll find a few of the wide range of features that Advanced Installer has to offer.

ArchitectEnterpriseProfessionalFreeware
Repackager – seamlessly capture, customize, and repackage existing installations into MSI packages. Upgrade legacy setups to Windows Installer technology.Updater – checking for downloads and installation of patches and updates is done automatically.IIS – Web Sites, Virtual Directories and Web Applications, App-Pools, User Accounts.MSI – create valid MSI setups for your applications that meet all the written and unwritten Windows Installer rules.
MSI Quick-Edit – enables you to create, transform, or edit existing MSI packages directly from the Advanced Installer GUI.JSON Files Updates – without writing any code, you can manage JSON files that are part of the installation package or present on the target machine.Multilingual and Localized – get over 30 translations that are all ready to use, as well as easy to modify and create.UAC – build installers that will run seamlessly on Windows 10/8.1/8/7/Vista supporting the security model.
MSIX Custom Scripts – use PowerShell scripts to resolve any of the compatibility issues of your application after you create an MSIX.Installer Continuous Integration – provides built-in support for integration with Azure DevOps, GitHub Actions, Jenkins, TeamCity, and Bamboo.Themes – also get over 50 built-in beautiful themes to give your installer a professional look.Imports – bring in relevant imports from Visual Studio, InstallShield LE, Inno Setup, WiX, Eclipse, NSIS, and regular MSI/MSM packages.
MSIX Package Editor – can offer an immediate view of your package content, enabling you to customize anything from Advanced Installer’s user interface.Dialog Editor – enables you to visually customize existing installer dialogs or create new ones entirely from scratch.Custom Actions – if you execute your code during installation, you can extend your installer’s capabilities.32-bit or 64-bit – provides the option to build setups that both run and install on 32-bit processors and/or the latest 64-bit Intel and AMD CPUs.
MSIX Modification Packages – enables you to extend and update your MSIX packages. You’ll also be able to separate your main application package from its updates, thus speeding up Windows 10 updates.Convert EXE installers to MSIs – an extremely capable wizard that converts any EXE setup into an MSI ready for network deployment through Active Directory.Native Launcher – create a native launcher for your Java applications and customize the process name, file name, icon, version, splash-screen, JRE/JDK detection and selection, user-friendly error handling.Side-by-side – if you have different versions of your application and want to not only install them simultaneously but have them running side by side, you can easily create packages for all the different versions.
Package Support Framework – the capabilities of the PSF integration for MSIX packages will allow you to minimize any AppCompat issues without writing any code.Office Add-ins – leverage the included specialized templates to greatly simplify the creation of installers for popular software platform extensions, plug-ins, and add-ins.Prerequisites – search for, download, and install prerequisite applications, frameworks, and run-times.Upgrades – older versions of your product installed on the user’s machine will be detected and upgraded. Additionally, installation over newer ones will be blocked.

Pricing and Licensing

Once you have decided to use Advanced Installer, you can go ahead and start the purchase from the purchase page. For those who may need additional clarification on any issue, they can quickly find assistance with the support team. Once completed, you can start planning to deploy the package you choose on certain machines.

Fortunately, there is no limit to the number of machines you can deploy a package. As long as you have a licensed version of Advanced Installer, you can successfully create an unlimited number of install packages. You can then distribute these packages royalty-free to any number of users

When it comes to the issue of upgrades, you can purchase your subscription/license upgrade from the upgrades page. After upgrading your subscription, you’ll need to log out before logging in again. Once logged into Advanced Installer, you can refresh your subscription details. For clients with perpetual licenses, their license keys won’t change.

All they have to do is run the registration wizard once more in Advanced Installer. You can get access to the features from the new edition to which you upgraded by opening the project in Advanced Installer. In the toolbar, go to Home > Options > Project Type tab, and choose the desired project type.

The table below contains information regarding the pricing structure.

 ArchitectEnterpriseProfessional
Cost$359 per user per month. The option for a team subscription is available.$139 per user per month. The option for a team subscription is available.$39 per user per month. The option for a team subscription is available.
What you getIn addition to everything that Enterprise offers, you will also get Repackager, MSI Quick-Edit, Reports Generator, App-V, MSIX (Re)packaging, MSIX Package Editor, SCCM, and Intune.In addition to everything you get in Professional, you also get CI/CD Integration, Dialog Editor, Updater, XML Patching, Databases, Trial and Licensing, Merge Modules Authoring, EXE to MSI (wrapper), Automated VM Testing, and Drivers.The main features available include Trusted Signing Native Integration, Visual Studio Extension, PowerShell Automation, MSIX, Themes, Services, Prerequisites, IIS, .NET, COM, ODBC, Internationalisation, Java Native Launcher, and Installer Analytics.

Registration process

After purchasing Advanced Installer, you can now begin the registration process. However, if you are using the Freeware version, registration is not necessary. Clients that opt for the Professional, Enterprise, and Architect versions will require a valid registration to continue use after the trial period has lapsed. All you need to do is navigate to the File > Help > Register menu.

ONLINE REGISTRATION

If you want to download the license online, then the first thing you’ll need is an internet connection. With that established, Advanced Installer will connect to the appropriate server and download the license file to your device.

REGISTRATION BY EMAIL

In this case, an internet connection is not a requirement for the device in question. Once you have noted your Computer ID, you can email it in using any other device connected to the internet. Coupled with the valid License Key, you should forward these details to support at advancedinstaller.com. You can also expect to receive your response within 48 hours. The response will contain your license file as well as additional instructions.

LICENSE SERVER REGISTRATION

This method of registration by using a license server is only a valid option for owners with floating licenses. You’ll need to verify that your network administrator has correctly installed and configured the License Server. You won’t be able to complete the registration if you don’t have both the server’s host name and the port number.

Wrap up

Organizations are constantly searching for productivity tools that can empower their teams and increase operational efficiency. Tools such as Advanced Installer are ideal in that they can simplify tasks such as packaging and deployment of software. The capabilities of this application will deliver a faster overall process and a seamless installation experience that minimizes headaches. And as we move forward Advanced Installer will only get better as the development team leverages the feedback from clients.

MicrosoftStoreAppUpdater script

A simple way to update Microsoft Store Apps

This script will inititae update for Microsoft Store Apps and applications available using winget.
By default it will delete the logfile if older then 30 days.

Should run with local administrative rights or as system

When deploying new computers, there might be modern apps without processed updates.
Can also update on regular machines in use.

Works with Windows 365 Deployments and regular OSD using ConfigMgr/MDT

https://github.com/ThomasMarcussen/assortedScripts

Automate Configuration Manager Application Creation

A simple script example to automate the application creation process in ConfigMgr or Configuration Manager.

RebootBehavior set to NoAction, Accepted values: BasedOnExitCode, NoAction, ForceReboot, ProgramReboot
AutoInstall $true – indicates whether a task sequence action can install the application
Added Action to Distribute the Content to the DP Group at the end

Configuration Manager Checklist:

  • Application Name
  • With a deployment type: Same application name
  • Content Location
  • Installation Program
  • Uninstall program
  • Repair Program
  • Detection method (a specific MSI Product code)
  • User expierence: Install for system if resource is device; otherwise install for user
  • Logon requirement: weather or not a user is logged on

    Published on Github:

https://github.com/ThomasMarcussen/assortedScripts/blob/master/Create_SCCMApplication_1.0.1.ps1

New Microsoft Edge based on Chromium – error status: 1603

I recently ran into to an issue deploying the New Microsoft Edge, for some reason it kept failing with Error status 1603 on most of the systems.

The deployment version was version: 87.0.664.47
It kept failing on a lot of systems with build: 1803. I did suspect a missing KB of some kind. However, I did not find any apparent prerequisites missing.

Tried the same method for the latest version – 87.0.664.60. Both downloaded from: https://www.microsoft.com/en-us/edge/business/download and everything seemed to be working. It’s now deployed to more then 2000 systems.

CustomAction DoInstall returned actual error code -2147219187 (note this may not be 100% accurate if translation happened inside sandbox)

Error 1722. There is a problem with this Windows Installer package. A program run as part of the setup did not finish as expected. Contact your support personnel or package vendor.  Action DoInstall, location: C:\WINDOWS\Installer\MSI9085.tmp, command: /silent /install "appguid={56EB18F8-B008-4CBD-B6D2-8C97FE7E9062}&appname=Microsoft Edge&needsAdmin=True&usagestats=0&ap=stable-arch_x64" /installsource enterprisemsi /appargs "appguid={56EB18F8-B008-4CBD-B6D2-8C97FE7E9062}&installerdata=%7B%22distribution%22%3A%7B%22msi%22%3Atrue%2C%22system_level%22%3Atrue%2C%22verbose_logging%22%3Atrue%2C%22msi_product_id%22%3A%2292749E40-069E-3467-BB1F-78BB266190E2%22%2C%22allow_downgrade%22%3Afalse%2C%22do_not_create_desktop_shortcut%22%3Afalse%2C%22do_not_create_taskbar_shortcut%22%3Afalse%7D%7D" 

MSI (s) (10:A8) [13:21:48:649]: Product: Microsoft Edge -- Error 1722. There is a problem with this Windows Installer package. A program run as part of the setup did not finish as expected. Contact your support personnel or package vendor.  Action DoInstall, location: C:\WINDOWS\Installer\MSI9085.tmp, command: /silent /install "appguid={56EB18F8-B008-4CBD-B6D2-8C97FE7E9062}&appname=Microsoft Edge&needsAdmin=True&usagestats=0&ap=stable-arch_x64" /installsource enterprisemsi /appargs "appguid={56EB18F8-B008-4CBD-B6D2-8C97FE7E9062}&installerdata=%7B%22distribution%22%3A%7B%22msi%22%3Atrue%2C%22system_level%22%3Atrue%2C%22verbose_logging%22%3Atrue%2C%22msi_product_id%22%3A%2292749E40-069E-3467-BB1F-78BB266190E2%22%2C%22allow_downgrade%22%3Afalse%2C%22do_not_create_desktop_shortcut%22%3Afalse%2C%22do_not_create_taskbar_shortcut%22%3Afalse%7D%7D" 

MSI (c) (C4:44) [13:21:48:771]: Windows Installer installed the product. Product Name: Microsoft Edge. Product Version: 87.0.664.47. Product Language: 1033. Manufacturer: Microsoft Corporation. Installation success or error status: 1603.

Any ideas, other then deploying latest and greatest? Let me know.

Deploy Microsoft Edge Chromium Using PowerShell App Deployment Toolkit (PSADT)

The new Microsoft Edge is based on Chromium and was released on January 15, 2020. It is compatible with all supported versions of Windows. Installing the browser will replace the legacy version of Microsoft Edge on Windows 10. Deploy Microsoft Edge Chromium using the PowerShell App Deployment Toolkit.

PowerShell App Deployment Toolkit (PSADT) is a great framework to deploy and manage application deployment. It is free of charge. Additionally, it is downloadable from https://psappdeploytoolkit.com/.

The published script is here on Github

Deploy Microsoft Edge

This deployment script example does the following within the PSADT framework:

Pre-Install:
If Microsoft Edge is open, it will prompt the user to close it or delay the deployment three times (Comment line 120 if you prefer to just shut it down.)
Also, as a Pre-installation task it searches the add/remove program list for any version of Microsoft Edge and uninstalls it.

Install:
It then installs the MSI file from the Files directory – MicrosoftEdgeEnterpriseX64.msi
The latests version of Microsoft Edge for Business version can also we downloaded from – https://www.microsoft.com/en-us/edge/business/download

Uninstall:
Uninstalltion is performed using the name from Add/remove programs (same as for the pre-install step) so this will require no changes. (Line 181)

Repair:
If needed repair can be enabled (or updated for other versions)
(Modify line 203 if deploy other versions)

Microsoft Edge follows the Modern Lifecycle policy. Learn more about supported Microsoft Edge releases.

MSiX Insider Preview Build 1.2019.522.0

First insider preview release for the upcoming public release in July.

New Features:

  • Support for desktop installers that require restart – read more
    • Auto-login option for restart
  • New options in app settings
    • Specify a default cert to sign packages with
    • Specify exit codes for installers that require restart


Known “bugs/features”

  • Negative reboot exit codes are currently not supported
  • If Default cert is specified, you still need to select to sign your package
  • During remote or VM restarts, there might be an extra login prompt
  • Restore defaults button doesn’t remove certificate password or installer exit codes
  • There are some UI incongruencies

You can find the full history of MSIX Packaging Tool release notes here.


List Packages that run in user context (Run with user’s rights)

Introduction

After last weeks post with the script sample to list Packages that run in user context, there where some good feedback from people still using packages, and requiring a list of packages that install within the user context (Run with user’s rights / Execution mode as user)

It seemed that many was still using Packages, either as a result of legacy migration or to avoid some application re-packaging.

So here is the followup post, with a new script to list all packages and package with programs that run in user context.

From my point of view, its still the same; Using PSADT pretty much any package can be converted to be installed as system, and the needed stuff (registry keys, files etc) in the user context can be added in a structured and controlled way.

I do still come across some applications that i would prefer to have in MSI with all settings etc added, at least for simplicity, for those packages I still prefer to use Advanced Installer.
When talking Advanced Installer, they also have a great support for MSIX, that makes to process so much easier and cost efficient.

This script will list all packages with programs, that is configured to install as user (within the user context)

All you need to do is configure the path to your import module and set the site code.

A file will be created in “C:\TEMP\Packages_and_Programs_Run_Mode_List.csv” with the following format:

“Package Name”,”Package ID”,”Program Name”,”Run with USER’s right”
“My Application”,”BB10001D”,”execute”,”TRUE

With the example above we have a package ‘My Application’ that has a run mode configured: Run with user’s rights

Properties on the program, where the program run enviroment is configured to Run with Users’s rights


Download the script from TechNet Galleryhttps://gallery.technet.microsoft.com/Generate-a-list-of-d8778d4c?redir=0



List Applications that run in user context (Install for User)

Introduction

When deploying applications sometimes they are created to install within the active users context.
This means that the actual installation requires the users to have the needed permissions to the filesystem, registry and etc.
In some cases local administrative rights are needed to perform the application installation, this is not a good practice.

As applications mature for the modern design of the Windows Operating System or we choose to remove the users administrative rights due to security reasons, we may need to list and change the behavior of existing Applications.

This script was created to list applications that is configured to run with Installation behavior: Install for User

The actual output will end up in the export csv file

Script Download [download id=”893″]



Today with the modern management tools and applications, the users should not have local administrative rights on a permanent basis.
Most, if not all applications can be repackaged to deploy without the need for administrative rights.



Useful links:

PowerShell Application Deployment Toolkit: https://psappdeploytoolkit.com
Advanced Installer: https://www.advancedinstaller.com/
Access Director Enterprise: https://ctglobalservices.com/access-director-enterprise/



Cleaning up shortcuts

So the issue at hand;
I was replacing a Office application on Windows systems, where i noticed that shortcuts created by the users, was not upgraded/removed when the new office version was installed.

The issue seems to be related to users creating custom shortcuts, directly to exe files.
I some cases the shortcut name was clear, but in other cases the users had chosen something they found fit.

The following PowerShell script was created to remove shortcuts (lnk files) based on the executable. This means you can specific the exe or use a wildcard if there is multiple executable files releated to an application.

$ShortcutLocations = Get-ChildItem -Recurse (“C:\Users”,”C:\ProgramData\Microsoft\Windows\Start Menu”) -Include *.lnk -Force -ErrorAction SilentlyContinue

########
# This script searches for all *.lnk files to "C:\Program files (x86)\App\My Application.exe" or "C:\Program Files\App\My Application.exe"
# It searches in C:\users\* profiles paths, including Users Desktops, %AppData%\Microsoft\Internet Explorer\Quick Launch and in ProgramData...StartMenu
# The name of the link file can have many different names, therefore we must find each shortcut based on path to target exectuable and not on lnk name.
# Then the lnk file must be deleted.
#
# The script should be run with admin rights, otherwise shortcuts will only be deleted for the user running the script.
########

### Specify shortcut's target executable here.
$AppExecutable = "C:\Program files*\Microsoft Office\Office15\*.exe"
# * Due to mask it contains "Program files" and "Program files (x86)" paths both.
###

### Paths to browse and search for shortcuts.
$ShortcutLocations = Get-ChildItem -Recurse ("C:\Users","C:\ProgramData\Microsoft\Windows\Start Menu") -Include *.lnk -Force -ErrorAction SilentlyContinue
# * -Recurse = Includes all subdirectories.
###


### Get properties for shortcuts in the locations

Function Get-ShortcutsProperties {
$Shell = New-Object -ComObject WScript.Shell 
Foreach ($Shortcut in $ShortcutLocations)
{
$Properties = @{
ShortcutName = $Shortcut.Name;
ShortcutFullName = $Shortcut.FullName;
ShortcutLocation = $shortcut.DirectoryName
ShortcutTarget = $Shell.CreateShortcut($Shortcut).targetpath
}
New-Object PSObject -Property $Properties
}
[Runtime.InteropServices.Marshal]::ReleaseComObject($Shell) | Out-Null
}
###

$ShortcutsList = Get-ShortcutsProperties

### Compare shortcut's target path with $AppExecutable and delete it in case of corresponding one
Foreach ($item in $ShortcutsList) {

if ($item.ShortcutTarget -like $AppExecutable) {

Remove-Item -Path $item.ShortcutFullName -Force -ErrorAction SilentlyContinue
 }
}
######## End of the script

Download the PowersShell Script here: [download id=”877″]

MSiX – Remote machine conversions

The MSiX Packaging Tool (1.2019.226.0) Preview now has the ability to connect to a remote machine, where you can run the conversion.
This is great news, and solves the normal issue with contamination on “non-sanitised” machines.

I have always preferred to do my packaging and re-packaging on Hyper-V Virtual Machines
This gives a total control and clean enviroment, with easy ability to get back to a controlled point of reference, using checkpoints.

Getting started with remote machine conversions? Fear not! It is quite simple to get started.

– PowerShell remoting must be enabled for secure access to the remote machine.
– You must be logged on with administrative privileges on the machine.

To enable PowersShell remoting on the machine, run the following command in an elevated PowerShell prompt: Enable-PSRemoting -Force -SkipNetworkProfileCheck

If network/firewall restrictions are in place, remember to allow inbound traffic on port 1599 (MSiX Packaging Tool default port, it can be changed with the settings tab)

If you are connecting using a non-domain joined machine, you must use a certificate to connect over https.
To enable PowerShell remoting and allowing WinRM over https run the following commands in an elevated PowerShell prompt

Enable-PSRemoting -Force -SkipNetworkProfileCheck

New-NetFirewallRule -Name "Allow WinRM HTTPS" -DisplayName "WinRM HTTPS" -Enabled True -Profile Any -Action Allow -Direction Inbound -LocalPort 5986 -Protocol TCP

To generate a self-signed certificate, configure WinRM secure configuration and export the certificate, you can run this script: (or download: [download id=”863″])

$thumbprint = (New-SelfSignedCertificate -DnsName $env:COMPUTERNAME -CertStoreLocation Cert:\LocalMachine\My -KeyExportPolicy NonExportable).Thumbprint
$command = "winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname=""$env:computername"";CertificateThumbprint=""$thumbprint""}"
cmd.exe /C $command
Export-Certificate -Cert Cert:\LocalMachine\My\$thumbprint -FilePath <path_to_cer_file>

On your locale Machine, copy the exported certificate and install it into the Trusted Root Store.
It can be imported with the following command: Import-Certificate -FilePath <path> -CertStoreLocation Cert:\LocalMachine\Root