Windows Installer
 
Unrestricted access to Windows Installer functionality!
 
Open Source
 
Open source!
 

<xml/>

 
Plain XML based source scripts!
 
Free
 
Free, no strings attached!
 
Build Automation
 
Command-line interface for automated application build process!
 
Community
 
Thriving community support!
Why WiX?
What is a ZAP package?
A .zap package is a simple text wrapper around a setup command. It is used with Group Policy Software Installation to publish non-MSI programs. However, there are quite a few limitations compared to using MSI based setups. Since non-MSI programs use their own Setup programs, these programs can NOT:
  • Take advantage of elevated privileges for installation.

  • Be installed on the first use of the software.

  • Install a feature on the first use of the feature (i.e. No advertising support).

  • Roll back an unsuccessful operation (install, modify, repair, or removal), or take advantage of other features of MSI.

In addition, ZAP files can only be used to publish non-MSI programs. It does NOT support assigning the program to a user or a computer.

To publish a non-MSI program, you need to first create a .zap file for the program. The author of the .zap file can include information such as file name extension and COM support in the .zap file. This information is extracted directly by the Group Policy Software installation extension.

Correct use of quotes in .zap file syntax can be tricky. The following rules apply:

  • The path and name of the Setup executable program must always be wrapped in quotation marks.
  • If there are no command-line arguments, they must be wrapped in two sets of quotation marks.

Example syntax using an absolute path:

SetupCommand=""\\ServerName\ShareName\FolderName\setup.exe""
SetupCommand="\\ServerName\ShareName\FolderName\setup.exe" /argument

Example syntax using a relative path:

SetupCommand=""setup.exe""
SetupCommand="setup.exe"/argument

The following is a sample .ZAP file for Visio 2000.

[Application]
; Only FriendlyName and SetupCommand are required,
; everything else is optional

; FriendlyName is the name of the application that will appear
; in the software installation snapin and the Add/Remove
; Programs control panel.
; REQUIRED

FriendlyName = "Visio2000, Profesional Edition"

; SetupCommand is the command line used to
; Run the program's Setup. If it is a relative
; path, it is assumed to be relative to the
; location of the .zap file.
; Long file name paths need to be quoted. For example:
; SetupCommand = "long folder\setup.exe" /unattend
; or
; SetupCommand = "\\server\share\long _
; folder\setup.exe" /unattend
; REQUIRED

SetupCommand = "setup.exe"

; Version of the program that will appear
; in the software installation snap-in and the
; Add/Remove Programs tool.
; OPTIONAL

DisplayVersion = Visio 2000

; Publisher of the application that will appear in the software
; installation snap-in and the Add/Remove programs control panel.
; OPTIONAL

Publisher = Microsoft

; URL for the application that will appear in the software
; installation snapin and the Add/Remove programs control panel.
; OPTIONAL

URL = http://www.visio.com

; Language for the app, in this case US English.
; OPTIONAL

; LCID = 1033

; Architecture, in this case, Intel.
; OPTIONAL

; Architecure = intel

; the [ext] [CLSIDs] and [progIDs] sections are all optional
[ext]
; File extensions that this application will "auto-install" for.
; They are not required if you do not want the application. This
; entire section is optional.

; note you can put a dot in front or not, as you like text after the
; first = is optional and ignored but the first = is required (or the)
; whole line will be ignored.)

VSD=
VSS=
VST=
VSU=
VSW=

[CLSIDs]
; CLSIDs that this application will "auto-install" for.
; This entire section is OPTIONAL

; Format is CLSID with LocalServer32, InprocServer32, and/or
; InprocHandler32 (in a command separated list) after the =.

;{CLSID}=LocalServer32

[progIDs]
; progIDs that this application will "auto-install" for. This entire
; section is OPTIONAL.

; Format is CLSID, with the corresponding progID list after the =.

;{progID}=Visio.Drawing
;{progID}=Visio.Drawing.6