Skip to content

About Install.json

The Packaging Factory implements support for a standardised approach to installing an application via Install.ps1. Using this install script is optional, but it simplifies the maintenance of install scripts by using a single script that reads Install.json that defines the installation logic for an application.

The use of Install.ps1 is defined in Program.InstallCommand section in the App.json file for each application:

  "Program": {
    "InstallTemplate": "powershell.exe -ExecutionPolicy Bypass -NonInteractive -WindowStyle Hidden -File .\\Install.ps1",
    "InstallCommand": "powershell.exe -ExecutionPolicy Bypass -NonInteractive -WindowStyle Hidden -File .\\Install.ps1",
    "UninstallCommand": "msiexec.exe /X \"{AC76BA86-1033-1033-7760-BC15014EA700}\" /quiet",
    "InstallExperience": "system",
    "DeviceRestartBehavior": "suppress",
    "AllowAvailableUninstall": "false"
  },

You can replace the installation command with the PowerShell App Deployment Toolkit or directly referencing the application installer; however, Install.ps1 provides a simple approach to installing an application while providing some additional features.

Install.json defines details for the application installer and important install tasks including the application installer silent install arguments:

{
    "PackageInformation": {
        "SetupType": "EXE",
        "SetupFile": "AcroRdrDCx642200220191_MUI.exe",
        "Version": "22.002.20191"
    },
    "LogPath": "C:\\ProgramData\\Microsoft\\IntuneManagementExtension\\Logs",
    "InstallTasks": {
        "ArgumentList": "-sfx_nu /sALL /rps /l /msi EULA_ACCEPT=YES ENABLE_CHROMEEXT=0 DISABLE_BROWSER_INTEGRATION=1 ENABLE_OPTIMIZATION=YES ADD_THUMBNAILPREVIEW=0 DISABLEDESKTOPSHORTCUT=1 /log \"#LogPath\\#LogName.log\""
    },
    "PostInstall": {
        "Remove": [
        ],
        "CopyFile": [
        ]
    }
}

Like App.json, Install.json is also automatically updated with application information returned from Evergreen, including the installer file name and the application version number. By updating the PackageInformation.SetupFile information in Install.json, we ensure that Install.ps1 will look for that specific installer file and not attempt to execute any other file.

PSAppDeployToolkit

If you prefer to use the PSAppDeployToolkit, replace Install.json with Deploy-Application.ps1. When New-Win32Package.ps1 is run, it will detect the presence of Deploy-Application.ps1 and copy the PSAppDeployToolkit into the package before preparing the .intunewin file.