Application Association Registration plug-in

From NSIS Wiki
Jump to navigationJump to search

AppAssocReg Plugin for NSIS (2008-12-10)

This plugin can read / set application association registration for Windows Vista and greater.

Version: 0.4 (2008-12-10)

  • Added Unicode support (initial patch by Ehsan Akhgari).
  • Download includes both the ANSI and Unicode versions of the plug-in.

Version: 0.3 addendum (2008-12-09)

  • Added Unicode download.

Version: 0.3 (2007-10-30)

  • Renamed plugin from SetVistaDefaultApp to AppAssocReg.
  • Added all IApplicationAssociationRegistration methods available.

Version: 0.2 (2007-09-28)

  • minor cleanup

Version: 0.1 (2007-09-28)

  • initial release

Details On Function Parameters

app_name

The value for app_name is the name associated with the application under:

 HKLM\Software\RegisteredApplications\

assoc_name

The value for assoc_name can be one of the following:

  • For type equals protocol it should be the protocol name (e.g. http, mms, etc.).
  • For type equals file it should be the file extension (e.g. .html, .txt, etc.)
  • For type equals startmenu it should be the registry subkey name StartMenuInternet, mail, etc.) under:
 HKLM\Software\clients\
  • For type equals mime it should be the MIME type name (e.g. audio/mp3, text/html, etc.)

type

Possible values for type map to ASSOCIATIONTYPE as follows

  • file = AT_FILEEXTENSION
  • protocol = AT_URLPROTOCOL
  • startMenu = AT_STARTMENUCLIENT
  • mime = AT_MIMETYPE

level

Possible values for level map to ASSOCIATIONLEVEL as follows

  • machine = AL_MACHINE
  • effective = AL_EFFECTIVE
  • user = AL_USER

Functions

AppAssocReg::QueryCurrentDefault assoc_name type level
Pop $Var

Returns the default application for the specified association type and level (e.g. the application that is launched by default when using ShellExecute for the association).

Returns:

  • 'ProgID' that identifies the current default association.
  • 'method failed' if the call failed.
  • 'method not available' if IApplicationAssociationRegistration is not available on the system.
AppAssocReg::QueryAppIsDefault app_name assoc_name type level
Pop $Var

Returns whether an application is the default assocation for the specified association name, type, and level.

Returns:

  • '1' if the application is the default.
  • '0' if the application is NOT the default.
  • 'method failed' if the call failed.
  • 'method not available' if IApplicationAssociationRegistration is not available on the system.
AppAssocReg::QueryAppIsDefaultAll app_name level
Pop $Var

Returns whether an application is the default for all of its associations for the specified level.

Returns:

  • '1' if the application is the default.
  • '0' if the application is NOT the default.
  • 'method failed' if the call failed.
  • 'method not available' if IApplicationAssociationRegistration is not available on the system.
AppAssocReg::SetAppAsDefault app_name assoc_name type
Pop $Var

Sets an application as the default for the specified association name and type.

Returns:

  • 'success' if the call was successful.
  • 'method failed' if the call failed.
  • 'method not available' if IApplicationAssociationRegistration is not available on the system.
AppAssocReg::SetAppAsDefaultAll app_name
Pop $Var

Sets an application as the default for all of the associations it is registered for.

Returns:

  • 'success' if the call was successful.
  • 'method failed' if the call failed.
  • 'method not available' if IApplicationAssociationRegistration is not available on the system.
AppAssocReg::ClearUserAssociations
Pop $Var

Removes all user associations for the current user (e.g. reverts to machine level associations).

Returns:

  • 'success' if the call was successful.
  • 'method failed' if the call failed.
  • 'method not available' if IApplicationAssociationRegistration is not available on the system.

Example

See Examples\AppAssocReg\Example.nsi

Links

Download

  • Current Release: 2008-12-10

AppAssocReg-0.4.zip (12 KB) (dll is approximately 5 KB)

License

© 2007 Robert Strong

This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.

Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
  2. Altered versions must be plainly marked as such, and must not be misrepresented as being the original software.
  3. This notice may not be removed or altered from any distribution.