Adobe Air
Silent installer for Adobe AIR.
Download
Adobe AIR is available from Adobe, but you will need to apply for a free license to distribute it legally.
Adobe AIR 3
The -eulaAccepted
switch is optional, but prevents the user from having to accept Adobe's EULA when starting AIR for the first time.
<packages>
<package id="adobeair"
name="Adobe AIR"
revision="%version%"
priority="10">
<variable name="version" value="3.9.0.1210" />
<check type="uninstall" condition="versionequalto" path="Adobe AIR" value="%version%" />
<install cmd='%SOFTWARE%\adobeair\AdobeAIRInstaller.exe -silent -eulaAccepted' />
<upgrade cmd='%SOFTWARE%\adobeair\AdobeAIRInstaller.exe -uninstall' />
<upgrade cmd='%SOFTWARE%\adobeair\AdobeAIRInstaller.exe -silent -eulaAccepted' />
<remove cmd='%SOFTWARE%\adobeair\AdobeAIRInstaller.exe -uninstall' />
</package>
</packages>
Disable Automatic Update
Adobe AIR automatically checks for updates and prompts the user to install them, which needs Administrator privileges.
You can use the AIR SettingsManager to change that on a per-user basis or disable this behaviour globally for all users by adding a DWORD value named UpdateDisabled to the HKLM\Software\Policies\Adobe\AIR
registry key, and setting this value to 1 (According to Adobe AIR Administrator's Guide).
This can also be done through WPKG:
<install cmd='REG ADD "HKLM\SOFTWARE\Policies\Adobe\AIR" /v UpdateDisabled /d 1 /f /t REG_DWORD' />
<upgrade cmd='REG ADD "HKLM\SOFTWARE\Policies\Adobe\AIR" /v UpdateDisabled /d 1 /f /t REG_DWORD' />
Disable EULA Acceptance
Just make 2 text files under the %AppData%\Adobe\AIR
Dim objFSO, objFile
Set objFSO = CreateObject("Scripting.FileSystemObject")
If Not (objFSO.FolderExists(Session.Property("AppDataFolder") & "\Adobe")) Then objFSO.CreateFolder Session.Property("AppDataFolder") & "\Adobe"
If Not (objFSO.FolderExists(Session.Property("AppDataFolder") & "\Adobe\AIR")) Then objFSO.CreateFolder Session.Property("AppDataFolder") & "\Adobe\AIR"
If (objFSO.FolderExists(Session.Property("AppDataFolder") & "\Adobe\AIR")) Then
Set objFile = objFSO.CreateTextFile(Session.Property("AppDataFolder") & "\Adobe\AIR\UpdateDisabled", True) : objFile.Close
Set objFile = objFSO.CreateTextFile(Session.Property("AppDataFolder") & "\Adobe\AIR\eulaAccepted", True) : objFile.WriteLine("2") : objFile.Close
End If
Set objFSO = Nothing
Deploy Adobe AIR Applications
See this blog entry from Adobe to get a few hints on how to deploy Adobe AIR applications through WPKG.
Basically you can just run Adobe AIR Installer.exe -silent <Application>.air
or add the following switches:
- -silent
- required to run without user interaction during installation
- -desktopShortcut
- adds a desktop shortcut for the AIR application
- -programMenu
- adds a Start Menu shortcut for the AIR application
According to Adobe Help the silent switches are as follows:
-silent {-eulaAccepted -pingbackAllowed ( -location <loc> ) -desktopShortcut -programMenu} path
You cannot use the silent installer option to update an installed AIR application. So you have to uninstall before upgrade.
Uninstall is possible using msiexec /x {...} from Uninstall string.
Exit codes
Exit code Description
0 Successful install
1 Successful, but restart required for completion
2 Usage error (incorrect arguments)
3 Runtime not found
4 Loading runtime failed
5 Unknown error
6 Installation canceled
7 Installation failed
8 Installation failed; update already in progress
9 Installation failed; application already installed
Example
<package id="MyTimer"
name="My Timer Adobe AIR application"
revision="%PKG_VERSION%"
priority="1">
<variable name="PKG_VERSION" value="0.1.0" />
<variable name="PKG_SOURCE" value="%SOFTWARE%\packages\AdobeAir" />
<check type="uninstall" condition="valuegreaterorequal" path="MyTimer" value="%PKG_VERSION%" />
<depends package-id="AdobeAir" />
<install cmd='%COMSPEC% /c if exist %PKG_SOURCE%\MyTimer.air %PKG_SOURCE%\AdobeAIRInstaller.exe -silent -desktopShortcut -programMenu %PKG_SOURCE%\MYTimer.air' />
<upgrade include="install" />
<downgrade include="install" />
<remove cmd="msiexec /qn /l* c:\netinst\logs\mytimer.log /x{796F2B0E-FB6D-B7AB-416B-xxxxxxxxxxxx}" >
<exit code="1605" />
</remove>
</package>