Settings Tab - Installer Project

In this tab you can configure the digital signature of your package.

Digital signature settings tab

Enable signing

Checking this checkbox will enable the actual signing of the package.

Reset All

This button can be used to clear all fields.

Signing Tool

Built-in

Use the built-in signing tool.

Custom

Path:

Select a custom signing tool.

Command Line:

Enter a command line for the above cutom signing tool.

NoteEnvironment variables can be specified in Command Line field and they can be referenced as %ENV%.

Software Publisher Certificate

Use from certificate store

Choose one of the currently installed certificates.

<Most suited certificate> - When this value is selected, "SignTool.exe" will sign the files with the best certificate found in the current user's Personal certificates store.

ImportantOnly certificates from "Current User\Personal" store are imported in "Use from certificate store".

Command line examples:

signtool sign /a /d <desc.> /t "http://timestamp.digicert.com" <file_name>

NoteTo view or manage certificates inside the system store, you can use certmgr.msc tool (Press Windows Key + R, type "certmgr.msc" and press enter).

[ Create... ] - Creates a certificate with which you can sign your package for testing. Make sure you install it as a trusted certificate and use it only for testing purposes.

Use file from disk

When this option is selected the certificate used to sign the files is loaded from a local disk file. Every time you select this option, you will be prompted to select the path to the certificate from the hard-drive.

NoteAdvanced Installer supports both Personal Information Exchange PKCS #12 (.pfx) and X509 (.cer) certificates.The .pfx certificates contain both the public and private keys. The .cer certificates contain only the public key, the private key being stored onto an USB eToken (protected by password).

Certificate - This field contains the path on disk to the certificate. You can use the [ ... ] button in this field to select one from your hard-drive.

NotePFX certificates are recommended, you can use either pvkimprt or pvk2pfx to create a PFX certificate from the SPC and PVK files. If the PFX file is protected with a password, the “Selected certificate requires password. Select how to transmit it to signing tool:” section will be visible.

  • pvkimprt can be downloaded
  • pvk2pfx is available as part of the Platform SDK

Private Key - In this field you can set the “Private Key”. You can use the [ ... ] button to select one from your hard-drive. PFX certificates do not have a separate private key file; thus this field is hidden by default.

Enter password each time project is built - You will be prompted to enter the password when the MSI is built.

NoteAdvanced Installer caches the password for PFX files; thus you will be prompted for the password only once.

Store encrypted password in project file - The encrypted password will be stored in the project and used at build time to sign the installation files. This option is useful for unattended builds.

Password - The password for the PFX certificate.

Confirm password - Confirm the PFX certificate password.

Command line examples:

signtool sign /f <my_cert> /d <desc.> /t "http://timestamp.entrust.net/TSS/AuthenticodeTS" <file_name>
signtool sign /f <my_cert> /d <desc.> /fd SHA256 /tr "http://timestamp.entrust.net/TSS/RFC3161sha2TS" /td sha256 <file_name>

Use from Azure Key Vault

To better understand this feature see this article: Azure Key Vault basic concepts.

ImportantSigning using a certificate from Azure Key Vault only works on Windows 10.

Tenant ID

The Azure active directory where Key Vault resides. This field is mandatory!

App ID

The ID of the Azure application that has access to Key Vault. This field is mandatory!

Vault Name

The name of the Key Vault. This field is mandatory!

Certificate Name

The name of the certificate stored in the Key Vault. This field is mandatory!

Certificate Version

A certificate stored in a Key Vault can have multiple versions. The string stored in this field identifies a version.

NoteWhen this field is empty, Azure Key Vault signs with the latest certificate version.

Client Secret

When a file is signed, the user will be prompted to enter the Client secret associated with the application identified with ID - App ID. The Client secret is not stored in the project file.

Using command line

When using Advanced Installer from command line, you can set the Client secret using the following command: SetAzureKeyVaultSecret

ImportantDue to the fact that the Client secret is not stored in the project file, SetAzureKeyVaultSecret command can be used only from a .AIC command file.

For increased security, the Client secret can be stored in an Environment variable using -secret_is_env_var_name switch. With this switch, the command will interpret that the name entered as a parameter is an environment variable.

NoteFor security reasons, environment variables can be used in all the above fields instead of the actual values. Environment variables can be easily securitized in Azure Pipelines. For example the actual Tenant Id can be stored in %TenantId% Environment variable. In this case, just enter the the %TenantId% reference in the Tenant Id field. At build time the value stored in this environment variable will resolved and used for the Tenant ID.

ImportantThe Azure Key Vault certificate subject can be synchronized with the MSIX Publisher ID. To achieve this you must press the Synchronize button from Publisher Section of Package Information page. At build time the subject - publisher ID mismatch is detected automatically.

Use Device Guard for signing

ImportantDevice Guard signing only works on Windows 10.

To sign a package with Device Guard you need an Azure account configured for Device Guard signing. For more information regarding the configuration see this article: Sign an MSIX package with Device Guard signing

NoteThe Publisher ID from Package Information Page must adhere to the following format: CN=account_name.onmicrosoft.com

Using command line

You can set Device Guard sign account name and password using the following command: SetMsActiveDirectoryCredentials.

ImportantSetMsActiveDirectoryCredentials command can only be used from a .AIC command file due to the fact that the password is not saved in the project or the registry.

Example of a command file
SetMsActiveDirectoryCredentials -username user_name -password account_password [-password_is_env_var_name]
build -buildslist Build_MSIX_APPX -force

NoteOptionally, instead of the actual password, you can specify an environment variable where the password is stored, using the optional command line parameter [-password_is_env_var_name]

Caution!If the account is not properly configured for Device Guard signing, signing a file could trigger an error that can imply that the timestamp can't be applied.

Signature Properties

Description

This field contains the signed content's description. It will be shown by the Windows UAC after you click the "Install" button.

Description URL

This field contains a URL for a complete description of the signed content. The URL will be used when the package is launched from an untrusted location (for example from the network) in the "Open File - Security Warning" dialog, where the "Name" field will become a link to the URL you specified.

Timestamp service URL

A digital certificate has a validity period. After that period expires the signed code is not considered certified anymore. To prevent that a timestamp can be placed at the signing time which will show that the certificate was valid when the signing was done.

The “Timestamp service URL” specifies the URL of the timestamp server. An examples of such server is:

https://sectigo.com/resource-library/time-stamping-server.

ImportantSignature properties are required to display the exact MSI name on the UAC prompt.

Timestamp delay (ms)

In this field you can configure how many milliseconds Advanced Installer will wait between two consecutive signing operations

Sign only for modern operating systems, Windows 7 or newer ​(recommended)​

If you enable this option, your package will be signed only with the SHA256 hashing algorithm.

By default, Advanced Installer uses SHA256 as a hashing algorithm, as recommended by Microsoft. However, it is very important to know that packages signed with SHA256 will not have their digital signature recognized on XP/2003 and Vista/2008 machines.

ImportantThis option can be used only with SHA256 certificates. For SHA1 certificates this option will be ignored, and only a SHA1 signature will be added for each file.

Sign for compatibility with all operating systems, including Windows XP/Vista ​(deprecated)​

This option enables Advanced Installer to perform dual signing or to sign only with the SHA1 hashing algorithm.

The dual signing process follows Microsoft documentation, ensuring your digital signature is correctly seen on all operating systems, including XP/2003 and Vista/2008.

ImportantDual signing will succeed only if you have an SHA-2 certificate. SHA-1 certificates can only be used in certain scenarios, as explained in this article.

ImportantMSI setup packages cannot be dual signed.

Patching

Enable installing of patches for this product without elevation

By enabling this option, you don't need elevated privileges when applying the patch if both patch and target MSI are signed using the same certificate.

TipAn administrator can disable least-privilege patching on the computer by setting the DisableLUAPatching policy to 1. You can set the MSIDISABLELUAPATCHING property to 1 during the initial installation of an application to prevent least-privilege patching for that application only.

NoteThis option is not available for Patch Project.