Sign in Join
Wiki copytemporary

Inno Setup Usage: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: Inno Setup Usage

OldNewLine
1+*(Windows only)*
2+
3+Inno Setup ([home](http://www.jrsoftware.org/isinfo.php)) is a program that lets you create Windows installers for your programs. It is coded in Delphi and has Unicode support. It is one of the most often used programs to create setup files (alongside with nsis). The advantage of Inno Setup is that it supports Pascal Scripting for more advanced tasks (although the built in capabilities are already very extensive).
4+
5+Like nsis, Inno Setup uses script files (.iss) to indicate what files to install and where. While you can create these with a simple text editor, there are some IDEs for Inno Setup that provide easier editing.
6+
7+Inno Setup comes with extensive help on the syntax of the script file.
8+
9+## Features
10+
11+Features:
12+
13+- Inno supports all versions of Windows in use today -- Windows 95, 98, ME, NT4, 2000, 2003, XP, Vista, 7, 8 and 10. The latest version that can create installers for Windows versions before Windows 2000 is version 5.4. See [1](http://www.jrsoftware.org/files/is5-whatsnew.htm)
14+- It can compare file version info, replace in-use files, use shared file counting.
15+- It can register DLL/OCXs and type libraries
16+- It can install fonts.
17+- It can create shortcuts anywhere, including in the Start Menu and on the desktop.
18+- It can create registry and .INI entries
19+- It has integrated Pascal scripting engine that allows e.g. manipulation of COM/ActiveX objects (e.g. MS Word), setting firewall rules etc.
20+- It supports multilingual installs
21+- It supports passworded and encrypted installs
22+- It supports silent install and uninstall.
23+
24+## Inno Setup for Linux/macOS?
25+
26+Occassionally, on forums and mailing lists, people ask why there is no Inno Setup for macOS or Linux. However, many people agree that you should use the distribution package manager format (e.g. .rpm, .deb) for Linux and the standard macOS way (e.g. .dmg disk images with the Apple-provided tools) for that; see [[Deploying Your Application|this article for details]]. See e.g. [this forum discussion](http://www.lazarus.freepascal.org/index.php/topic,14789.msg78576.html) for an example.
27+
28+## Download
29+
30+[Download Inno Setup Quick Start Pack](http://www.jrsoftware.org/isdl.php#qsp) is the recommended download. It contains Inno Setup, some IDEs and a preprocessor.
31+
32+## Examples
33+
34+- The Lazarus setup for Windows was created with Inno Setup. This script includes PascalScript sections used to customize the installer, which may serve as inspiration for your own installers.
35+
36+- [[LazPaint]] setup was also created with it.
37+
38+Both scripts have File Association support and are listed in Default Programs to restore the file associations if needed (Windows 7).
39+
40+Below we show some example of Inno Setup usage. Please have a look at their extensive help files and web site for information on how to perform other tasks.
41+
42+### Full example
43+
44+This example is full of things: Translations, File Associations, Default Programs, Right-click with Cascade-Menu, Add to Open With list, Add to 'App Paths' (to execute application from Windows+R 'Run' window, from batch files or by code just typing the executable name (lazpaint.exe in this case).
45+
46+```reg
47+#define MyAppName "LazPaint"
48+#define MyAppOutputName "lazpaint"
49+#define MyInstallerSuffix "_setup_win32_win64"
50+#define MyAppVersion "6.4.1"
51+#define MyAppPublisher "Circular, Fabien Wang, Lainz and others"
52+#define MyAppURL "http://sourceforge.net/projects/lazpaint/"
53+#define MyAppExeName "lazpaint.exe"
54+#define ReleaseDir "release\"
55+#define BasicSubCommands "LazPaint.horizontalflip;LazPaint.verticalflip;Windows.separator;LazPaint.rotatecw;LazPaint.rotateccw;Windows.separator;LazPaint.swapredblue"
56+#define EffectsSubCommands "LazPaint.sharpen;LazPaint.smooth;LazPaint.median;LazPaint.cleartype;LazPaint.cleartypeinverse;LazPaint.emboss;LazPaint.contour;LazPaint.grayscale;LazPaint.negative;LazPaint.linearnegative;LazPaint.complementarycolor;LazPaint.normalize;LazPaint.smartzoom3"
57+
58+[Setup]
59+AppId="; Filename: "{#MyAppURL}"
60+Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
61+Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Comment: "LazPaint"; Tasks: desktopicon
62+
63+[Run]
64+Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, "&", "&&")}}"; Flags: nowait postinstall skipifsilent
65+
66+[Registry]
67+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.lzp"; ValueType: String; ValueData: "{cm:AssocFileLZP}"; Flags: uninsdeletekey
68+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.lzp\DefaultIcon"; ValueType: String; ValueData: "{app}\{#MyAppExeName},0"; Flags: uninsdeletekey
69+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.lzp\Shell\Open"; ValueName: Icon; ValueType: String; ValueData: "{app}\{#MyAppExeName}"; Flags: uninsdeletekey
70+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.lzp\Shell\Open\Command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
71+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.lzp\Shell\CascadeMenu\"; ValueType: String; ValueName: MUIVerb; ValueData: "{cm:QuickEdit}"; Flags: uninsdeletekey
72+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.lzp\Shell\CascadeMenu\"; ValueType: String; ValueName: SubCommands; ValueData: "{#BasicSubCommands}"; Flags: uninsdeletekey
73+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.lzp\Shell\CascadeMenu2\"; ValueType: String; ValueName: MUIVerb; ValueData: "{cm:QuickEffects}"; Flags: uninsdeletekey
74+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.lzp\Shell\CascadeMenu2\"; ValueType: String; ValueName: SubCommands; ValueData: "{#EffectsSubCommands}"; Flags: uninsdeletekey
75+; Windows XP compatibility
76+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.lzp\Shell\CascadeMenu\Command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
77+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.lzp\Shell\CascadeMenu2\Command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
78+
79+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.ora"; ValueType: String; ValueData: "{cm:AssocFileORA}"; Flags: uninsdeletekey
80+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.ora\DefaultIcon"; ValueType: String; ValueData: "{app}\{#MyAppExeName},0"; Flags: uninsdeletekey
81+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.ora\Shell\Open"; ValueName: Icon; ValueType: String; ValueData: "{app}\{#MyAppExeName}"; Flags: uninsdeletekey
82+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.ora\Shell\Open\Command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
83+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.ora\Shell\CascadeMenu\"; ValueType: String; ValueName: MUIVerb; ValueData: "{cm:QuickEdit}"; Flags: uninsdeletekey
84+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.ora\Shell\CascadeMenu\"; ValueType: String; ValueName: SubCommands; ValueData: "{#BasicSubCommands}"; Flags: uninsdeletekey
85+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.ora\Shell\CascadeMenu2\"; ValueType: String; ValueName: MUIVerb; ValueData: "{cm:QuickEffects}"; Flags: uninsdeletekey
86+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.ora\Shell\CascadeMenu2\"; ValueType: String; ValueName: SubCommands; ValueData: "{#EffectsSubCommands}"; Flags: uninsdeletekey
87+; Windows XP compatibility
88+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.ora\Shell\CascadeMenu\Command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
89+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.ora\Shell\CascadeMenu2\Command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
90+
91+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.bmp"; ValueType: String; ValueData: "{cm:AssocFileBMP}"; Flags: uninsdeletekey
92+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.bmp\DefaultIcon"; ValueType: String; ValueData: "{app}\{#MyAppExeName},0"; Flags: uninsdeletekey
93+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.bmp\Shell\Open"; ValueName: Icon; ValueType: String; ValueData: "{app}\{#MyAppExeName}"; Flags: uninsdeletekey
94+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.bmp\Shell\Open\Command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
95+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.bmp\Shell\CascadeMenu\"; ValueType: String; ValueName: MUIVerb; ValueData: "{cm:QuickEdit}"; Flags: uninsdeletekey
96+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.bmp\Shell\CascadeMenu\"; ValueType: String; ValueName: SubCommands; ValueData: "{#BasicSubCommands}"; Flags: uninsdeletekey
97+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.bmp\Shell\CascadeMenu2\"; ValueType: String; ValueName: MUIVerb; ValueData: "{cm:QuickEffects}"; Flags: uninsdeletekey
98+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.bmp\Shell\CascadeMenu2\"; ValueType: String; ValueName: SubCommands; ValueData: "{#EffectsSubCommands}"; Flags: uninsdeletekey
99+; Windows XP compatibility
100+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.bmp\Shell\CascadeMenu\Command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
101+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.bmp\Shell\CascadeMenu2\Command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
102+
103+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.png"; ValueType: String; ValueData: "{cm:AssocFilePNG}"; Flags: uninsdeletekey
104+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.png\DefaultIcon"; ValueType: String; ValueData: "{app}\{#MyAppExeName},0"; Flags: uninsdeletekey
105+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.png\Shell\Open"; ValueName: Icon; ValueType: String; ValueData: "{app}\{#MyAppExeName}"; Flags: uninsdeletekey
106+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.png\Shell\Open\Command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
107+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.png\Shell\CascadeMenu\"; ValueType: String; ValueName: MUIVerb; ValueData: "{cm:QuickEdit}"; Flags: uninsdeletekey
108+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.png\Shell\CascadeMenu\"; ValueType: String; ValueName: SubCommands; ValueData: "{#BasicSubCommands}"; Flags: uninsdeletekey
109+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.png\Shell\CascadeMenu2\"; ValueType: String; ValueName: MUIVerb; ValueData: "{cm:QuickEffects}"; Flags: uninsdeletekey
110+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.png\Shell\CascadeMenu2\"; ValueType: String; ValueName: SubCommands; ValueData: "{#EffectsSubCommands}"; Flags: uninsdeletekey
111+; Windows XP compatibility
112+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.png\Shell\CascadeMenu\Command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
113+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.png\Shell\CascadeMenu2\Command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
114+
115+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.jpg"; ValueType: String; ValueData: "{cm:AssocFileJPG}"; Flags: uninsdeletekey
116+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.jpg\DefaultIcon"; ValueType: String; ValueData: "{app}\{#MyAppExeName},0"; Flags: uninsdeletekey
117+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.jpg\Shell\Open"; ValueName: Icon; ValueType: String; ValueData: "{app}\{#MyAppExeName}"; Flags: uninsdeletekey
118+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.jpg\Shell\Open\Command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
119+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.jpg\Shell\CascadeMenu\"; ValueType: String; ValueName: MUIVerb; ValueData: "{cm:QuickEdit}"; Flags: uninsdeletekey
120+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.jpg\Shell\CascadeMenu\"; ValueType: String; ValueName: SubCommands; ValueData: "{#BasicSubCommands}"; Flags: uninsdeletekey
121+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.jpg\Shell\CascadeMenu2\"; ValueType: String; ValueName: MUIVerb; ValueData: "{cm:QuickEffects}"; Flags: uninsdeletekey
122+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.jpg\Shell\CascadeMenu2\"; ValueType: String; ValueName: SubCommands; ValueData: "{#EffectsSubCommands}"; Flags: uninsdeletekey
123+; Windows XP compatibility
124+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.jpg\Shell\CascadeMenu\Command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
125+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.jpg\Shell\CascadeMenu2\Command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
126+
127+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.pdn"; ValueType: String; ValueData: "{cm:AssocFilePDN}"; Flags: uninsdeletekey
128+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.pdn\DefaultIcon"; ValueType: String; ValueData: "{app}\{#MyAppExeName},0"; Flags: uninsdeletekey
129+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.pdn\Shell\Open"; ValueName: Icon; ValueType: String; ValueData: "{app}\{#MyAppExeName}"; Flags: uninsdeletekey
130+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.pdn\Shell\Open\Command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
131+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.pdn\Shell\CascadeMenu\"; ValueType: String; ValueName: MUIVerb; ValueData: "{cm:QuickEdit}"; Flags: uninsdeletekey
132+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.pdn\Shell\CascadeMenu\"; ValueType: String; ValueName: SubCommands; ValueData: "{#BasicSubCommands}"; Flags: uninsdeletekey
133+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.pdn\Shell\CascadeMenu2\"; ValueType: String; ValueName: MUIVerb; ValueData: "{cm:QuickEffects}"; Flags: uninsdeletekey
134+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.pdn\Shell\CascadeMenu2\"; ValueType: String; ValueName: SubCommands; ValueData: "{#EffectsSubCommands}"; Flags: uninsdeletekey
135+; Windows XP compatibility
136+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.pdn\Shell\CascadeMenu\Command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
137+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.pdn\Shell\CascadeMenu2\Command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
138+
139+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.gif"; ValueType: String; ValueData: "{cm:AssocFileGIF}"; Flags: uninsdeletekey
140+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.gif\DefaultIcon"; ValueType: String; ValueData: "{app}\{#MyAppExeName},0"; Flags: uninsdeletekey
141+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.gif\Shell\Open"; ValueName: Icon; ValueType: String; ValueData: "{app}\{#MyAppExeName}"; Flags: uninsdeletekey
142+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.gif\Shell\Open\Command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
143+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.gif\Shell\CascadeMenu\"; ValueType: String; ValueName: MUIVerb; ValueData: "{cm:QuickEdit}"; Flags: uninsdeletekey
144+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.gif\Shell\CascadeMenu\"; ValueType: String; ValueName: SubCommands; ValueData: "{#BasicSubCommands}"; Flags: uninsdeletekey
145+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.gif\Shell\CascadeMenu2\"; ValueType: String; ValueName: MUIVerb; ValueData: "{cm:QuickEffects}"; Flags: uninsdeletekey
146+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.gif\Shell\CascadeMenu2\"; ValueType: String; ValueName: SubCommands; ValueData: "{#EffectsSubCommands}"; Flags: uninsdeletekey
147+; Windows XP compatibility
148+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.gif\Shell\CascadeMenu\Command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
149+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.gif\Shell\CascadeMenu2\Command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
150+
151+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.ico"; ValueType: String; ValueData: "{cm:AssocFileICO}"; Flags: uninsdeletekey
152+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.ico\DefaultIcon"; ValueType: String; ValueData: "{app}\{#MyAppExeName},0"; Flags: uninsdeletekey
153+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.ico\Shell\Open"; ValueName: Icon; ValueType: String; ValueData: "{app}\{#MyAppExeName}"; Flags: uninsdeletekey
154+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.ico\Shell\Open\Command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
155+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.ico\Shell\CascadeMenu\"; ValueType: String; ValueName: MUIVerb; ValueData: "{cm:QuickEdit}"; Flags: uninsdeletekey
156+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.ico\Shell\CascadeMenu\"; ValueType: String; ValueName: SubCommands; ValueData: {#BasicSubCommands}; Flags: uninsdeletekey
157+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.ico\Shell\CascadeMenu2\"; ValueType: String; ValueName: MUIVerb; ValueData: "{cm:QuickEffects}"; Flags: uninsdeletekey
158+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.ico\Shell\CascadeMenu2\"; ValueType: String; ValueName: SubCommands; ValueData: "{#EffectsSubCommands}"; Flags: uninsdeletekey
159+; Windows XP compatibility
160+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.ico\Shell\CascadeMenu\Command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
161+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.ico\Shell\CascadeMenu2\Command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
162+
163+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.pcx"; ValueType: String; ValueData: "{cm:AssocFilePCX}"; Flags: uninsdeletekey
164+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.pcx\DefaultIcon"; ValueType: String; ValueData: "{app}\{#MyAppExeName},0"; Flags: uninsdeletekey
165+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.pcx\Shell\Open"; ValueName: Icon; ValueType: String; ValueData: "{app}\{#MyAppExeName}"; Flags: uninsdeletekey
166+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.pcx\Shell\Open\Command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
167+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.pcx\Shell\CascadeMenu\"; ValueType: String; ValueName: MUIVerb; ValueData: "{cm:QuickEdit}"; Flags: uninsdeletekey
168+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.pcx\Shell\CascadeMenu\"; ValueType: String; ValueName: SubCommands; ValueData: {#BasicSubCommands}; Flags: uninsdeletekey
169+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.pcx\Shell\CascadeMenu2\"; ValueType: String; ValueName: MUIVerb; ValueData: "{cm:QuickEffects}"; Flags: uninsdeletekey
170+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.pcx\Shell\CascadeMenu2\"; ValueType: String; ValueName: SubCommands; ValueData: "{#EffectsSubCommands}"; Flags: uninsdeletekey
171+; Windows XP compatibility
172+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.pcx\Shell\CascadeMenu\Command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
173+;Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.pcx\Shell\CascadeMenu2\Command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
174+
175+; BasicSubCommands methods
176+; Open
177+;Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.open"; ValueName: MUIVerb; ValueType: String; ValueData: {cm:Open}; Flags: uninsdeletekey
178+;Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.open\command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
179+; HorizontalFlip
180+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.horizontalflip"; ValueName: MUIVerb; ValueType: String; ValueData: {cm:HorizontalFlip}; Flags: uninsdeletekey
181+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.horizontalflip\command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"" ""/HorizontalFlip"" ""%1"""; Flags: uninsdeletekey
182+; VerticalFlip
183+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.verticalflip"; ValueName: MUIVerb; ValueType: String; ValueData: {cm:VerticalFlip}; Flags: uninsdeletekey
184+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.verticalflip\command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"" ""/VerticalFlip"" ""%1"""; Flags: uninsdeletekey
185+; SwapRedBlue
186+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.swapredblue"; ValueName: MUIVerb; ValueType: String; ValueData: {cm:SwapRedBlue}; Flags: uninsdeletekey
187+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.swapredblue\command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"" ""/SwapRedBlue"" ""%1"""; Flags: uninsdeletekey
188+; RotateCW
189+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.rotatecw"; ValueName: MUIVerb; ValueType: String; ValueData: {cm:RotateCW}; Flags: uninsdeletekey
190+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.rotatecw\command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"" ""/RotateCW"" ""%1"""; Flags: uninsdeletekey
191+; RotateCCW
192+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.rotateccw"; ValueName: MUIVerb; ValueType: String; ValueData: {cm:RotateCCW}; Flags: uninsdeletekey
193+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.rotateccw\command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"" ""/RotateCCW"" ""%1"""; Flags: uninsdeletekey
194+
195+; EffectsSubCommands methods
196+; Sharpen
197+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.sharpen"; ValueName: MUIVerb; ValueType: String; ValueData: {cm:Sharpen}; Flags: uninsdeletekey
198+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.sharpen\command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"" ""/Sharpen"" ""%1"""; Flags: uninsdeletekey
199+; Smooth
200+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.smooth"; ValueName: MUIVerb; ValueType: String; ValueData: {cm:Smooth}; Flags: uninsdeletekey
201+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.smooth\command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"" ""/Smooth"" ""%1"""; Flags: uninsdeletekey
202+; Median
203+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.median"; ValueName: MUIVerb; ValueType: String; ValueData: {cm:Median}; Flags: uninsdeletekey
204+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.median\command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"" ""/Median"" ""%1"""; Flags: uninsdeletekey
205+; ClearType
206+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.cleartype"; ValueName: MUIVerb; ValueType: String; ValueData: {cm:ClearType}; Flags: uninsdeletekey
207+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.cleartype\command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"" ""/ClearType"" ""%1"""; Flags: uninsdeletekey
208+; ClearTypeInverse
209+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.cleartypeinverse"; ValueName: MUIVerb; ValueType: String; ValueData: {cm:ClearTypeInverse}; Flags: uninsdeletekey
210+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.cleartypeinverse\command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"" ""/ClearTypeInverse"" ""%1"""; Flags: uninsdeletekey
211+; Emboss
212+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.emboss"; ValueName: MUIVerb; ValueType: String; ValueData: {cm:Emboss}; Flags: uninsdeletekey
213+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.emboss\command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"" ""/Emboss"" ""%1"""; Flags: uninsdeletekey
214+; Contour
215+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.contour"; ValueName: MUIVerb; ValueType: String; ValueData: {cm:Contour}; Flags: uninsdeletekey
216+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.contour\command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"" ""/Contour"" ""%1"""; Flags: uninsdeletekey
217+; Grayscale
218+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.grayscale"; ValueName: MUIVerb; ValueType: String; ValueData: {cm:Grayscale}; Flags: uninsdeletekey
219+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.grayscale\command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"" ""/Grayscale"" ""%1"""; Flags: uninsdeletekey
220+; Negative
221+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.negative"; ValueName: MUIVerb; ValueType: String; ValueData: {cm:Negative}; Flags: uninsdeletekey
222+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.negative\command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"" ""/Negative"" ""%1"""; Flags: uninsdeletekey
223+; LinearNegative
224+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.linearnegative"; ValueName: MUIVerb; ValueType: String; ValueData: {cm:LinearNegative}; Flags: uninsdeletekey
225+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.linearnegative\command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"" ""/LinearNegative"" ""%1"""; Flags: uninsdeletekey
226+; ComplementaryColor
227+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.complementarycolor"; ValueName: MUIVerb; ValueType: String; ValueData: {cm:ComplementaryColor}; Flags: uninsdeletekey
228+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.complementarycolor\command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"" ""/ComplementaryColor"" ""%1"""; Flags: uninsdeletekey
229+; Normalize
230+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.normalize"; ValueName: MUIVerb; ValueType: String; ValueData: {cm:Normalize}; Flags: uninsdeletekey
231+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.normalize\command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"" ""/Normalize"" ""%1"""; Flags: uninsdeletekey
232+; SmartZoom3
233+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.smartzoom3"; ValueName: MUIVerb; ValueType: String; ValueData: {cm:SmartZoom3}; Flags: uninsdeletekey
234+Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\LazPaint.smartzoom3\command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"" ""/SmartZoom3"" ""%1"""; Flags: uninsdeletekey
235+
236+; Real file association
237+Root: HKLM; Subkey: "Software\Classes\.bmp"; ValueType: String; ValueData: "LazPaint.AssocFile.bmp"; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: assoc_bmp
238+Root: HKLM; Subkey: "Software\Classes\.lzp"; ValueType: String; ValueData: "LazPaint.AssocFile.lzp"; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: assoc_lzp
239+Root: HKLM; Subkey: "Software\Classes\.ora"; ValueType: String; ValueData: "LazPaint.AssocFile.ora"; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: assoc_ora
240+Root: HKLM; Subkey: "Software\Classes\.png"; ValueType: String; ValueData: "LazPaint.AssocFile.png"; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: assoc_png
241+Root: HKLM; Subkey: "Software\Classes\.jpg"; ValueType: String; ValueData: "LazPaint.AssocFile.jpg"; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: assoc_jpg
242+Root: HKLM; Subkey: "Software\Classes\.pdn"; ValueType: String; ValueData: "LazPaint.AssocFile.pdn"; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: assoc_pdn
243+Root: HKLM; Subkey: "Software\Classes\.gif"; ValueType: String; ValueData: "LazPaint.AssocFile.gif"; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: assoc_gif
244+Root: HKLM; Subkey: "Software\Classes\.ico"; ValueType: String; ValueData: "LazPaint.AssocFile.ico"; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: assoc_ico
245+Root: HKLM; Subkey: "Software\Classes\.pcx"; ValueType: String; ValueData: "LazPaint.AssocFile.pcx"; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: assoc_pcx
246+
247+; Control panel
248+Root: HKLM; Subkey: "Software\LazPaint"; Flags: uninsdeletekey
249+Root: HKLM; Subkey: "Software\LazPaint\Capabilities"; ValueType: String; ValueName: "ApplicationName"; ValueData: "LazPaint"; Flags: uninsdeletekey
250+Root: HKLM; Subkey: "Software\LazPaint\Capabilities"; ValueType: String; ValueName: "ApplicationDescription"; ValueData: {cm:LazPaintDescription}; Flags: uninsdeletekey
251+Root: HKLM; Subkey: "Software\LazPaint\Capabilities\FileAssociations"; ValueName: ".lzp"; ValueType: String; ValueData: "LazPaint.AssocFile.lzp"; Flags: uninsdeletekey
252+Root: HKLM; Subkey: "Software\LazPaint\Capabilities\FileAssociations"; ValueName: ".ora"; ValueType: String; ValueData: "LazPaint.AssocFile.ora"; Flags: uninsdeletekey
253+Root: HKLM; Subkey: "Software\LazPaint\Capabilities\FileAssociations"; ValueName: ".bmp"; ValueType: String; ValueData: "LazPaint.AssocFile.bmp"; Flags: uninsdeletekey
254+Root: HKLM; Subkey: "Software\LazPaint\Capabilities\FileAssociations"; ValueName: ".png"; ValueType: String; ValueData: "LazPaint.AssocFile.png"; Flags: uninsdeletekey
255+Root: HKLM; Subkey: "Software\LazPaint\Capabilities\FileAssociations"; ValueName: ".jpg"; ValueType: String; ValueData: "LazPaint.AssocFile.jpg"; Flags: uninsdeletekey
256+Root: HKLM; Subkey: "Software\LazPaint\Capabilities\FileAssociations"; ValueName: ".pdn"; ValueType: String; ValueData: "LazPaint.AssocFile.pdn"; Flags: uninsdeletekey
257+Root: HKLM; Subkey: "Software\LazPaint\Capabilities\FileAssociations"; ValueName: ".gif"; ValueType: String; ValueData: "LazPaint.AssocFile.gif"; Flags: uninsdeletekey
258+Root: HKLM; Subkey: "Software\LazPaint\Capabilities\FileAssociations"; ValueName: ".ico"; ValueType: String; ValueData: "LazPaint.AssocFile.ico"; Flags: uninsdeletekey
259+Root: HKLM; Subkey: "Software\LazPaint\Capabilities\FileAssociations"; ValueName: ".pcx"; ValueType: String; ValueData: "LazPaint.AssocFile.pcx"; Flags: uninsdeletekey
260+
261+Root: HKLM; Subkey: "Software\RegisteredApplications"; ValueType: String; ValueName: "LazPaint"; ValueData: "Software\LazPaint\Capabilities"; Flags: uninsdeletevalue uninsdeletekeyifempty
262+
263+; Open With...
264+Root: HKLM; Subkey: "Software\Classes\Applications\lazpaint.exe\shell\open\command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
265+
266+; App Paths (ShellExecuteEx)
267+Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\lazpaint.exe"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"""; Flags: uninsdeletekey
268+Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\lazpaint.exe"; ValueType: String; ValueName: Path; ValueData: """{app}"""; Flags: uninsdeletekey
269+```
270+
271+## File Association
272+
273+The file association code is in the \[Registry\] section of the script.
274+
275+The first thing we need is each type of association. In the example below, the type is for .bmp files. You can see the first line is for the description of the association 'Bitmap'. The second line is the icon for .bmp files in the explorer, the third is the icon for the right clic menu on .bmp files in the explorer, the last is the parameter to open the file.
276+
277+```reg
278+[Registry]
279+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.bmp"; ValueType: String; ValueData: "Bitmap"; Flags: uninsdeletekey
280+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.bmp\DefaultIcon"; ValueType: String; ValueData: "{app}\{#MyAppExeName},0"; Flags: uninsdeletekey
281+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.bmp\Shell\Open"; ValueName: Icon; ValueType: String; ValueData: "{app}\{#MyAppExeName}"; Flags: uninsdeletekey
282+Root: HKLM; Subkey: "Software\Classes\LazPaint.AssocFile.bmp\Shell\Open\Command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
283+```
284+
285+That code doesn't associate anything, the following code is to associate our type 'LazPaint.AssocFile.bmp' with '.bmp'. It is only executed when the task assoc_bmp is selected. Read about tasks in the Inno Setup help.
286+
287+```reg
288+Root: HKLM; Subkey: "Software\Classes\.bmp"; ValueType: String; ValueData: "LazPaint.AssocFile.bmp"; Flags: uninsdeletevalue uninsdeletekeyifempty; Tasks: assoc_bmp
289+```
290+
291+That's all. Now we have associated .bmp with our program (LazPaint in the example).
292+
293+If you want to setup file associations from your program instead of a setup program use the [[FileAssociation]] component instead.
294+
295+## Default Programs
296+
297+"Default Programs" is used to list the applications that have file association support. Values are the name of the program, a short description and each one of the extensions for which the program has support.
298+
299+```reg
300+Root: HKLM; Subkey: "Software\LazPaint"; Flags: uninsdeletekey
301+Root: HKLM; Subkey: "Software\LazPaint\Capabilities"; ValueType: String; ValueName: "ApplicationName"; ValueData: "LazPaint"; Flags: uninsdeletekey
302+Root: HKLM; Subkey: "Software\LazPaint\Capabilities"; ValueType: String; ValueName: "ApplicationDescription"; ValueData: "A short description..."; Flags: uninsdeletekey
303+Root: HKLM; Subkey: "Software\LazPaint\Capabilities\FileAssociations"; ValueName: ".bmp"; ValueType: String; ValueData: "LazPaint.AssocFile.bmp"; Flags: uninsdeletekey
304+```
305+
306+Finally we need to add the program to the 'Registered Applications':
307+
308+```reg
309+Root: HKLM; Subkey: "Software\RegisteredApplications"; ValueType: String; ValueName: "LazPaint"; ValueData: "Software\LazPaint\Capabilities"; Flags: uninsdeletevalue uninsdeletekeyifempty
310+```
311+
312+---
313+*From the Free Pascal wiki, page "Inno Setup Usage", as it stood on 2020-02-17 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
314+Category: Deployment
315+Category: Pascal Script
316+Category: PascalScript
317+Category: Tutorials
318+Category: Windows

Back to history