What are the Wise custom Actions and what do they do?

Article:HOWTO8405  |  Created: 2007-12-18  |  Updated: 2009-01-06  |  Article URL http://www.symantec.com/docs/HOWTO8405
Article Type
How To

What are the Wise custom actions and what do they do?


Wise Custom Actions

Windows Installer Editor uses custom actions to add functionality that is not available with Windows Installer's standard actions. When you use certain features, such as custom actions that call a .dll, Wise custom actions are added to the installation.


Removing Wise custom actions might cause problems with the installation.

The Windows* Vista Logo Program requires you to document every custom action in an installation. This applies to the Wise custom actions as well as the ones you add. If you plan to certify an installation for Vista, use the information in the following table to document the Wise custom actions.

You document the custom actions on the Description tab that appears on the details dialog for all custom actions.

Wise Custom Actions

Custom Action



Checks the version of Windows on the destination computer. If it is less than six (earlier than Windows Vista), then it clears the DisableUAP property.

When User Account Control is disabled, the option to install for all users or for the current user on the installation's User Information dialog is hidden. If the installation has User Account Control disabled, but is run on a version of Windows Installer earlier than 4.0, then that option on the User Information dialog is shown. This is the default behavior for earlier versions of Windows Installer.


  • Inspects the destination computer to see if the Web installation can be installed.
  • Loads all the information out of the tables and configures the properties needed to properly display the Web dialogs based on the destination computer.
  • Populates the list of existing Web sites that appears in the Web dialogs when installing to an existing site.
  • Checks for WISE_CONFIG_INPUT_PATH and WISE_CONFIG_OUTPUT_PATH to determine if Windows Installer Editor should generate or read in settings to or from a configuration file.


Enumerates the entries in the AppSearch table and evaluates the expressions using the MSIEvaluate Property function. It then retrieves the value of the property and reports the results.


Evaluates the disk costing and identifies computers that don't meet the requirements. The MsiVerifyDiskSpace function calculates the costing and validates the amount of disk space. The following properties are used to display the amount of disk space required and available on the destination computer:

  • PrimaryVolumePath
  • PrimaryVolumeSpaceAvailable
  • PrimaryVolumeSpaceRequired
  • PrimaryVolumeSpaceRemaining


Determines if .NET is required by this installation.

The Preflight Instrumentation determines if this check is required by checking the MsiAssembly table for entries with 0 in the Attributes column. If the check is not required, the Preflight Instrumentation does not insert this check.

The test first ensures that there is a .NET assembly in the package. It then retrieves from the registry the versions of .NET that are installed. If a version of .NET is installed, it returns success and lists the versions installed. If no version is installed the test fails. This check is inserted after the launch condition check.


Evaluates type 34 or type 50 custom actions, which launch a file that is expected to exist on the destination computer. Once the test obtains the application path and ensures that it is valid, it calls the load library to ensure the application can be loaded and returns success if the application succeeded, failure if not.


Tells the user how many files in the preflight installation are in use. The message it returns is: Checked x files (OCX, EXE, and DLL files only), y are in use.


Determines which launch conditions succeed and which fail. It enumerates the LaunchCondition table and evaluates the condition using the MsiEvaluateCondition API function.

During preflight instrumentation, Windows Installer Editor determines if any actions were removed in the InstallExecuteSequence before the LaunchCondition action. If actions were removed, Windows Installer Editor cannot determine if the launch condition failed because of the removed action or because of the condition. Preflight instrumentation sets the property WISEDIAGLAUNCHWARN to 1 to indicate that Windows Installer Editor cannot determine the reason the launch condition failed.


Based on the patch GUID, checks if the patch is already installed. If it is, it returns a failure; otherwise, the test passes.


Processes the Extension table and checks the registry for support for each extension. This test opens the registry key for the extension. If the key exists, then the extension is already registered. The existing value of the key is compared with the ProgId to be registered; if they match, the same application re-registers the same extension. If they do not match, the application being installed overwrites the existing extension. If the key is empty, the extension is registered but no application is associated with it.


During Preflight Instrumentation, extracts URLs from the DisplayURL, DownloadFile, and PostToHttp custom actions. It puts them in a table, WiseUrlDiag, which is processed on the destination computer.

First, the test ensures that the connection can be opened to the specified URL; then, the content is downloaded. The test then translates the result into text.


Ensures that files that have been distributed throughout the environment are known and tested. This test ensures that a given computer is in a well known, managed state and that testing and conflict management operations are not invalid in the production environment.


Indicates the beginning of the preflight test. Also determines if the application that the preflight package is testing is already installed.


Indicates the end of the preflight test and that the .MSI was fully processed. Preflight Analysis uses the DiagnosticMarkEndRun test to determine if a run is incomplete.


During Preflight Instrumentation, builds a list of document extensions from the OpenDocument custom action and saves the list in the WiseExtDiag table. On the destination computer, checks the registry for support for each extension.

This test tries to open the registry key associated with the extension. If it successfully opens the key, then an association exists. Otherwise, no association exists.


Determines which files can be installed based on Windows installer file versioning rules. The message it returns is: There are x files in this installation, y files will be installed.





Iterate through the files or registry keys and values that can be installed by the installation and query the system for permissions to create, access, and update files or values.

Build a list of all securable objects from the File and Registry tables. For objects that exist, the test reads the security descriptor. For each profile on the system (read tests) or the installer's account (write tests), the test reads each security descriptor's access control list and determines the user's level of access to the object. For objects that do not exist (Example: objects that will be installed), the parent object's access control list is used to determine the access level. The test also reads and applies information from the LockPermissions table to gather additional security information (read test only).


Performs variable replacement within an .xml file.


If you add Nalpeiron support to an installation, and you choose to add support for Control Activation, this launches the Control Activation.exe after your installation finishes on the destination computer.



If you add Nalpeiron support to an installation, these deactivate the Nalpeiron license when your application is uninstalled from the destination computer.


Populates the list of existing virtual directories for a given site when installing to an existing virtual directory.


Sets the ARPINSTALLLOCATION property to the value of INSTALLDIR.


Sets the REINSTALL property to the list of features in the previous version of the user's application and sets the ADDLOCAL property to the list of features, if any, that were added to the installation in the new version of the application. This action is added to all installations but affects only installations that use patching.


Sets the REINSTALLMODE property to "omus" (the Windows Installer default) for patches. See REINSTALLMODE Property in the Windows Installer SDK Help. This action is added to all installations but affects only installations that use patching.


Determines what user interface wizard to display in the maintenance mode.


Determines what user interface wizard to display in the regular installation mode.


(Windows Installer 4.0 or later only.) Displays the installation log when any of the logging options on the Windows Installer Options page are marked, and the end user marks the View the install log check box on the installation's Exit dialog.


When you add a custom action that calls a .dll with parameters, this action is added to save the current state of properties for use by the custom actions running in deferred mode.


When you add a custom action that calls a .dll with parameters, this action is added to clean up any temporary files left over from the custom action.


Sets the property WiseOsqlCmd to the command line to launch the Osql tool.


Gathers information about the Windows Firewall during installation on Windows XP SP2, Windows Server 2003 SP1, and later.


Sets Windows Installer properties (ASPNET1.0_USER, ASPNET1.1_USER, and ASPNET_USER) containing the names of the ASP.Net users. These can be used to grant access to a user during installation.


Sets the property DOTNETFX to 1 if at least one version of .NET framework is installed. Also sets various properties to 1 to indicate which versions of .NET framework are installed (Example: DOTNETV1.0.3705).


Sets Windows Installer properties containing the version of Internet Explorer installed on the destination computer. These can be used for launch conditions to ensure that the computer has a required version of Internet Explorer installed. IEVERSION contains the version in simplified form, and IEVERSIONEX contains the complete version.


Sets properties (CGIENABLED, ISPAIENABLED, ASPENABLED, ASPDOTNETENABLED, SSIENABLED, IDCENABLED, FPEXTENABLED, and WebDAVENABLED) to show which features are enabled in IIS. This is useful for setting launch conditions to ensure that the destination computer has the required environment for the installation.


Set a property with the major IIS version (IISVERSION).


Uses the WiseOsqlCmd property to call osql to get the list of available SQL servers. Then it reads the property WiseSqlParam to get the name of a property that is used by a combo box in the ComboBox table. It then fills that combo box with the list of SQL servers.


Sets the property SQLSERVERVERSION to the version of SQL Server (or MSDE) installed on the destination computer.


Validates input for the Web dialogs. (Example: It verifies that port numbers are within range and IP addresses are formatted correctly.)


Determines the dialog to display when the end user selects the Next button.


Determines the dialog to display when the end user selects the Back button.


Registers (on installation) or unregisters (on uninstall) MTS/COM+ components that are specified on MTS/COM+ page.


During an uninstall, undoes changes that the installation made to the Windows Firewall. (Windows XP SP2, Windows Server 2003 SP1, and later.)


Scans the MsiAssemblyName table to find the .NET Framework version associated with each component and its related .NET assembly and then sets a property with the results. This ensures that, when the Execute Install method on this assembly check box is marked on the File Details dialog, the utility from the correct .NET Framework version is used for each assembly.


Configures the Windows Firewall during installation on Windows XP SP2, Windows Server 2003 SP1, and later.


Adds functionality for creating single-file .exe installations. It removes cached copies of the .msi that are extracted during uninstalls.


Reads a file of SQL commands and executes them. This is how Windows Installer Editor executes SQL scripts on the SQL Scripts page.


When you add a custom action that calls a .dll with parameters, this action enables parameter passing for actions that call a .dll file and extracts the necessary Wisescript .exe and .dll files.


Reads the property WiseSqlParam to get the names of properties to use for the SQL connection test. It then reads those properties to get the user name, password, and so on, and tries to connect to the SQL server. If it is successful, it sets the value of the last property in WiseSqlParam to the full connection string. If it fails, it sets the property WiseSqlError to an error message.


When you add upgrade information to the Upgrades page, this action is added to work around issues where the Windows Installer runtime does not detect previous versions of the application.


When you add upgrade information to the Upgrades page, this action is added to work around issues where the Windows Installer runtime does not detect previous versions of the application.


Creates, modifies, or removes the appropriate Web sites and virtual directories based on the XML generated by WiseWriteWebXmlDll.


Generates XML for operations that must take place during the installation, based on table information and properties set on the Web dialogs. The generated XML is stored in the registry under a Wise subkey of the installation's uninstall key in HKEY_LOCAL_MACHINE.

Legacy ID


Article URL http://www.symantec.com/docs/HOWTO8405

Terms of use for this information are found in Legal Notices