-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathisetup.xml
5692 lines (4766 loc) · 344 KB
/
isetup.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" ?>
<!DOCTYPE ishelp SYSTEM "isetup.dtd">
<!--
Inno Setup
Copyright (C) 1997-2022 Jordan Russell
Portions by Martijn Laan
For conditions of distribution and use, see LICENSE.TXT.
-->
<ishelp version="1">
<!-- Table of contents -->
<contents>
<contentstopic title="What is Inno Setup?" topic="whatisinnosetup" />
<contentstopic title="Creating Installations" topic="creatinginstallations" />
<contentstopic title="Script Format Overview" topic="scriptformatoverview" />
<contentstopic title="Parameters in Sections" topic="params" />
<contentstopic title="Constants" topic="consts" />
<contentstopic title="Common Parameters" topic="commonparams" />
<contentstopic title="Components and Tasks Parameters" topic="componentstasksparams" />
<contentsheading title="Setup Script Sections">
<contentstopic title="[Setup] section" topic="setupsection" />
<contentsheading title="[Setup] section directives" />
<contentstopic title="[Types] section" topic="typessection" />
<contentstopic title="[Components] section" topic="componentssection" />
<contentstopic title="[Tasks] section" topic="taskssection" />
<contentstopic title="[Dirs] section" topic="dirssection" />
<contentstopic title="[Files] section" topic="filessection" />
<contentstopic title="[Icons] section" topic="iconssection" />
<contentstopic title="[INI] section" topic="inisection" />
<contentstopic title="[InstallDelete] section" topic="installdeletesection" />
<contentstopic title="[Languages] section" topic="languagessection" />
<contentstopic title="[Messages] section" topic="messagessection" />
<contentstopic title="[CustomMessages] section" topic="custommessagessection" />
<contentstopic title="[LangOptions] section" topic="langoptionssection" />
<contentstopic title="[Registry] section" topic="registrysection" />
<contentstopic title="[Run] section" topic="runsection" />
<contentstopic title="[UninstallDelete] section" topic="uninstalldeletesection" />
<contentstopic title="[UninstallRun] section" topic="runsection" />
</contentsheading>
<contentsheading title="Pascal Scripting">
<contentstopic title="Introduction" topic="scriptintro" />
<contentstopic title="Creating the [Code] Section" topic="scriptcreating" />
<contentstopic title="Event Functions" topic="scriptevents" />
<contentstopic title="Scripted Constants" topic="scriptconstants" />
<contentstopic title="Check Parameters" topic="scriptcheck" />
<contentstopic title="BeforeInstall and AfterInstall Parameters" topic="scriptinstall" />
<contentstopic title="Uninstall Code" topic="scriptuninstall" />
<contentstopic title="Examples" topic="scriptexamples" />
<contentstopic title="Support Functions Reference" topic="scriptfunctions" />
<contentstopic title="Support Classes Reference" topic="scriptclasses" />
<contentstopic title="Using Custom Wizard Pages" topic="scriptpages" />
<contentstopic title="Using DLLs and .NET assemblies" topic="scriptdll" />
<contentstopic title="Using COM Automation objects" topic="scriptautomation" />
<contentstopic title="Debugging" topic="scriptdebug" />
</contentsheading>
<contentsheading title="Other Information">
<contentstopic title="Support Inno Setup" topic="donate" />
<contentstopic title="Unicode Inno Setup" topic="unicode" />
<contentstopic title="Non Administrative Install Mode" topic="admininstallmode" />
<contentstopic title="64-bit Install Mode" topic="32vs64bitinstalls" />
<contentstopic title="64-bit Installation Limitations" topic="64bitlimitations" />
<contentstopic title="Wizard Pages" topic="wizardpages" />
<contentstopic title="Installation Order" topic="installorder" />
<contentstopic title="Unsafe Files" topic="unsafefiles" />
<contentstopic title="Compiler Command Line Execution" topic="compilercmdline" />
<contentstopic title="Setup Command Line Parameters" topic="setupcmdline" />
<contentstopic title="Uninstaller Command Line Parameters" topic="uninstcmdline" />
<contentstopic title="Setup Exit Codes" topic="setupexitcodes" />
<contentstopic title="Uninstaller Exit Codes" topic="uninstexitcodes" />
<contentstopic title="Compiler IDE Keyboard Commands" topic="compformshortcuts" />
<contentstopic title="Miscellaneous Notes" topic="technotes" />
<contentstopic title="Example Scripts" topic="examples" />
<contentstopic title="Frequently Asked Questions" topic="faq" />
<contentstopic title="Contributors" topic="credits" />
</contentsheading>
</contents>
<!-- Topics -->
<topic name="whatisinnosetup" title="What is Inno Setup?">
<keyword value="What is Inno Setup?" />
<body>
<p>
<b>Inno Setup version 6.2.1</b><br/>
<b>Copyright © 1997-2022 Jordan Russell. All rights reserved.</b><br/>
<b>Portions Copyright © 2000-2022 Martijn Laan. All rights reserved.</b><br/>
<extlink href="https://jrsoftware.org/">Inno Setup home page</extlink>
</p>
<p><br/>
Inno Setup is a <i>free</i> installer for Windows programs by Jordan Russell and Martijn Laan. First introduced in 1997, Inno Setup today rivals and even surpasses many commercial installers in feature set and stability.</p>
<p><br/>
<b><i>Key features:</i></b></p>
<ul>
<li>Support for every Windows release since 2006, including: Windows 11, Windows 10, Windows 10 on ARM, Windows Server 2019, Windows Server 2016, Windows 8.1, Windows 8, Windows Server 2012, Windows 7, Windows Server 2008 R2, Windows Server 2008, and Windows Vista. (No service packs are required.)</li>
<li>Extensive support for installation of <link topic="32vs64bitinstalls">64-bit</link> applications on the 64-bit editions of Windows. The x64, ARM64 and Itanium architectures are all supported.</li>
<li>Extensive support for both administrative and <link topic="admininstallmode">non administrative installations</link> installations.</li>
<li>Supports creation of a single EXE to install your program for easy online distribution. <link topic="setup_diskspanning">Disk spanning</link> is also supported.</li>
<li>Resizable standard Windows wizard interface.</li>
<li>Customizable setup <link topic="typessection">types</link>, e.g. Full, Minimal, Custom.</li>
<li>Complete <link topic="setup_uninstallable">uninstall</link> capabilities.</li>
<li>Installation of <link topic="filessection">files</link>:<br/>
Includes integrated support for "deflate", bzip2, and 7-Zip LZMA/LZMA2 file <link topic="setup_compression">compression</link>. The installer has the ability to compare file version info, replace in-use files, use shared file counting, register DLL/OCX's and type libraries, and install fonts.</li>
<li>Creation of <link topic="iconssection">shortcuts</link> anywhere, including in the Start Menu and on the desktop.</li>
<li>Creation of <link topic="registrysection">registry</link> and <link topic="inisection">.INI</link> entries.</li>
<li><link topic="runsection">Running</link> other programs before, during or after install.</li>
<li>Support for <link topic="languagessection">multilingual</link> installs, including right-to-left language support.</li>
<li>Support for <link topic="setup_password">password-protected</link> and <link topic="setup_encryption">encrypted</link> installs.</li>
<li>Support for <link topic="setup_signtool">digitally signed</link> installs and uninstalls, including dual signing (SHA1 & SHA256).</li>
<li><link topic="setupcmdline" anchor="SILENT">Silent install</link> and <link topic="uninstcmdline" anchor="SILENT">silent uninstall</link>.</li>
<li><link topic="unicode">Unicode installs</link>.</li>
<li>Integrated preprocessor option for advanced compile-time customization.</li>
<li>Integrated <link topic="scriptintro">Pascal scripting</link> engine option for advanced run-time install and uninstall customization.</li>
<li>Full source code is available from <extlink href="https://github.com/jrsoftware/issrc">GitHub</extlink>.</li>
<li>Tiny footprint: only about 1.5 mB overhead with all features included.</li>
<li>All features are fully documented.</li>
<li>Used by <extlink href="https://code.visualstudio.com">Microsoft Visual Studio Code</extlink> and <extlink href="https://www.embarcadero.com/products/delphi">Embarcardero Delphi</extlink>.</li>
</ul>
<p><br/>
<b><i>Is it really free of charge, even for commercial use?</i></b></p>
<p>Yes, it may be used completely free of charge, even when deploying commercial applications.</p>
<p>(Note: "Completely free of charge" must not be confused with "completely free". Inno Setup is copyrighted software, <i>not</i> public domain software. There are some restrictions on distribution and use; see the LICENSE.TXT file for details.)</p>
</body>
</topic>
<topic name="creatinginstallations" title="Creating Installations">
<keyword value="Creating Installations" />
<body>
<p>Installations are created by means of <i>scripts</i>, which are ASCII or Unicode (UTF-8 encoded with a BOM) text files with a format somewhat similar to .INI files. (No, it's not as complicated as you might be thinking!).</p>
<p>Scripts have an ".iss" (meaning Inno Setup Script) extension. The script controls every aspect of the installation. It specifies which files are to be installed and where, what shortcuts are to be created and what they are to be named, and so on.</p>
<p>Script files are usually edited from inside the "Inno Setup Compiler" Compiler IDE program. After you have finishing writing the script, the next and final step is select "Compile" in the Compiler IDE. What this does is create a complete, ready-to-run Setup program based on your script. By default, this is created in a directory named "Output" under the directory containing the script.</p>
<p>To give you an idea of how this all works, start the Compiler IDE, click <i>File | Open</i>, and select one of the script files in the Examples subdirectory located under the Inno Setup directory. (It may be helpful to use the sample scripts as a template for your own scripts.)</p>
<p><br/><b>See also:</b><br/>
<link topic="scriptformatoverview">Script Format Overview</link>
</p>
</body>
</topic>
<topic name="scriptformatoverview" title="Script Format Overview">
<keyword value="Script Format Overview" />
<keyword value="#include" anchor="include" />
<keyword value="include" anchor="include" />
<keyword value="#preproc" anchor="preproc" />
<keyword value="preproc" anchor="preproc" />
<keyword value="Comments" />
<body>
<p>Inno Setup Scripts are arranged into <i>sections</i>. Each section controls a different aspect of the installation. A section is started by specifying the name of the section enclosed in square brackets <tt>[]</tt>. Inside each section is any number of <i>entries</i>.</p>
<p>There are two different main types of sections: those such as [Setup] whose entries contain directive names and values (in the form <tt>Directive=Value</tt>), and those such as [Files] whose entries are divided into <link topic="params">parameters</link>.</p>
<p>Here is an example:</p>
<precode>
[Setup]
AppName=My Program
[Files]
Source: "MYPROG.EXE"; DestDir: "{app}"
</precode>
<p>Note that it is legal to specify multiple sections of the same name.</p>
<p>You can put "comments" in the script (which are ignored by the compiler) by placing a semicolon at the beginning of a line. For example:</p>
<precode>
; This is a comment. I could put reminders to myself here...
</precode>
<p>A C-like <a name="include"><tt>#include</tt></a> directive is supported, which pulls in lines from a separate file into the script at the position of the <tt>#include</tt> directive. The syntax is:</p>
<precode>
#include "filename.txt"
</precode>
<p>If the filename is not fully qualified, the compiler will look for it in the same directory as the file containing the <tt>#include</tt> directive. The filename may be prefixed by "compiler:", in which case it looks for the file in the compiler directory.</p>
<p>A <a name="preproc"><tt>#preproc</tt></a> directive is supported, which specifies whether to use the built-in preprocessor which only supports the above <tt>#include</tt> directive or to use Inno Setup Preprocessor (ISPP) which supports many more directives. The syntax is:</p>
<precode>
#preproc builtin
#preproc ispp
</precode>
<p>By default, scripts use ISPP if available, and .isl files use the built-in preprocessor.</p>
<p>If an Unicode file is used, it must be UTF-8 encoded with a BOM.</p>
<p><br/><b>See also:</b><br/>
<link topic="params">Parameters in Sections</link><br/>
<link topic="consts">Constants</link><br/>
<link topic="commonparams">Common Parameters</link><br/>
<link topic="componentstasksparams">Components and Tasks Parameters</link><br/>
<link topic="setupsection">[Setup] section</link><br/>
<link topic="typessection">[Types] section</link><br/>
<link topic="componentssection">[Components] section</link><br/>
<link topic="taskssection">[Tasks] section</link><br/>
<link topic="dirssection">[Dirs] section</link><br/>
<link topic="filessection">[Files] section</link><br/>
<link topic="iconssection">[Icons] section</link><br/>
<link topic="inisection">[INI] section</link><br/>
<link topic="installdeletesection">[InstallDelete] section</link><br/>
<link topic="languagessection">[Languages] section</link><br/>
<link topic="messagessection">[Messages] section</link><br/>
<link topic="custommessagessection">[CustomMessages] section</link><br/>
<link topic="langoptionssection">[LangOptions] section</link><br/>
<link topic="registrysection">[Registry] section</link><br/>
<link topic="runsection">[Run] section</link><br/>
<link topic="uninstalldeletesection">[UninstallDelete] section</link><br/>
<link topic="runsection">[UninstallRun] section</link><br/>
<link topic="scriptintro">Pascal Scripting: Introduction</link>
<link topic="compformshortcuts">Compiler IDE Keyboard Commands</link>
</p>
</body>
</topic>
<topic name="params" title="Parameters in Sections">
<keyword value="Parameters in Sections" />
<body>
<p>All of the sections in a script, with the exception of <tt>[Setup]</tt>, <tt>[Messages]</tt>, <tt>[CustomMessages]</tt>, <tt>[LangOptions]</tt>, and <tt>[Code]</tt>, contain lines separated into <i>parameters</i>. The following is an example of a <tt>[Files]</tt> section:</p>
<precode>
[Files]
Source: "MYPROG.EXE"; DestDir: "{app}"
Source: "MYPROG.CHM"; DestDir: "{app}"
Source: "README.TXT"; DestDir: "{app}"; Flags: isreadme
</precode>
<p>Each parameter consists of a name, followed by a colon, and then a value. Unless otherwise noted, parameters are optional in that they assume a default value if they are not specified. Multiple parameters on a line are separated by semicolons, and can be listed in any order.</p>
<p>The value of a parameter is traditionally surrounded in double quotes (<tt>"</tt>) when it contains a user-defined string, such as a filename. Using quotes is not required, though, but by doing so it makes it possible to embed leading and trailing spaces in the value, as well as semicolons and double-quote characters.</p>
<p>To embed a double-quote character inside a quoted value, use two consecutive double-quote characters. For example:</p>
<precode>
"This "" contains "" embedded "" quotes"
</precode>
<p>The compiler would see that as:</p>
<precode>
This " contains " embedded " quotes
</precode>
<p>If you want the value of a parameter to be a single double-quote character, use four double-quote characters: <tt>""""</tt>. The outer two are needed to surround the string in quotes; the inner two are used to embed a single double-quote character.</p>
</body>
</topic>
<topic name="consts" title="Constants">
<keyword value="Constants" />
<keyword value="{\}" anchor="bs" />
<keyword value="{%NAME}" anchor="name" />
<keyword value="{app}" anchor="app" />
<keyword value="{autoappdata}" anchor="autoappdata" />
<keyword value="{autocf}" anchor="autocf" />
<keyword value="{autocf32}" anchor="autocf32" />
<keyword value="{autocf64}" anchor="autocf64" />
<keyword value="{autodesktop}" anchor="autodesktop" />
<keyword value="{autodocs}" anchor="autodocs" />
<keyword value="{autofonts}" anchor="autofonts" />
<keyword value="{autopf}" anchor="autopf" />
<keyword value="{autopf32}" anchor="autopf32" />
<keyword value="{autopf64}" anchor="autopf64" />
<keyword value="{autoprograms}" anchor="autoprograms" />
<keyword value="{autostartmenu}" anchor="autostartmenu" />
<keyword value="{autostartup}" anchor="autostartup" />
<keyword value="{autotemplates}" anchor="autotemplates" />
<keyword value="{cf}" anchor="cf" />
<keyword value="{commoncf32}" anchor="commoncf32" />
<keyword value="{cf32}" anchor="cf32" />
<keyword value="{commoncf64}" anchor="commoncf64" />
<keyword value="{cf64}" anchor="cf64" />
<keyword value="{cm:...}" anchor="cm" />
<keyword value="{cmd}" anchor="cmd" />
<keyword value="{commonappdata}" anchor="commonappdata" />
<keyword value="{commondesktop}" anchor="commondesktop" />
<keyword value="{commondocs}" anchor="commondocs" />
<keyword value="{commonprograms}" anchor="commonprograms" />
<keyword value="{commonstartmenu}" anchor="commonstartmenu" />
<keyword value="{commonstartup}" anchor="commonstartup" />
<keyword value="{commontemplates}" anchor="commontemplates" />
<keyword value="{computername}" anchor="computername" />
<keyword value="{dao}" anchor="dao" />
<keyword value="{dotnet11}" anchor="dotnet11" />
<keyword value="{dotnet20}" anchor="dotnet20" />
<keyword value="{dotnet2032}" anchor="dotnet2032" />
<keyword value="{dotnet2064}" anchor="dotnet2064" />
<keyword value="{dotnet40}" anchor="dotnet40" />
<keyword value=".NET install root" anchor="dotnet40" />
<keyword value="{dotnet4032}" anchor="dotnet4032" />
<keyword value="{dotnet4064}" anchor="dotnet4064" />
<keyword value="{drive:...}" anchor="drive" />
<keyword value="{commonfonts}" anchor="commonfonts" />
<keyword value="{fonts}" anchor="fonts" />
<keyword value="{group}" anchor="group" />
<keyword value="{groupname}" anchor="groupname" />
<keyword value="{hwnd}" anchor="hwnd" />
<keyword value="{ini:...}" anchor="ini" />
<keyword value="{language}" anchor="language" />
<keyword value="{localappdata}" anchor="localappdata" />
<keyword value="{log}" anchor="log" />
<keyword value="{param:...}" anchor="param" />
<keyword value="{commonpf}" anchor="commonpf" />
<keyword value="{pf}" anchor="pf" />
<keyword value="{commonpf32}" anchor="commonpf32" />
<keyword value="{pf32}" anchor="pf32" />
<keyword value="{commonpf64}" anchor="commonpf64" />
<keyword value="{pf64}" anchor="pf64" />
<keyword value="{reg:...}" anchor="reg" />
<keyword value="{sd}" anchor="sd" />
<keyword value="{src}" anchor="src" />
<keyword value="{srcexe}" anchor="srcexe" />
<keyword value="{sys}" anchor="sys" />
<keyword value="{sysnative}" anchor="sysnative" />
<keyword value="{sysuserinfoname}" anchor="sysuserinfoname" />
<keyword value="{sysuserinfoorg}" anchor="sysuserinfoorg" />
<keyword value="{syswow64}" anchor="syswow64" />
<keyword value="{tmp}" anchor="tmp" />
<keyword value="{uninstallexe}" anchor="uninstallexe" />
<keyword value="{userappdata}" anchor="userappdata" />
<keyword value="{usercf}" anchor="usercf" />
<keyword value="{userdesktop}" anchor="userdesktop" />
<keyword value="{userdocs}" anchor="userdocs" />
<keyword value="{userfavorites}" anchor="userfavorites" />
<keyword value="{userfonts}" anchor="userfonts" />
<keyword value="{userinfoname}" anchor="userinfoname" />
<keyword value="{userinfoorg}" anchor="userinfoorg" />
<keyword value="{userinfoserial}" anchor="userinfoserial" />
<keyword value="{username}" anchor="username" />
<keyword value="{userpf}" anchor="userpf" />
<keyword value="{userprograms}" anchor="userprograms" />
<keyword value="{usersavedgames}" anchor="usersavedgames" />
<keyword value="{usersendto}" anchor="usersendto" />
<keyword value="{sendto}" anchor="usersendto" />
<keyword value="{userstartmenu}" anchor="userstartmenu" />
<keyword value="{userstartup}" anchor="userstartup" />
<keyword value="{usertemplates}" anchor="usertemplates" />
<keyword value="{win}" anchor="win" />
<keyword value="{wizardhwnd}" anchor="wizardhwnd" />
<body>
<p>The majority of the script entries can have <i>constants</i> embedded in them. These are predefined strings enclosed in brace characters <tt>{ }</tt>. Setup or Uninstall translates the constants to their literal values, depending on the user's choices and system configuration. For example, <tt>{win}</tt>, as described below, would translate to "C:\WINDOWS" on most systems.</p>
<p>A "{" character is treated as the start of the constant. If you want to use that actual character in a place where constants are supported, you must use two consecutive "{" characters. (You do not need to double "}" characters.)</p>
<p>When a backslash immediately follows a constant, Setup or Uninstall will automatically remove the backslash if the value of the constant ends in a backslash already. Thus, if the value of a particular constant is "C:\", <tt>{<i>constantname</i>}\file</tt> will translate to "C:\file", not "C:\\file". If you want to prevent this from happening, enclose the backslash in <tt>{ }</tt> characters, e.g. <tt>{app}{\}</tt>.</p>
<p>The following is the list of supported constants.</p>
<heading>Directory Constants</heading>
<dl>
<dt><b><a name="app">{app}</a></b></dt>
<dd>
<p>The application directory, which the user selects on the <i>Select Destination Location</i> page of the wizard.<br/>
For example: If you used <tt>{app}\MYPROG.EXE</tt> on an entry and the user selected "C:\MYPROG" as the application directory, Setup will translate it to "C:\MYPROG\MYPROG.EXE".</p>
</dd>
<dt><b><a name="win">{win}</a></b></dt>
<dd>
<p>The system's Windows directory.<br/>
For example: If you used <tt>{win}\MYPROG.INI</tt> on an entry and the system's Windows directory is "C:\WINDOWS", Setup or Uninstall will translate it to "C:\WINDOWS\MYPROG.INI".</p>
</dd>
<dt><b><a name="sys">{sys}</a></b></dt>
<dd>
<p>The system's System32 directory.<br/>
For example: If you used <tt>{sys}\CTL3D32.DLL</tt> on an entry and the system's Windows System directory is "C:\WINDOWS\SYSTEM", Setup or Uninstall will translate it to "C:\WINDOWS\SYSTEM\CTL3D32.DLL".</p>
<p>On 64-bit Windows, by default, the System32 path returned by this constant maps to the directory containing 32-bit system files, just like on 32-bit Windows. (This can be overridden by enabling <link topic="32vs64bitinstalls">64-bit install mode</link>.)</p>
</dd>
<dt><b><a name="sysnative">{sysnative}</a></b></dt>
<dd>
<p>On 64-bit Windows, the directory containing 64-bit system files. On 32-bit Windows, the directory containing 32-bit system files.</p>
</dd>
<dt><b><a name="syswow64">{syswow64}</a></b></dt>
<dd>
<p>On 64-bit Windows, the system's SysWOW64 directory, typically "C:\WINDOWS\SysWOW64". This is the actual directory in which 32-bit system files reside. On 32-bit Windows, 32-bit system files do not reside in a separate SysWOW64 directory, so this constant will resolve to the same directory as <tt>{sys}</tt> if used there.</p>
<p>Do not use this constant unless you have a specific need to obtain the name of the actual directory in which 32-bit system files reside. Gratuitously using <tt>{syswow64}</tt> in places where <tt>{sys}</tt> will suffice may cause problems. (See the documentation for the <link topic="filessection">[Files]</link> section's <tt>sharedfile</tt> flag for one example.)</p>
</dd>
<dt><b><a name="src">{src}</a></b></dt>
<dd>
<p>The directory in which the Setup files are located.<br/>
For example: If you used <tt>{src}\MYPROG.EXE</tt> on an entry and the user is installing from "S:\", Setup will translate it to "S:\MYPROG.EXE".</p>
</dd>
<dt><b><a name="sd">{sd}</a></b></dt>
<dd>
<p>System Drive. The drive Windows is installed on, typically "C:". This directory constant is equivalent to the <i>SystemDrive</i> environment variable.</p>
</dd>
<dt><b><a name="commonpf">{commonpf}</a></b></dt>
<dd>
<p>Program Files. The path of the system's Program Files directory. <tt>{commonpf}</tt> is equivalent to <tt>{commonpf32}</tt> unless the install is running in <link topic="32vs64bitinstalls">64-bit install mode</link>, in which case it is equivalent to <tt>{commonpf64}</tt>.</p>
</dd>
<dt><b><a name="commonpf32">{commonpf32}</a></b></dt>
<dd>
<p>32-bit Program Files. The path of the system's 32-bit Program Files directory, typically "C:\Program Files" on 32-bit Windows and "C:\Program Files (x86)" on 64-bit Windows.</p>
</dd>
<dt><b><a name="commonpf64">{commonpf64}</a></b></dt>
<dd>
<p>64-bit Windows only: 64-bit Program Files. The path of the system's 64-bit Program Files directory, typically "C:\Program Files". An exception will be raised if an attempt is made to expand this constant on 32-bit Windows.</p>
</dd>
<dt><b><a name="commoncf">{commoncf}</a></b></dt>
<dd>
<p>Common Files. The path of the system's Common Files directory. <tt>{commoncf}</tt> is equivalent to <tt>{commoncf32}</tt> unless the install is running in <link topic="32vs64bitinstalls">64-bit install mode</link>, in which case it is equivalent to <tt>{commoncf64}</tt>.</p>
</dd>
<dt><b><a name="commoncf32">{commoncf32}</a></b></dt>
<dd>
<p>32-bit Common Files. The path of the system's 32-bit Common Files directory, typically "C:\Program Files\Common Files" on 32-bit Windows and "C:\Program Files (x86)\Common Files" on 64-bit Windows.</p>
</dd>
<dt><b><a name="commoncf64">{commoncf64}</a></b></dt>
<dd>
<p>64-bit Windows only: 64-bit Common Files. The path of the system's 64-bit Common Files directory, typically "C:\Program Files\Common Files". An exception will be raised if an attempt is made to expand this constant on 32-bit Windows.</p>
</dd>
<dt><b><a name="tmp">{tmp}</a></b></dt>
<dd>
<p>Temporary directory used by Setup or Uninstall. This is <i>not</i> the value of the user's TEMP environment variable. It is a subdirectory of the user's temporary directory which is created by Setup or Uninstall at startup (with a name like "C:\WINDOWS\TEMP\IS-xxxxx.tmp"). All files and subdirectories in this directory are deleted when Setup or Uninstall exits. During Setup, this is primarily useful for extracting files that are to be executed in the [Run] section but aren't needed after the installation.</p>
</dd>
<dt><b><a name="commonfonts">{commonfonts}</a></b></dt>
<dd>
<p>Fonts directory. Normally named "Fonts" under the Windows directory.</p>
</dd>
<dt><b><a name="dao">{dao}</a></b></dt>
<dd>
<p>DAO directory. This is equivalent to <tt>{commoncf}\Microsoft Shared\DAO</tt>.</p>
</dd>
<dt><b><a name="dotnet11">{dotnet11}</a></b></dt>
<dd>
<p>32-bit .NET Framework version 1.1 install root directory.</p>
<p>An exception will be raised if an attempt is made to expand this constant on a system with no .NET Framework version 1.1 present.</p>
</dd>
<dt><b><a name="dotnet20">{dotnet20}</a></b></dt>
<dd>
<p>.NET Framework version 2.0-3.5 install root directory. <tt>{dotnet20}</tt> is equivalent to <tt>{dotnet2032}</tt> unless the install is running in <link topic="32vs64bitinstalls">64-bit install mode</link>, in which case it is equivalent to <tt>{dotnet2064}</tt>.</p>
<p>An exception will be raised if an attempt is made to expand this constant on a system with no .NET Framework version 2.0-3.5 present.</p>
</dd>
<dt><b><a name="dotnet2032">{dotnet2032}</a></b></dt>
<dd>
<p>32-bit .NET Framework version 2.0-3.5 install root directory.</p>
<p>An exception will be raised if an attempt is made to expand this constant on a system with no .NET Framework version 2.0-3.5 present.</p>
</dd>
<dt><b><a name="dotnet2064">{dotnet2064}</a></b></dt>
<dd>
<p>64-bit Windows only: 64-bit .NET Framework version 2.0-3.5 install root directory.</p>
<p>An exception will be raised if an attempt is made to expand this constant on a system with no .NET Framework version 2.0-3.5 present.</p>
</dd>
<dt><b><a name="dotnet40">{dotnet40}</a></b></dt>
<dd>
<p>.NET Framework version 4.0 and later install root directory. <tt>{dotnet40}</tt> is equivalent to <tt>{dotnet4032}</tt> unless the install is running in <link topic="32vs64bitinstalls">64-bit install mode</link>, in which case it is equivalent to <tt>{dotnet4064}</tt>.</p>
<p>An exception will be raised if an attempt is made to expand this constant on a system with no .NET Framework version 4.0 or later present.</p>
<p>Also see <link topic="isxfunc_IsDotNetInstalled">IsDotNetInstalled</link>.</p>
</dd>
<dt><b><a name="dotnet4032">{dotnet4032}</a></b></dt>
<dd>
<p>32-bit .NET Framework version 4.0 and later install root directory.</p>
<p>An exception will be raised if an attempt is made to expand this constant on a system with no .NET Framework version 4.0 or later present.</p>
</dd>
<dt><b><a name="dotnet4064">{dotnet4064}</a></b></dt>
<dd>
<p>64-bit Windows only: 64-bit .NET Framework version 4.0 and later install root directory.</p>
<p>An exception will be raised if an attempt is made to expand this constant on a system with no .NET Framework version 4.0 or later present.</p>
</dd>
</dl>
<heading>Shell Folder Constants</heading>
<p>Inno Setup supports another set of directory constants, referred to as <i>shell folder constants</i>. They can be used in the same way as the other directory constants.</p>
<p>The "common" constants refer to the <i>All Users</i> profile.</p>
<p>The "user" constants refer to the profile of the user running Setup. This user is often not the same as the currently logged-in user, so use the "user" constants with caution.</p>
<!-- <p>Except where otherwise noted, shell folder constants work on all versions of Windows that Inno Setup supports.</p> -->
<dl>
<dt><b><a name="group">{group}</a></b></dt>
<dd>
<p>The path to the Start Menu folder, as selected by the user on Setup's <i>Select Start Menu Folder</i> wizard page. This folder is created in the <i>All Users</i> profile unless the installation is running in <link topic="admininstallmode">non administrative install mode</link>, in which case it is created in the current user's profile.</p>
</dd>
<dt><b><a name="localappdata">{localappdata}</a></b></dt>
<dd>
<p>The path to the current user's local (non-roaming) Application Data folder.</p>
</dd>
<dt><b><a name="userappdata">{userappdata}</a></b> & <b><a name="commonappdata">{commonappdata}</a></b></dt>
<dd>
<p>The path to the Application Data folder.</p>
</dd>
<dt><b><a name="usercf">{usercf}</a></b></dt>
<dd>
<p>The path to the current user's Common Files directory. Only Windows 7 and later supports <tt>{usercf}</tt>; if used on previous Windows versions, it will translate to the same directory as <tt>{localappdata}\Programs\Common</tt>.</p>
</dd>
<dt><b><a name="userdesktop">{userdesktop}</a></b> & <b><a name="commondesktop">{commondesktop}</a></b></dt>
<dd>
<p>The path to the desktop folder.</p>
<dd>
<dt><b><a name="userdocs">{userdocs}</a></b> & <b><a name="commondocs">{commondocs}</a></b></dt>
<dd>
<p>The path to the My Documents folder.</p>
</dd>
<dt><b><a name="userfavorites">{userfavorites}</a></b></dt>
<dd>
<p>The path to the current user's Favorites folder. (There is no common Favorites folder.)</p>
</dd>
<dt><b><a name="userfonts">{userfonts}</a></b></dt>
<dd>
<p>The path to the current user's Fonts folder. Only Windows 10 Version 1803 and later supports <tt>{userfonts}</tt>. Same directory as <tt>{localappdata}\Microsoft\Windows\Fonts</tt>.</p>
</dd>
<dt><b><a name="userpf">{userpf}</a></b></dt>
<dd>
<p>The path to the current user's Program Files directory. Only Windows 7 and later supports <tt>{userpf}</tt>; if used on previous Windows versions, it will translate to the same directory as <tt>{localappdata}\Programs</tt>.</p>
</dd>
<dt><b><a name="userprograms">{userprograms}</a></b> & <b><a name="commonprograms">{commonprograms}</a></b></dt>
<dd>
<p>The path to the Programs folder on the Start Menu.</p>
</dd>
<dt><b><a name="usersavedgames">{usersavedgames}</a></b></dt>
<dd>
<p>The path to the current user's Saved Games directory.</p>
</dd>
<dt><b><a name="usersendto">{usersendto}</a></b></dt>
<dd>
<p>The path to the current user's Send To folder. (There is no common Send To folder.)</p>
</dd>
<dt><b><a name="userstartmenu">{userstartmenu}</a></b> & <b><a name="commonstartmenu">{commonstartmenu}</a></b></dt>
<dd>
<p>The path to the top level of the Start Menu.</p>
</dd>
<dt><b><a name="userstartup">{userstartup}</a></b> & <b><a name="commonstartup">{commonstartup}</a></b></dt>
<dd>
<p>The path to the Startup folder on the Start Menu.</p>
</dd>
<dt><b><a name="usertemplates">{usertemplates}</a></b> & <b><a name="commontemplates">{commontemplates}</a></b></dt>
<dd>
<p>The path to the Templates folder.</p>
</dd>
</dl>
<heading>Auto Constants</heading>
<p>Besides the "common" and "user" constants, Inno Setup also supports "auto" constants. These automatically map to their "common" form unless the installation is running in <link topic="admininstallmode">non administrative install mode</link>, in which case they map to their "user" form.</p>
<p>It is recommended you always use these "auto" constants when possible to avoid mistakes.</p>
<indent>
<table>
<tr><td></td><td><u>Administrative</u></td><td><u>Non administrative</u></td></tr>
<tr><td><tt><a name="autoappdata">autoappdata</a></tt></td><td><tt>commonappdata</tt></td><td><tt>userappdata</tt></td></tr>
<tr><td><tt><a name="autocf">autocf</a></tt></td><td><tt>commoncf</tt></td><td><tt>usercf</tt></td></tr>
<tr><td><tt><a name="autocf32">autocf32</a></tt></td><td><tt>commoncf32</tt></td><td><tt>usercf</tt></td></tr>
<tr><td><tt><a name="autocf64">autocf64</a></tt></td><td><tt>commoncf64</tt></td><td><tt>usercf</tt></td></tr>
<tr><td><tt><a name="autodesktop">autodesktop</a></tt></td><td><tt>commondesktop</tt></td><td><tt>userdesktop</tt></td></tr>
<tr><td><tt><a name="autodocs">autodocs</a></tt></td><td><tt>commondocs</tt></td><td><tt>userdocs</tt></td></tr>
<tr><td><tt><a name="autofonts">autofonts</a></tt></td><td><tt>commonfonts</tt></td><td><tt>userfonts</tt></td></tr>
<tr><td><tt><a name="autopf">autopf</a></tt></td><td><tt>commonpf</tt></td><td><tt>userpf</tt></td></tr>
<tr><td><tt><a name="autopf32">autopf32</a></tt></td><td><tt>commonpf32</tt></td><td><tt>userpf</tt></td></tr>
<tr><td><tt><a name="autopf64">autopf64</a></tt></td><td><tt>commonpf64</tt></td><td><tt>userpf</tt></td></tr>
<tr><td><tt><a name="autoprograms">autoprograms</a></tt></td><td><tt>commonprograms</tt></td><td><tt>userprograms</tt></td></tr>
<tr><td><tt><a name="autostartmenu">autostartmenu</a></tt></td><td><tt>commonstartmenu</tt></td><td><tt>userstartmenu</tt></td></tr>
<tr><td><tt><a name="autostartup">autostartup</a></tt></td><td><tt>commonstartup</tt></td><td><tt>userstartup</tt></td></tr>
<tr><td><tt><a name="autotemplates">autotemplates</a></tt></td><td><tt>commontemplates</tt></td><td><tt>usertemplates</tt></td></tr>
</table>
</indent>
<heading>Renamed Constants</heading>
<p>Inno Setup 6 renamed some of the directory and shell folder constants. The old names are still supported, but it is recommended to update your scripts to the new names (or the "auto" form) and the compiler will issue a warning if you don't.</p>
<indent>
<table>
<tr><td><u>Old name</u></td><td><u>New name</u></td></tr>
<tr><td><tt><a name="cf">cf</a></tt></td><td><tt>commoncf</tt></td></tr>
<tr><td><tt><a name="cf32">cf32</a></tt></td><td><tt>commoncf32</tt></td></tr>
<tr><td><tt><a name="cf64">cf64</a></tt></td><td><tt>commoncf64</tt></td></tr>
<tr><td><tt><a name="fonts">fonts</a></tt></td><td><tt>commonfonts</tt></td></tr>
<tr><td><tt><a name="pf">pf</a></tt></td><td><tt>commonpf</tt></td></tr>
<tr><td><tt><a name="pf32">pf32</a></tt></td><td><tt>commonpf32</tt></td></tr>
<tr><td><tt><a name="pf64">pf64</a></tt></td><td><tt>commonpf64</tt></td></tr>
<tr><td><tt><a name="sendto">sendto</a></tt></td><td><tt>usersendto</tt></td></tr>
</table>
</indent>
<heading>Other Constants</heading>
<dl>
<dt><b><a name="bs">{\}</a></b></dt>
<dd>
<p>A backslash character. See the note at the top of this page for an explanation of what the difference between using <tt>{\}</tt> and only a <tt>\</tt> is.</p>
</dd>
<dt><b><a name="name">{%<i>NAME</i>|<i>DefaultValue</i>}</a></b></dt>
<dd>
<p>Embeds the value of an environment variable.</p>
<ul>
<li><i>NAME</i> specifies the name of the environment variable to use.</li>
<li><i>DefaultValue</i> determines the string to embed if the specified variable does not exist on the user's system.</li>
<li>If you wish to include a comma, vertical bar ("|"), or closing brace ("}") inside the constant, you must escape it via "%-encoding." Replace the character with a "%" character, followed by its two-digit hex code. A comma is "%2c", a vertical bar is "%7c", and a closing brace is "%7d". If you want to include an actual "%" character, use "%25".</li>
<li><i>NAME</i> and <i>DefaultValue</i> may include constants. Note that you do <i>not</i> need to escape the closing brace of a constant as described above; that is only necessary when the closing brace is used elsewhere.</li>
</ul>
<examples>
<pre>
{%COMSPEC}
{%PROMPT|$P$G}
</pre>
</examples>
</dd>
<dt><b><a name="cmd">{cmd}</a></b></dt>
<dd>
<p>The full pathname of the system's standard command interpreter, <i>Windows\System32\</i>cmd.exe. Note that the COMSPEC environment variable is not used when expanding this constant.</p>
</dd>
<dt><b><a name="computername">{computername}</a></b></dt>
<dd>
<p>The name of the computer the Setup or Uninstall program is running on (as returned by the Windows <i>GetComputerName</i> function).</p>
</dd>
<dt><b><a name="drive">{drive:<i>Path</i>}</a></b></dt>
<dd>
<p>Extracts and returns the drive letter and colon (e.g. "C:") from the specified path. In the case of a UNC path, it returns the server and share name (e.g. "\\SERVER\SHARE").</p>
<ul>
<li><i>Path</i> specifies the path.</li>
<li>If you wish to include a comma, vertical bar ("|"), or closing brace ("}") inside the constant, you must escape it via "%-encoding." Replace the character with a "%" character, followed by its two-digit hex code. A comma is "%2c", a vertical bar is "%7c", and a closing brace is "%7d". If you want to include an actual "%" character, use "%25".</li>
<li><i>Path</i> may include constants. Note that you do <i>not</i> need to escape the closing brace of a constant as described above; that is only necessary when the closing brace is used elsewhere.</li>
</ul>
<examples>
<pre>
{drive:{src}}
{drive:c:\path\file}
{drive:\\server\share\path\file}
</pre>
</examples>
</dd>
<dt><b><a name="groupname">{groupname}</a></b></dt>
<dd>
<p>The name of the folder the user selected on Setup's <i>Select Start Menu Folder</i> wizard page. This differs from <tt>{group}</tt> in that it is only the name; it does not include a path.</p>
</dd>
<dt><b><a name="hwnd">{hwnd}</a></b></dt>
<dd>
<p><i>(Special-purpose)</i> Translates to the window handle of the Setup program's background window.</p>
</dd>
<dt><b><a name="wizardhwnd">{wizardhwnd}</a></b></dt>
<dd>
<p><i>(Special-purpose)</i> Translates to the window handle of the Setup wizard window. This handle is set to '0' if the window handle isn't available at the time the translation is done.</p>
</dd>
<dt><b><a name="ini">{ini:<i>Filename</i>,<i>Section</i>,<i>Key</i>|<i>DefaultValue</i>}</a></b></dt>
<dd>
<p>Embeds a value from an .INI file.</p>
<ul>
<li><i>Filename</i> specifies the name of the .INI file to read from.</li>
<li><i>Section</i> specifies the name of the section to read from.</li>
<li><i>Key</i> specifies the name of the key to read.</li>
<li><i>DefaultValue</i> determines the string to embed if the specified key does not exist.</li>
<li>If you wish to include a comma, vertical bar ("|"), or closing brace ("}") inside the constant, you must escape it via "%-encoding." Replace the character with a "%" character, followed by its two-digit hex code. A comma is "%2c", a vertical bar is "%7c", and a closing brace is "%7d". If you want to include an actual "%" character, use "%25".</li>
<li><i>Filename, Section, Key</i> and <i>DefaultValue</i> may include constants. Note that you do <i>not</i> need to escape the closing brace of a constant as described above; that is only necessary when the closing brace is used elsewhere.</li>
</ul>
<example>
<pre>{ini:{win}\MyProg.ini,Settings,Path|{autopf}\My Program}</pre>
</example>
</dd>
<dt><b><a name="language">{language}</a></b></dt>
<dd>
<p>The internal name of the selected language. See the <link topic="languagessection">[Languages] section</link> documentation for more information.</p>
</dd>
<dt><b><a name="cm">{cm:<i>MessageName</i>}</a></b><br/>
<b>{cm:<i>MessageName</i>,<i>Arguments</i>}</b></dt>
<dd>
<p>Embeds a custom message value based on the active language.</p>
<ul>
<li><i>MessageName</i> specifies the name of custom message to read from. See the <link topic="custommessagessection">[CustomMessages] section</link> documentation for more information.</li>
<li><i>Arguments</i> optionally specifies a comma separated list of arguments to the message value.</li>
<li>If you wish to include a comma, vertical bar ("|"), or closing brace ("}") inside the constant, you must escape it via "%-encoding." Replace the character with a "%" character, followed by its two-digit hex code. A comma is "%2c", a vertical bar is "%7c", and a closing brace is "%7d". If you want to include an actual "%" character, use "%25".</li>
<li>Each argument in <i>Arguments</i> may include constants. Note that you do <i>not</i> need to escape the closing brace of a constant as described above; that is only necessary when the closing brace is used elsewhere.</li>
</ul>
<example>
<pre>{cm:LaunchProgram,Inno Setup}</pre>
</example>
<p>The example above translates to "Launch Inno Setup" if English is the active language.</p>
</dd>
<dt><b><a name="reg">{reg:HK<i>xx</i>\<i>SubkeyName</i>,<i>ValueName</i>|<i>DefaultValue</i>}</a></b></dt>
<dd>
<p>Embeds a registry value.</p>
<ul>
<li>HK<i>xx</i> specifies the root key; see the <link topic="registrysection">[Registry]</link> section documentation for a list of possible root keys.</li>
<li><i>SubkeyName</i> specifies the name of the subkey to read from.</li>
<li><i>ValueName</i> specifies the name of the value to read; leave <i>ValueName</i> blank if you wish to read the "default" value of a key.</li>
<li><i>DefaultValue</i> determines the string to embed if the specified registry value does not exist, or is not a string type (REG_SZ or REG_EXPAND_SZ).</li>
<li>If you wish to include a comma, vertical bar ("|"), or closing brace ("}") inside the constant, you must escape it via "%-encoding." Replace the character with a "%" character, followed by its two-digit hex code. A comma is "%2c", a vertical bar is "%7c", and a closing brace is "%7d". If you want to include an actual "%" character, use "%25".</li>
<li><i>SubkeyName, ValueName,</i> and <i>DefaultValue</i> may include constants. Note that you do <i>not</i> need to escape the closing brace of a constant as described above; that is only necessary when the closing brace is used elsewhere.</li>
</ul>
<example>
<pre>{reg:HKA\Software\My Program,Path|{autopf}\My Program}</pre>
</example>
</dd>
<dt><b><a name="param">{param:<i>ParamName</i>|<i>DefaultValue</i>}</a></b></dt>
<dd>
<p>Embeds a command line parameter value.</p>
<ul>
<li><i>ParamName</i> specifies the name of the command line parameter to read from.</li>
<li><i>DefaultValue</i> determines the string to embed if the specified command line parameter does not exist, or its value could not be determined.</li>
<li>If you wish to include a comma, vertical bar ("|"), or closing brace ("}") inside the constant, you must escape it via "%-encoding." Replace the character with a "%" character, followed by its two-digit hex code. A comma is "%2c", a vertical bar is "%7c", and a closing brace is "%7d". If you want to include an actual "%" character, use "%25".</li>
<li><i>ParamName</i> and <i>DefaultValue</i> may include constants. Note that you do <i>not</i> need to escape the closing brace of a constant as described above; that is only necessary when the closing brace is used elsewhere.</li>
</ul>
<example>
<pre>{param:Path|{autopf}\My Program}</pre>
</example>
<p>The example above translates to <tt>c:\My Program</tt> if the command line <tt>/Path="c:\My Program"</tt> was specified.</p>
</dd>
<dt><b><a name="srcexe">{srcexe}</a></b></dt>
<dd>
<p>The full pathname of the Setup program file, e.g. "C:\SETUP.EXE".</p>
</dd>
<dt><b><a name="uninstallexe">{uninstallexe}</a></b></dt>
<dd>
<p>The full pathname of the uninstall program extracted by Setup, e.g. "C:\Program Files\My Program\unins000.exe". This constant is typically used in an [Icons] section entry for creating an Uninstall icon. It is only valid if <tt>Uninstallable</tt> is <tt>yes</tt> (the default setting).</p>
</dd>
<dt><b><a name="sysuserinfoname">{sysuserinfoname}</a></b><br/>
<b><a name="sysuserinfoorg">{sysuserinfoorg}</a></b></dt>
<dd>
<p>The name and organization, respectively, that Windows is registered to. This information is read from the registry.</p>
</dd>
<dt><b><a name="userinfoname">{userinfoname}</a></b><br/>
<b><a name="userinfoorg">{userinfoorg}</a></b><br/>
<b><a name="userinfoserial">{userinfoserial}</a></b></dt>
<dd>
<p>The name, organization and serial number, respectively, that the user entered on the <i>User Information</i> wizard page (which can be enabled via the <tt>UserInfoPage</tt> directive). Typically, these constants are used in [Registry] or [INI] entries to save their values for later use.</p>
</dd>
<dt><b><a name="username">{username}</a></b></dt>
<dd>
<p>The name of the user who is running Setup or Uninstall program (as returned by the <i>GetUserName</i> function).</p>
</dd>
<dt><b><a name="log">{log}</a></b></dt>
<dd>
<p>The log file name, or an empty string if <link topic="setup_setuplogging">logging</link> is not enabled.</p>
</dd>
</dl>
</body>
</topic>
<topic name="commonparams" title="Common Parameters">
<keyword value="Common Parameters" />
<body>
<p>There are three optional <link topic="params">parameters</link> that are supported by all sections whose entries are separated into parameters. They are:</p>
<paramlist>
<param name="Languages">
<p>A space separated list of language names, telling Setup to which languages the entry belongs. If the end user selects a language from this list, the entry is processed (for example: the file is installed).</p>
<p>An entry without a <tt>Languages</tt> parameter is always processed, unless other parameters say it shouldn't be.</p>
<p>Besides space separated lists, you may also use boolean expressions. See <link topic="componentstasksparams">Components and Tasks parameters</link> for examples of boolean expressions.</p>
<example>
<pre>Languages: en nl</pre>
</example>
</param>
<param name="MinVersion">
<p>A minimum <link topic="winvernotes">Windows version</link> for the entry to be processed. If you use "0" then the entry will never be processed. <link topic="buildnumnotes">Build numbers and/or service pack levels</link> may be included. This overrides any <tt>MinVersion</tt> directive in the script's <tt>[Setup]</tt> section.</p>
<p>An entry without a <tt>MinVersion</tt> parameter is always processed, unless other parameters say it shouldn't be.</p>
<example>
<pre>MinVersion: 6.2</pre>
</example>
</param>
<param name="OnlyBelowVersion">
<p>Essentially the opposite of <tt>MinVersion</tt>. Specifies the minimum <link topic="winvernotes">Windows version</link> for the entry <i>not</i> to be processed. For example, if you put <tt>6.2</tt> and the user is running Windows 7, the entry <i>will</i> be processed, but if the user is running Windows 8 (which reports its version as 6.2) or later, it will <i>not</i> be processed. Putting "0" means there is no upper version limit. <link topic="buildnumnotes">Build numbers and/or service pack levels</link> may be included. This overrides any <tt>OnlyBelowVersion</tt> directive in the script's <tt>[Setup]</tt> section.</p>
<p>An entry without an <tt>OnlyBelowVersion</tt> parameter is always processed, unless other parameters say it shouldn't be.</p>
<example>
<pre>OnlyBelowVersion: 6.2</pre>
</example>
</param>
</paramlist>
</body>
</topic>
<topic name="componentstasksparams" title="Components and Tasks Parameters">
<keyword value="Components and Tasks Parameters" />
<body>
<p>There are two optional <link topic="params">parameters</link> that are supported by all sections whose entries are separated into parameters, except [Types], [Components] and [Tasks]. They are:</p>
<paramlist>
<param name="Components">
<p>A space separated list of component names, telling Setup to which components the entry belongs. If the end user selects a component from this list, the entry is processed (for example: the file is installed).</p>
<p>An entry without a <tt>Components</tt> parameter is always processed, unless other parameters say it shouldn't be.</p>
<example>
<pre>
[Files]
Source: "MYPROG.EXE"; DestDir: "{app}"; Components: main
Source: "MYPROG.CHM"; DestDir: "{app}"; Components: help
Source: "README.TXT"; DestDir: "{app}"
</pre>
</example>
</param>
<param name="Tasks">
<p>A space separated list of task names, telling Setup to which task the entry belongs. If the end user selects a task from this list, the entry is processed (for example: the file is installed).</p>
<p>An entry without a <tt>Tasks</tt> parameter is always processed, unless other parameters say it shouldn't be.</p>
<p>Note that the <i>Don't create a Start Menu folder</i> checkbox on the <i>Select Start Menu Folder</i> wizard page doesn't affect [Icons] entries that have <tt>Tasks</tt> parameters since they have their own checkboxes.</p>
<example>
<pre>
[Icons]
Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"; Components: main; Tasks: startmenu
Name: "{group}\My Program Help"; Filename: "{app}\MyProg.chm"; Components: help; Tasks: startmenu
Name: "{commondesktop}\My Program"; Filename: "{app}\MyProg.exe"; Components: main; Tasks: desktopicon
</pre>
</example>
</param>
</paramlist>
<p><br/>
Besides space separated lists, you may also use boolean expressions as Components and Tasks parameters. Supported operators include <tt>not</tt>, <tt>and</tt>, and <tt>or</tt>. For example:</p>
<precode>
[Components]
Name: a; Description: a
Name: b; Description: b
[Tasks]
Name: p; Description: a or b; Components: a or b
Name: q; Description: a and b; Components: a and b
Name: r; Description: not a or b; Components: not a or b
Name: s; Description: not (a or b); Components: not (a or b)
Name: t; Description: a or b - old style; Components: a b
</precode>
</body>
</topic>
<topic name="setupsection" title="[Setup] section">
<keyword value="[Setup] section" />
<keyword value="Setup" />
<body>
<p>This section contains global settings used by the installer and uninstaller. Certain directives are required for any installation you create. Here is an example of a <tt>[Setup]</tt> section:</p>
<precode>
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={autopf}\My Program
DefaultGroupName=My Program
</precode>
<p>By default, any leading or trailing whitespace in a directive's value will be stripped. It is possible to avoid this by surrounding the directive's value in double quotes (<tt>"</tt>).</p>
<p><br/>The following directives can be placed in the <tt>[Setup]</tt> section:</p>
<p>(<b>bold</b> = required)</p>
<heading>Compiler-related</heading>
<ul appearance="compact">
<li><link topic="setup_aslrcompatible">ASLRCompatible</link></li>
<li><link topic="setup_compression">Compression</link></li>
<li><link topic="setup_compressionthreads">CompressionThreads</link></li>
<li><link topic="setup_depcompatible">DEPCompatible</link></li>
<li><link topic="setup_diskclustersize">DiskClusterSize</link></li>
<li><link topic="setup_diskslicesize">DiskSliceSize</link></li>
<li><link topic="setup_diskspanning">DiskSpanning</link></li>
<li><link topic="setup_encryption">Encryption</link></li>
<li><link topic="setup_internalcompresslevel">InternalCompressLevel</link></li>
<li><link topic="setup_lzmaalgorithm">LZMAAlgorithm</link></li>
<li><link topic="setup_lzmablocksize">LZMABlockSize</link></li>
<li><link topic="setup_lzmadictionarysize">LZMADictionarySize</link></li>
<li><link topic="setup_lzmamatchfinder">LZMAMatchFinder</link></li>
<li><link topic="setup_lzmanumblockthreads">LZMANumBlockThreads</link></li>
<li><link topic="setup_lzmanumfastbytes">LZMANumFastBytes</link></li>
<li><link topic="setup_lzmauseseparateprocess">LZMAUseSeparateProcess</link></li>
<li><link topic="setup_mergeduplicatefiles">MergeDuplicateFiles</link></li>
<li><link topic="setup_missingmessageswarning">MissingMessagesWarning</link></li>
<li><link topic="setup_missingrunonceidswarning">MissingRunOnceIdsWarning</link></li>
<li><link topic="setup_notrecognizedmessageswarning">NotRecognizedMessagesWarning</link></li>
<li><link topic="setup_output">Output</link></li>
<li><link topic="setup_outputbasefilename">OutputBaseFilename</link></li>
<li><link topic="setup_outputdir">OutputDir</link></li>
<li><link topic="setup_outputmanifestfile">OutputManifestFile</link></li>
<li><link topic="setup_reservebytes">ReserveBytes</link></li>
<li><link topic="setup_signeduninstaller">SignedUninstaller</link></li>
<li><link topic="setup_signeduninstallerdir">SignedUninstallerDir</link></li>
<li><link topic="setup_signtool">SignTool</link></li>
<li><link topic="setup_signtoolminimumtimebetween">SignToolMinimumTimeBetween</link></li>
<li><link topic="setup_signtoolretrycount">SignToolRetryCount</link></li>
<li><link topic="setup_signtoolretrydelay">SignToolRetryDelay</link></li>
<li><link topic="setup_signtoolrunminimized">SignToolRunMinimized</link></li>
<li><link topic="setup_slicesperdisk">SlicesPerDisk</link></li>
<li><link topic="setup_solidcompression">SolidCompression</link></li>
<li><link topic="setup_sourcedir">SourceDir</link></li>