isetup.xml 390 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446
  1. <?xml version="1.0" ?>
  2. <!DOCTYPE ishelp SYSTEM "isetup.dtd">
  3. <!--
  4. Inno Setup
  5. Copyright (C) 1997-2025 Jordan Russell
  6. Portions by Martijn Laan
  7. For conditions of distribution and use, see LICENSE.TXT.
  8. -->
  9. <ishelp version="1">
  10. <!-- Table of contents -->
  11. <contents>
  12. <contentstopic title="What is Inno Setup?" topic="whatisinnosetup" />
  13. <contentstopic title="Creating Installations" topic="creatinginstallations" />
  14. <contentstopic title="Script Format Overview" topic="scriptformatoverview" />
  15. <contentstopic title="Parameters in Sections" topic="params" />
  16. <contentstopic title="Constants" topic="consts" />
  17. <contentstopic title="Common Parameters" topic="commonparams" />
  18. <contentstopic title="Components and Tasks Parameters" topic="componentstasksparams" />
  19. <contentsheading title="Setup Script Sections">
  20. <contentstopic title="[Setup] section" topic="setupsection" />
  21. <contentsheading title="[Setup] section directives" />
  22. <contentstopic title="[Types] section" topic="typessection" />
  23. <contentstopic title="[Components] section" topic="componentssection" />
  24. <contentstopic title="[Tasks] section" topic="taskssection" />
  25. <contentstopic title="[Dirs] section" topic="dirssection" />
  26. <contentstopic title="[Files] section" topic="filessection" />
  27. <contentstopic title="[Icons] section" topic="iconssection" />
  28. <contentstopic title="[INI] section" topic="inisection" />
  29. <contentstopic title="[InstallDelete] section" topic="installdeletesection" />
  30. <contentstopic title="[Languages] section" topic="languagessection" />
  31. <contentstopic title="[Messages] section" topic="messagessection" />
  32. <contentstopic title="[CustomMessages] section" topic="custommessagessection" />
  33. <contentstopic title="[LangOptions] section" topic="langoptionssection" />
  34. <contentstopic title="[Registry] section" topic="registrysection" />
  35. <contentstopic title="[Run] section" topic="runsection" />
  36. <contentstopic title="[UninstallDelete] section" topic="uninstalldeletesection" />
  37. <contentstopic title="[UninstallRun] section" topic="runsection" />
  38. <contentstopic title="[ISSigKeys] section" topic="issigkeyssection" />
  39. </contentsheading>
  40. <contentsheading title="Pascal Scripting">
  41. <contentstopic title="Introduction" topic="scriptintro" />
  42. <contentstopic title="Creating the [Code] Section" topic="scriptcreating" />
  43. <contentstopic title="Event Functions" topic="scriptevents" />
  44. <contentstopic title="Scripted Constants" topic="scriptconstants" />
  45. <contentstopic title="Check Parameters" topic="scriptcheck" />
  46. <contentstopic title="BeforeInstall and AfterInstall Parameters" topic="scriptinstall" />
  47. <contentstopic title="Uninstall Code" topic="scriptuninstall" />
  48. <contentstopic title="Examples" topic="scriptexamples" />
  49. <contentstopic title="Support Functions Reference" topic="scriptfunctions" />
  50. <contentstopic title="Support Classes Reference" topic="scriptclasses" />
  51. <contentstopic title="Using Custom Wizard Pages" topic="scriptpages" />
  52. <contentstopic title="Using DLLs and .NET assemblies" topic="scriptdll" />
  53. <contentstopic title="Using COM Automation objects" topic="scriptautomation" />
  54. <contentstopic title="Run-time debugger" topic="scriptdebug" />
  55. </contentsheading>
  56. <contentsheading title="Inno Setup Preprocessor">
  57. <contentstopic title="Introduction" topic="isppoverview" />
  58. <contentstopic title="Directives Reference" topic="directives" />
  59. <contentstopic title="Support Functions Reference" topic="funcs" />
  60. <contentstopic title="User Defined Functions" topic="macros" />
  61. <contentstopic title="Expression Syntax" topic="expressions" />
  62. <contentstopic title="Predefined Variables" topic="predefinedvars" />
  63. <contentstopic title="Line Spanning" topic="linespan" />
  64. <contentstopic title="Visibility of Identifiers" topic="visibility" />
  65. <contentstopic title="Example Script" topic="example" />
  66. <contentstopic title="ISPPBuiltins.iss" topic="builtinsiss" />
  67. <contentstopic title="Extended Command Line Compiler" topic="isppcc" />
  68. </contentsheading>
  69. <contentsheading title="Other Information">
  70. <contentstopic title="Support Inno Setup" topic="donate" />
  71. <contentstopic title="Unicode Inno Setup" topic="unicode" />
  72. <contentstopic title="Non Administrative Install Mode" topic="admininstallmode" />
  73. <contentstopic title="64-bit Install Mode" topic="32vs64bitinstalls" />
  74. <contentstopic title="64-bit Installation Limitations" topic="64bitlimitations" />
  75. <contentstopic title="Architecture Identifiers" topic="archidentifiers" />
  76. <contentstopic title="Wizard Pages" topic="wizardpages" />
  77. <contentstopic title="Installation Order" topic="installorder" />
  78. <contentstopic title="Unsafe Files" topic="unsafefiles" />
  79. <contentstopic title="Compiler Command Line Execution" topic="compilercmdline" />
  80. <contentstopic title="Setup Command Line Parameters" topic="setupcmdline" />
  81. <contentstopic title="Uninstaller Command Line Parameters" topic="uninstcmdline" />
  82. <contentstopic title="Setup Exit Codes" topic="setupexitcodes" />
  83. <contentstopic title="Uninstaller Exit Codes" topic="uninstexitcodes" />
  84. <contentstopic title="Compiler IDE Keyboard And Mouse Commands" topic="compformshortcuts" />
  85. <contentstopic title="Compiler IDE Regular Expressions" topic="compformregex" />
  86. <contentstopic title=".issig Signatures: Introduction" topic="issig" />
  87. <contentstopic title="Inno Setup Signature Tool" topic="issigtool" />
  88. <contentstopic title="Miscellaneous Notes" topic="technotes" />
  89. <contentstopic title="Example Scripts" topic="examples" />
  90. <contentstopic title="Frequently Asked Questions" topic="faq" />
  91. <contentstopic title="Contributors" topic="credits" />
  92. </contentsheading>
  93. </contents>
  94. <!-- Topics -->
  95. <topic name="whatisinnosetup" title="What is Inno Setup?">
  96. <keyword value="What is Inno Setup?" />
  97. <body>
  98. <p>
  99. <b>Inno Setup version 6.5.0-dev</b><br/>
  100. <b>Copyright &copy; 1997-2025 Jordan Russell. All rights reserved.</b><br/>
  101. <b>Portions Copyright &copy; 2000-2025 Martijn Laan. All rights reserved.</b><br/>
  102. <extlink href="https://jrsoftware.org/">Inno Setup home page</extlink>
  103. </p>
  104. <p><br/>
  105. 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>
  106. <p><br/>
  107. <b><i>Key features:</i></b></p>
  108. <ul>
  109. <li>Support for every Windows release since 2009, including: Windows 11, Windows 10, Windows 11 on Arm, Windows 10 on Arm, Windows Server 2019, Windows Server 2016, Windows 8.1, Windows 8, Windows Server 2012, Windows 7, and Windows Server 2008 R2. (No service packs are required.)</li>
  110. <li>Extensive support for installation of <link topic="32vs64bitinstalls">64-bit</link> applications on the 64-bit editions of Windows. The x64 and Arm64 architectures are both supported.</li>
  111. <li>Extensive support for both administrative and <link topic="admininstallmode">non administrative installations</link> installations.</li>
  112. <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>
  113. <li>Resizable standard Windows wizard interface.</li>
  114. <li>Customizable setup <link topic="typessection">types</link>, e.g. Full, Minimal, Custom.</li>
  115. <li>Complete <link topic="setup_uninstallable">uninstall</link> capabilities.</li>
  116. <li>Installation of <link topic="filessection">files</link>:<br/>
  117. 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, install fonts, download files, and extract archives.</li>
  118. <li>Creation of <link topic="iconssection">shortcuts</link> anywhere, including in the Start Menu and on the desktop.</li>
  119. <li>Creation of <link topic="registrysection">registry</link> and <link topic="inisection">.INI</link> entries.</li>
  120. <li><link topic="runsection">Running</link> other programs before, during or after install.</li>
  121. <li>Support for <link topic="languagessection">multilingual</link> installs, including right-to-left language support.</li>
  122. <li>Support for <link topic="setup_password">password-protected</link> and <link topic="setup_encryption">encrypted</link> installs.</li>
  123. <li>Support for <link topic="setup_signtool">digitally signed</link> installs and uninstalls.</li>
  124. <li><link topic="setupcmdline" anchor="SILENT">Silent install</link> and <link topic="uninstcmdline" anchor="SILENT">silent uninstall</link>.</li>
  125. <li><link topic="unicode">Unicode installs</link>.</li>
  126. <li>Integrated preprocessor option for advanced compile-time customization.</li>
  127. <li>Integrated <link topic="scriptintro">Pascal scripting</link> engine option for advanced run-time install and uninstall customization.</li>
  128. <li>Full source code is available from <extlink href="https://github.com/jrsoftware/issrc">GitHub</extlink>.</li>
  129. <li>Tiny footprint: only 1.78 MB overhead with all features included.</li>
  130. <li>All features are fully documented.</li>
  131. <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>
  132. </ul>
  133. <p><br/>
  134. <b><i>Is it really free of charge, even for commercial use?</i></b></p>
  135. <p>Yes, it may be used completely free of charge, even when deploying commercial applications.</p>
  136. <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>
  137. </body>
  138. </topic>
  139. <topic name="creatinginstallations" title="Creating Installations">
  140. <keyword value="Creating Installations" />
  141. <body>
  142. <p>Installations are created by means of <i>scripts</i>, which are ASCII or Unicode (UTF-8 encoded) text files with a format somewhat similar to .INI files. (No, it's not as complicated as you might be thinking!).</p>
  143. <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>
  144. <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>
  145. <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>
  146. <p><br/><b>See also:</b><br/>
  147. <link topic="scriptformatoverview">Script Format Overview</link>
  148. </p>
  149. </body>
  150. </topic>
  151. <topic name="scriptformatoverview" title="Script Format Overview">
  152. <keyword value="Script Format Overview" />
  153. <keyword value="#include" anchor="include" />
  154. <keyword value="include" anchor="include" />
  155. <keyword value="#preproc" anchor="preproc" />
  156. <keyword value="preproc" anchor="preproc" />
  157. <keyword value="Comments" />
  158. <body>
  159. <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>
  160. <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>
  161. <p>Here is an example:</p>
  162. <precode>
  163. [Setup]
  164. AppName=My Program
  165. [Files]
  166. Source: "MyProg.exe"; DestDir: "{app}"
  167. </precode>
  168. <p>Note that it is legal to specify multiple sections of the same name.</p>
  169. <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>
  170. <precode>
  171. ; This is a comment. I could put reminders to myself here...
  172. </precode>
  173. <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>
  174. <precode>
  175. #include "filename.txt"
  176. </precode>
  177. <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>
  178. <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>
  179. <precode>
  180. #preproc builtin
  181. #preproc ispp
  182. </precode>
  183. <p>By default, scripts use ISPP if available, and .isl files use the built-in preprocessor.</p>
  184. <p>If an Unicode file is used, it must be UTF-8 encoded.</p>
  185. <p><br/><b>See also:</b><br/>
  186. <link topic="params">Parameters in Sections</link><br/>
  187. <link topic="consts">Constants</link><br/>
  188. <link topic="commonparams">Common Parameters</link><br/>
  189. <link topic="componentstasksparams">Components and Tasks Parameters</link><br/>
  190. <link topic="setupsection">[Setup] section</link><br/>
  191. <link topic="typessection">[Types] section</link><br/>
  192. <link topic="componentssection">[Components] section</link><br/>
  193. <link topic="taskssection">[Tasks] section</link><br/>
  194. <link topic="dirssection">[Dirs] section</link><br/>
  195. <link topic="filessection">[Files] section</link><br/>
  196. <link topic="iconssection">[Icons] section</link><br/>
  197. <link topic="inisection">[INI] section</link><br/>
  198. <link topic="installdeletesection">[InstallDelete] section</link><br/>
  199. <link topic="languagessection">[Languages] section</link><br/>
  200. <link topic="messagessection">[Messages] section</link><br/>
  201. <link topic="custommessagessection">[CustomMessages] section</link><br/>
  202. <link topic="langoptionssection">[LangOptions] section</link><br/>
  203. <link topic="registrysection">[Registry] section</link><br/>
  204. <link topic="runsection">[Run] section</link><br/>
  205. <link topic="uninstalldeletesection">[UninstallDelete] section</link><br/>
  206. <link topic="runsection">[UninstallRun] section</link><br/>
  207. <link topic="issigkeyssection">[ISSigKeys] section</link><br/>
  208. <link topic="scriptintro">Pascal Scripting: Introduction</link><br/>
  209. <link topic="isppoverview">Inno Setup Preprocessor: Introduction</link>
  210. </p>
  211. </body>
  212. </topic>
  213. <topic name="params" title="Parameters in Sections">
  214. <keyword value="Parameters in Sections" />
  215. <body>
  216. <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>
  217. <precode>
  218. [Files]
  219. Source: "MyProg.exe"; DestDir: "{app}"
  220. Source: "MyProg.chm"; DestDir: "{app}"
  221. Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme
  222. </precode>
  223. <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>
  224. <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>
  225. <p>To embed a double-quote character inside a quoted value, use two consecutive double-quote characters. For example:</p>
  226. <precode>
  227. "This "" contains "" embedded "" quotes"
  228. </precode>
  229. <p>The compiler would see that as:</p>
  230. <precode>
  231. This " contains " embedded " quotes
  232. </precode>
  233. <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>
  234. </body>
  235. </topic>
  236. <topic name="consts" title="Constants">
  237. <keyword value="Constants" />
  238. <keyword value="{\}" anchor="bs" />
  239. <keyword value="{%NAME}" anchor="name" />
  240. <keyword value="{app}" anchor="app" />
  241. <keyword value="{autoappdata}" anchor="autoappdata" />
  242. <keyword value="{autocf}" anchor="autocf" />
  243. <keyword value="{autocf32}" anchor="autocf32" />
  244. <keyword value="{autocf64}" anchor="autocf64" />
  245. <keyword value="{autodesktop}" anchor="autodesktop" />
  246. <keyword value="{autodocs}" anchor="autodocs" />
  247. <keyword value="{autofonts}" anchor="autofonts" />
  248. <keyword value="{autopf}" anchor="autopf" />
  249. <keyword value="{autopf32}" anchor="autopf32" />
  250. <keyword value="{autopf64}" anchor="autopf64" />
  251. <keyword value="{autoprograms}" anchor="autoprograms" />
  252. <keyword value="{autostartmenu}" anchor="autostartmenu" />
  253. <keyword value="{autostartup}" anchor="autostartup" />
  254. <keyword value="{autotemplates}" anchor="autotemplates" />
  255. <keyword value="{cf}" anchor="cf" />
  256. <keyword value="{commoncf32}" anchor="commoncf32" />
  257. <keyword value="{cf32}" anchor="cf32" />
  258. <keyword value="{commoncf64}" anchor="commoncf64" />
  259. <keyword value="{cf64}" anchor="cf64" />
  260. <keyword value="{cm:...}" anchor="cm" />
  261. <keyword value="{cmd}" anchor="cmd" />
  262. <keyword value="{commonappdata}" anchor="commonappdata" />
  263. <keyword value="{commondesktop}" anchor="commondesktop" />
  264. <keyword value="{commondocs}" anchor="commondocs" />
  265. <keyword value="{commonprograms}" anchor="commonprograms" />
  266. <keyword value="{commonstartmenu}" anchor="commonstartmenu" />
  267. <keyword value="{commonstartup}" anchor="commonstartup" />
  268. <keyword value="{commontemplates}" anchor="commontemplates" />
  269. <keyword value="{computername}" anchor="computername" />
  270. <keyword value="{dao}" anchor="dao" />
  271. <keyword value="{dotnet11}" anchor="dotnet11" />
  272. <keyword value="{dotnet20}" anchor="dotnet20" />
  273. <keyword value="{dotnet2032}" anchor="dotnet2032" />
  274. <keyword value="{dotnet2064}" anchor="dotnet2064" />
  275. <keyword value="{dotnet40}" anchor="dotnet40" />
  276. <keyword value=".NET install root" anchor="dotnet40" />
  277. <keyword value="{dotnet4032}" anchor="dotnet4032" />
  278. <keyword value="{dotnet4064}" anchor="dotnet4064" />
  279. <keyword value="{drive:...}" anchor="drive" />
  280. <keyword value="{commonfonts}" anchor="commonfonts" />
  281. <keyword value="{fonts}" anchor="fonts" />
  282. <keyword value="{group}" anchor="group" />
  283. <keyword value="{groupname}" anchor="groupname" />
  284. <keyword value="{hwnd}" anchor="hwnd" />
  285. <keyword value="{ini:...}" anchor="ini" />
  286. <keyword value="{language}" anchor="language" />
  287. <keyword value="{localappdata}" anchor="localappdata" />
  288. <keyword value="{log}" anchor="log" />
  289. <keyword value="{param:...}" anchor="param" />
  290. <keyword value="{commonpf}" anchor="commonpf" />
  291. <keyword value="{pf}" anchor="pf" />
  292. <keyword value="{commonpf32}" anchor="commonpf32" />
  293. <keyword value="{pf32}" anchor="pf32" />
  294. <keyword value="{commonpf64}" anchor="commonpf64" />
  295. <keyword value="{pf64}" anchor="pf64" />
  296. <keyword value="{reg:...}" anchor="reg" />
  297. <keyword value="{sd}" anchor="sd" />
  298. <keyword value="{src}" anchor="src" />
  299. <keyword value="{srcexe}" anchor="srcexe" />
  300. <keyword value="{sys}" anchor="sys" />
  301. <keyword value="{sysnative}" anchor="sysnative" />
  302. <keyword value="{sysuserinfoname}" anchor="sysuserinfoname" />
  303. <keyword value="{sysuserinfoorg}" anchor="sysuserinfoorg" />
  304. <keyword value="{syswow64}" anchor="syswow64" />
  305. <keyword value="{tmp}" anchor="tmp" />
  306. <keyword value="{uninstallexe}" anchor="uninstallexe" />
  307. <keyword value="{userappdata}" anchor="userappdata" />
  308. <keyword value="{usercf}" anchor="usercf" />
  309. <keyword value="{userdesktop}" anchor="userdesktop" />
  310. <keyword value="{userdocs}" anchor="userdocs" />
  311. <keyword value="{userfavorites}" anchor="userfavorites" />
  312. <keyword value="{userfonts}" anchor="userfonts" />
  313. <keyword value="{userinfoname}" anchor="userinfoname" />
  314. <keyword value="{userinfoorg}" anchor="userinfoorg" />
  315. <keyword value="{userinfoserial}" anchor="userinfoserial" />
  316. <keyword value="{username}" anchor="username" />
  317. <keyword value="{userpf}" anchor="userpf" />
  318. <keyword value="{userprograms}" anchor="userprograms" />
  319. <keyword value="{usersavedgames}" anchor="usersavedgames" />
  320. <keyword value="{usersendto}" anchor="usersendto" />
  321. <keyword value="{sendto}" anchor="usersendto" />
  322. <keyword value="{userstartmenu}" anchor="userstartmenu" />
  323. <keyword value="{userstartup}" anchor="userstartup" />
  324. <keyword value="{usertemplates}" anchor="usertemplates" />
  325. <keyword value="{win}" anchor="win" />
  326. <keyword value="{wizardhwnd}" anchor="wizardhwnd" />
  327. <body>
  328. <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>
  329. <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>
  330. <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>
  331. <p>The following is the list of supported constants.</p>
  332. <heading>Directory Constants</heading>
  333. <dl>
  334. <dt><b><a name="app">{app}</a></b></dt>
  335. <dd>
  336. <p>The application directory, which the user selects on the <i>Select Destination Location</i> page of the wizard.<br/>
  337. 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>
  338. </dd>
  339. <dt><b><a name="win">{win}</a></b></dt>
  340. <dd>
  341. <p>The system's Windows directory.<br/>
  342. 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>
  343. </dd>
  344. <dt><b><a name="sys">{sys}</a></b></dt>
  345. <dd>
  346. <p>The system's System32 directory.<br/>
  347. 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>
  348. <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>
  349. </dd>
  350. <dt><b><a name="sysnative">{sysnative}</a></b></dt>
  351. <dd>
  352. <p>On 64-bit Windows, the directory containing 64-bit system files. On 32-bit Windows, the directory containing 32-bit system files.</p>
  353. </dd>
  354. <dt><b><a name="syswow64">{syswow64}</a></b></dt>
  355. <dd>
  356. <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>
  357. <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>
  358. </dd>
  359. <dt><b><a name="src">{src}</a></b></dt>
  360. <dd>
  361. <p>The directory in which the Setup files are located.<br/>
  362. 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>
  363. </dd>
  364. <dt><b><a name="sd">{sd}</a></b></dt>
  365. <dd>
  366. <p>System Drive. The drive Windows is installed on, typically "C:". This directory constant is equivalent to the <i>SystemDrive</i> environment variable.</p>
  367. </dd>
  368. <dt><b><a name="commonpf">{commonpf}</a></b></dt>
  369. <dd>
  370. <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>
  371. </dd>
  372. <dt><b><a name="commonpf32">{commonpf32}</a></b></dt>
  373. <dd>
  374. <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>
  375. </dd>
  376. <dt><b><a name="commonpf64">{commonpf64}</a></b></dt>
  377. <dd>
  378. <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>
  379. </dd>
  380. <dt><b><a name="commoncf">{commoncf}</a></b></dt>
  381. <dd>
  382. <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>
  383. </dd>
  384. <dt><b><a name="commoncf32">{commoncf32}</a></b></dt>
  385. <dd>
  386. <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>
  387. </dd>
  388. <dt><b><a name="commoncf64">{commoncf64}</a></b></dt>
  389. <dd>
  390. <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>
  391. </dd>
  392. <dt><b><a name="tmp">{tmp}</a></b></dt>
  393. <dd>
  394. <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>
  395. </dd>
  396. <dt><b><a name="commonfonts">{commonfonts}</a></b></dt>
  397. <dd>
  398. <p>Fonts directory. Normally named "Fonts" under the Windows directory.</p>
  399. </dd>
  400. <dt><b><a name="dao">{dao}</a></b></dt>
  401. <dd>
  402. <p>DAO directory. This is equivalent to <tt>{commoncf}\Microsoft Shared\DAO</tt>.</p>
  403. </dd>
  404. <dt><b><a name="dotnet11">{dotnet11}</a></b></dt>
  405. <dd>
  406. <p>32-bit .NET Framework version 1.1 install root directory.</p>
  407. <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>
  408. </dd>
  409. <dt><b><a name="dotnet20">{dotnet20}</a></b></dt>
  410. <dd>
  411. <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>
  412. <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>
  413. </dd>
  414. <dt><b><a name="dotnet2032">{dotnet2032}</a></b></dt>
  415. <dd>
  416. <p>32-bit .NET Framework version 2.0-3.5 install root directory.</p>
  417. <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>
  418. </dd>
  419. <dt><b><a name="dotnet2064">{dotnet2064}</a></b></dt>
  420. <dd>
  421. <p>64-bit Windows only: 64-bit .NET Framework version 2.0-3.5 install root directory.</p>
  422. <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>
  423. </dd>
  424. <dt><b><a name="dotnet40">{dotnet40}</a></b></dt>
  425. <dd>
  426. <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>
  427. <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>
  428. <p>Also see <link topic="isxfunc_IsDotNetInstalled">IsDotNetInstalled</link>.</p>
  429. </dd>
  430. <dt><b><a name="dotnet4032">{dotnet4032}</a></b></dt>
  431. <dd>
  432. <p>32-bit .NET Framework version 4.0 and later install root directory.</p>
  433. <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>
  434. </dd>
  435. <dt><b><a name="dotnet4064">{dotnet4064}</a></b></dt>
  436. <dd>
  437. <p>64-bit Windows only: 64-bit .NET Framework version 4.0 and later install root directory.</p>
  438. <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>
  439. </dd>
  440. </dl>
  441. <heading>Shell Folder Constants</heading>
  442. <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>
  443. <p>The "common" constants refer to the <i>All Users</i> profile.</p>
  444. <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>
  445. <!-- <p>Except where otherwise noted, shell folder constants work on all versions of Windows that Inno Setup supports.</p> -->
  446. <dl>
  447. <dt><b><a name="group">{group}</a></b></dt>
  448. <dd>
  449. <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>
  450. </dd>
  451. <dt><b><a name="localappdata">{localappdata}</a></b></dt>
  452. <dd>
  453. <p>The path to the current user's local (non-roaming) Application Data folder.</p>
  454. </dd>
  455. <dt><b><a name="userappdata">{userappdata}</a></b> &amp; <b><a name="commonappdata">{commonappdata}</a></b></dt>
  456. <dd>
  457. <p>The path to the Application Data folder.</p>
  458. </dd>
  459. <dt><b><a name="usercf">{usercf}</a></b></dt>
  460. <dd>
  461. <p>The path to the current user's Common Files folder. 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>
  462. </dd>
  463. <dt><b><a name="userdesktop">{userdesktop}</a></b> &amp; <b><a name="commondesktop">{commondesktop}</a></b></dt>
  464. <dd>
  465. <p>The path to the desktop folder.</p>
  466. </dd>
  467. <dt><b><a name="userdocs">{userdocs}</a></b> &amp; <b><a name="commondocs">{commondocs}</a></b></dt>
  468. <dd>
  469. <p>The path to the My Documents folder.</p>
  470. </dd>
  471. <dt><b><a name="userfavorites">{userfavorites}</a></b></dt>
  472. <dd>
  473. <p>The path to the current user's Favorites folder. (There is no common Favorites folder.)</p>
  474. </dd>
  475. <dt><b><a name="userfonts">{userfonts}</a></b></dt>
  476. <dd>
  477. <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>
  478. </dd>
  479. <dt><b><a name="userpf">{userpf}</a></b></dt>
  480. <dd>
  481. <p>The path to the current user's Program Files folder. 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>
  482. </dd>
  483. <dt><b><a name="userprograms">{userprograms}</a></b> &amp; <b><a name="commonprograms">{commonprograms}</a></b></dt>
  484. <dd>
  485. <p>The path to the Programs folder on the Start Menu.</p>
  486. </dd>
  487. <dt><b><a name="usersavedgames">{usersavedgames}</a></b></dt>
  488. <dd>
  489. <p>The path to the current user's Saved Games folder. (There is no common Saved Games folder.)</p>
  490. </dd>
  491. <dt><b><a name="usersendto">{usersendto}</a></b></dt>
  492. <dd>
  493. <p>The path to the current user's Send To folder. (There is no common Send To folder.)</p>
  494. </dd>
  495. <dt><b><a name="userstartmenu">{userstartmenu}</a></b> &amp; <b><a name="commonstartmenu">{commonstartmenu}</a></b></dt>
  496. <dd>
  497. <p>The path to the top level of the Start Menu.</p>
  498. </dd>
  499. <dt><b><a name="userstartup">{userstartup}</a></b> &amp; <b><a name="commonstartup">{commonstartup}</a></b></dt>
  500. <dd>
  501. <p>The path to the Startup folder on the Start Menu.</p>
  502. </dd>
  503. <dt><b><a name="usertemplates">{usertemplates}</a></b> &amp; <b><a name="commontemplates">{commontemplates}</a></b></dt>
  504. <dd>
  505. <p>The path to the Templates folder.</p>
  506. </dd>
  507. </dl>
  508. <heading>Auto Constants</heading>
  509. <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>
  510. <p>It is recommended you always use these "auto" constants when possible to avoid mistakes.</p>
  511. <indent>
  512. <table>
  513. <tr><td></td><td><u>Administrative</u></td><td><u>Non administrative</u></td></tr>
  514. <tr><td><tt><a name="autoappdata">autoappdata</a></tt></td><td><tt>commonappdata</tt></td><td><tt>userappdata</tt></td></tr>
  515. <tr><td><tt><a name="autocf">autocf</a></tt></td><td><tt>commoncf</tt></td><td><tt>usercf</tt></td></tr>
  516. <tr><td><tt><a name="autocf32">autocf32</a></tt></td><td><tt>commoncf32</tt></td><td><tt>usercf</tt></td></tr>
  517. <tr><td><tt><a name="autocf64">autocf64</a></tt></td><td><tt>commoncf64</tt></td><td><tt>usercf</tt></td></tr>
  518. <tr><td><tt><a name="autodesktop">autodesktop</a></tt></td><td><tt>commondesktop</tt></td><td><tt>userdesktop</tt></td></tr>
  519. <tr><td><tt><a name="autodocs">autodocs</a></tt></td><td><tt>commondocs</tt></td><td><tt>userdocs</tt></td></tr>
  520. <tr><td><tt><a name="autofonts">autofonts</a></tt></td><td><tt>commonfonts</tt></td><td><tt>userfonts</tt></td></tr>
  521. <tr><td><tt><a name="autopf">autopf</a></tt></td><td><tt>commonpf</tt></td><td><tt>userpf</tt></td></tr>
  522. <tr><td><tt><a name="autopf32">autopf32</a></tt></td><td><tt>commonpf32</tt></td><td><tt>userpf</tt></td></tr>
  523. <tr><td><tt><a name="autopf64">autopf64</a></tt></td><td><tt>commonpf64</tt></td><td><tt>userpf</tt></td></tr>
  524. <tr><td><tt><a name="autoprograms">autoprograms</a></tt></td><td><tt>commonprograms</tt></td><td><tt>userprograms</tt></td></tr>
  525. <tr><td><tt><a name="autostartmenu">autostartmenu</a></tt></td><td><tt>commonstartmenu</tt></td><td><tt>userstartmenu</tt></td></tr>
  526. <tr><td><tt><a name="autostartup">autostartup</a></tt></td><td><tt>commonstartup</tt></td><td><tt>userstartup</tt></td></tr>
  527. <tr><td><tt><a name="autotemplates">autotemplates</a></tt></td><td><tt>commontemplates</tt></td><td><tt>usertemplates</tt></td></tr>
  528. </table>
  529. </indent>
  530. <heading>Renamed Constants</heading>
  531. <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>
  532. <indent>
  533. <table>
  534. <tr><td><u>Old name</u></td><td><u>New name</u></td></tr>
  535. <tr><td><tt><a name="cf">cf</a></tt></td><td><tt>commoncf</tt></td></tr>
  536. <tr><td><tt><a name="cf32">cf32</a></tt></td><td><tt>commoncf32</tt></td></tr>
  537. <tr><td><tt><a name="cf64">cf64</a></tt></td><td><tt>commoncf64</tt></td></tr>
  538. <tr><td><tt><a name="fonts">fonts</a></tt></td><td><tt>commonfonts</tt></td></tr>
  539. <tr><td><tt><a name="pf">pf</a></tt></td><td><tt>commonpf</tt></td></tr>
  540. <tr><td><tt><a name="pf32">pf32</a></tt></td><td><tt>commonpf32</tt></td></tr>
  541. <tr><td><tt><a name="pf64">pf64</a></tt></td><td><tt>commonpf64</tt></td></tr>
  542. <tr><td><tt><a name="sendto">sendto</a></tt></td><td><tt>usersendto</tt></td></tr>
  543. </table>
  544. </indent>
  545. <heading>Other Constants</heading>
  546. <dl>
  547. <dt><b><a name="bs">{\}</a></b></dt>
  548. <dd>
  549. <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>
  550. </dd>
  551. <dt><b><a name="name">{%<i>NAME</i>|<i>DefaultValue</i>}</a></b></dt>
  552. <dd>
  553. <p>Embeds the value of an environment variable.</p>
  554. <ul>
  555. <li><i>NAME</i> specifies the name of the environment variable to use.</li>
  556. <li><i>DefaultValue</i> determines the string to embed if the specified variable does not exist on the user's system.</li>
  557. <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>
  558. <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>
  559. </ul>
  560. <examples>
  561. <pre>
  562. {%COMSPEC}
  563. {%PROMPT|$P$G}
  564. </pre>
  565. </examples>
  566. </dd>
  567. <dt><b><a name="cmd">{cmd}</a></b></dt>
  568. <dd>
  569. <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>
  570. </dd>
  571. <dt><b><a name="computername">{computername}</a></b></dt>
  572. <dd>
  573. <p>The name of the computer the Setup or Uninstall program is running on (as returned by the Windows <i>GetComputerName</i> function).</p>
  574. </dd>
  575. <dt><b><a name="drive">{drive:<i>Path</i>}</a></b></dt>
  576. <dd>
  577. <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>
  578. <ul>
  579. <li><i>Path</i> specifies the path.</li>
  580. <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>
  581. <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>
  582. </ul>
  583. <examples>
  584. <pre>
  585. {drive:{src}}
  586. {drive:c:\path\file}
  587. {drive:\\server\share\path\file}
  588. </pre>
  589. </examples>
  590. </dd>
  591. <dt><b><a name="groupname">{groupname}</a></b></dt>
  592. <dd>
  593. <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>
  594. </dd>
  595. <dt><b><a name="hwnd">{hwnd}</a></b></dt>
  596. <dd>
  597. <p><i>Feature removed in 6.4.</i> Previously translated to the window handle of the background window that could be enabled via the <link topic="setup_windowvisible">WindowVisible</link> directive.</p>
  598. </dd>
  599. <dt><b><a name="wizardhwnd">{wizardhwnd}</a></b></dt>
  600. <dd>
  601. <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>
  602. </dd>
  603. <dt><b><a name="ini">{ini:<i>Filename</i>,<i>Section</i>,<i>Key</i>|<i>DefaultValue</i>}</a></b></dt>
  604. <dd>
  605. <p>Embeds a value from an .INI file.</p>
  606. <ul>
  607. <li><i>Filename</i> specifies the name of the .INI file to read from.</li>
  608. <li><i>Section</i> specifies the name of the section to read from.</li>
  609. <li><i>Key</i> specifies the name of the key to read.</li>
  610. <li><i>DefaultValue</i> determines the string to embed if the specified key does not exist.</li>
  611. <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>
  612. <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>
  613. </ul>
  614. <example>
  615. <pre>{ini:{win}\MyProg.ini,Settings,Path|{autopf}\My Program}</pre>
  616. </example>
  617. </dd>
  618. <dt><b><a name="language">{language}</a></b></dt>
  619. <dd>
  620. <p>The internal name of the selected language. See the <link topic="languagessection">[Languages] section</link> documentation for more information.</p>
  621. </dd>
  622. <dt><b><a name="cm">{cm:<i>MessageName</i>}</a></b><br/>
  623. <b>{cm:<i>MessageName</i>,<i>Arguments</i>}</b></dt>
  624. <dd>
  625. <p>Embeds a custom message value based on the active language.</p>
  626. <ul>
  627. <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>
  628. <li><i>Arguments</i> optionally specifies a comma separated list of arguments to the message value.</li>
  629. <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>
  630. <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>
  631. </ul>
  632. <example>
  633. <pre>{cm:LaunchProgram,Inno Setup}</pre>
  634. </example>
  635. <p>The example above translates to "Launch Inno Setup" if English is the active language.</p>
  636. </dd>
  637. <dt><b><a name="reg">{reg:HK<i>xx</i>\<i>SubkeyName</i>,<i>ValueName</i>|<i>DefaultValue</i>}</a></b></dt>
  638. <dd>
  639. <p>Embeds a registry value.</p>
  640. <ul>
  641. <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>
  642. <li><i>SubkeyName</i> specifies the name of the subkey to read from.</li>
  643. <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>
  644. <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) and also not a REG_DWORD-type.</li>
  645. <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>
  646. <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>
  647. <li>If the value is not a string type (REG_SZ or REG_EXPAND_SZ) but a REG_DWORD-type then its value as a decimal string is embedded.</li>
  648. </ul>
  649. <example>
  650. <pre>{reg:HKA\Software\My Program,Path|{autopf}\My Program}</pre>
  651. </example>
  652. </dd>
  653. <dt><b><a name="param">{param:<i>ParamName</i>|<i>DefaultValue</i>}</a></b></dt>
  654. <dd>
  655. <p>Embeds a command line parameter value.</p>
  656. <ul>
  657. <li><i>ParamName</i> specifies the name of the command line parameter to read from.</li>
  658. <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>
  659. <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>
  660. <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>
  661. </ul>
  662. <example>
  663. <pre>{param:Path|{autopf}\My Program}</pre>
  664. </example>
  665. <p>The example above translates to <tt>c:\My Program</tt> if the command line <tt>/Path="c:\My Program"</tt> was specified.</p>
  666. </dd>
  667. <dt><b><a name="srcexe">{srcexe}</a></b></dt>
  668. <dd>
  669. <p>The full pathname of the Setup program file, e.g. "C:\SETUP.EXE".</p>
  670. </dd>
  671. <dt><b><a name="uninstallexe">{uninstallexe}</a></b></dt>
  672. <dd>
  673. <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>
  674. </dd>
  675. <dt><b><a name="sysuserinfoname">{sysuserinfoname}</a></b><br/>
  676. <b><a name="sysuserinfoorg">{sysuserinfoorg}</a></b></dt>
  677. <dd>
  678. <p>The name and organization, respectively, that Windows is registered to. This information is read from the registry.</p>
  679. </dd>
  680. <dt><b><a name="userinfoname">{userinfoname}</a></b><br/>
  681. <b><a name="userinfoorg">{userinfoorg}</a></b><br/>
  682. <b><a name="userinfoserial">{userinfoserial}</a></b></dt>
  683. <dd>
  684. <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>
  685. </dd>
  686. <dt><b><a name="username">{username}</a></b></dt>
  687. <dd>
  688. <p>The name of the user who is running Setup or Uninstall program (as returned by the <i>GetUserName</i> function).</p>
  689. </dd>
  690. <dt><b><a name="log">{log}</a></b></dt>
  691. <dd>
  692. <p>The log file name, or an empty string if <link topic="setup_setuplogging">logging</link> to a log file is not enabled.</p>
  693. </dd>
  694. </dl>
  695. </body>
  696. </topic>
  697. <topic name="commonparams" title="Common Parameters">
  698. <keyword value="Common Parameters" />
  699. <body>
  700. <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>
  701. <paramlist>
  702. <param name="Languages">
  703. <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>
  704. <p>An entry without a <tt>Languages</tt> parameter is always processed, unless other parameters say it shouldn't be.</p>
  705. <p>Besides space separated lists, you may also use boolean expressions containing language names. See <link topic="componentstasksparams">Components and Tasks parameters</link> for examples of boolean expressions.</p>
  706. <example>
  707. <pre>Languages: en nl</pre>
  708. </example>
  709. </param>
  710. <param name="MinVersion">
  711. <p>A minimum <link topic="winvernotes">Windows version</link> for the entry to be processed. If you use <tt>0</tt> 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>
  712. <p>An entry without a <tt>MinVersion</tt> parameter is always processed, unless other parameters say it shouldn't be.</p>
  713. <example>
  714. <pre>MinVersion: 6.2</pre>
  715. </example>
  716. </param>
  717. <param name="OnlyBelowVersion">
  718. <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 use <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 <tt>0</tt> 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>
  719. <p>If <tt>0</tt> is not used: should be higher than <tt>6.1</tt> otherwise the entry is never processed. (Windows Vista/Server 2008 are no longer supported.)</p>
  720. <p>An entry without an <tt>OnlyBelowVersion</tt> parameter is always processed, unless other parameters say it shouldn't be.</p>
  721. <example>
  722. <pre>OnlyBelowVersion: 6.2</pre>
  723. </example>
  724. </param>
  725. </paramlist>
  726. </body>
  727. </topic>
  728. <topic name="componentstasksparams" title="Components and Tasks Parameters">
  729. <keyword value="Components and Tasks Parameters" />
  730. <body>
  731. <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>
  732. <paramlist>
  733. <param name="Components">
  734. <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>
  735. <p>An entry without a <tt>Components</tt> parameter is always processed, unless other parameters say it shouldn't be.</p>
  736. <example>
  737. <pre>
  738. [Files]
  739. Source: "MyProg.exe"; DestDir: "{app}"; Components: main
  740. Source: "MyProg.chm"; DestDir: "{app}"; Components: help
  741. Source: "Readme.txt"; DestDir: "{app}"
  742. </pre>
  743. </example>
  744. </param>
  745. <param name="Tasks">
  746. <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>
  747. <p>An entry without a <tt>Tasks</tt> parameter is always processed, unless other parameters say it shouldn't be.</p>
  748. <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>
  749. <example>
  750. <pre>
  751. [Icons]
  752. Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"; Components: main; Tasks: startmenu
  753. Name: "{group}\My Program Help"; Filename: "{app}\MyProg.chm"; Components: help; Tasks: startmenu
  754. Name: "{commondesktop}\My Program"; Filename: "{app}\MyProg.exe"; Components: main; Tasks: desktopicon
  755. </pre>
  756. </example>
  757. </param>
  758. </paramlist>
  759. <p><br/>
  760. Besides space separated lists, you may also use boolean expressions containing component or task names as Components and Tasks parameters. Supported operators include <tt>not</tt>, <tt>and</tt>, and <tt>or</tt>. For example:</p>
  761. <precode>
  762. [Components]
  763. Name: a; Description: a
  764. Name: b; Description: b
  765. [Tasks]
  766. Name: p; Description: a or b; Components: a or b
  767. Name: q; Description: a and b; Components: a and b
  768. Name: r; Description: not a or b; Components: not a or b
  769. Name: s; Description: not (a or b); Components: not (a or b)
  770. Name: t; Description: a or b - old style; Components: a b
  771. </precode>
  772. </body>
  773. </topic>
  774. <topic name="setupsection" title="[Setup] section">
  775. <keyword value="[Setup] section" />
  776. <keyword value="Setup" />
  777. <body>
  778. <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>
  779. <precode>
  780. [Setup]
  781. AppName=My Program
  782. AppVersion=1.5
  783. DefaultDirName={autopf}\My Program
  784. DefaultGroupName=My Program
  785. </precode>
  786. <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>
  787. <p><br/>The following directives can be placed in the <tt>[Setup]</tt> section:</p>
  788. <p>(<b>bold</b> = required)</p>
  789. <heading>Compiler-related</heading>
  790. <ul appearance="compact">
  791. <li><link topic="setup_aslrcompatible">ASLRCompatible</link></li>
  792. <li><link topic="setup_compression">Compression</link></li>
  793. <li><link topic="setup_compressionthreads">CompressionThreads</link></li>
  794. <li><link topic="setup_depcompatible">DEPCompatible</link></li>
  795. <li><link topic="setup_disableprecompiledfileverifications">DisablePrecompiledFileVerifications</link></li>
  796. <li><link topic="setup_diskclustersize">DiskClusterSize</link></li>
  797. <li><link topic="setup_diskslicesize">DiskSliceSize</link></li>
  798. <li><link topic="setup_diskspanning">DiskSpanning</link></li>
  799. <li><link topic="setup_encryption">Encryption</link></li>
  800. <li><link topic="setup_internalcompresslevel">InternalCompressLevel</link></li>
  801. <li><link topic="setup_lzmaalgorithm">LZMAAlgorithm</link></li>
  802. <li><link topic="setup_lzmablocksize">LZMABlockSize</link></li>
  803. <li><link topic="setup_lzmadictionarysize">LZMADictionarySize</link></li>
  804. <li><link topic="setup_lzmamatchfinder">LZMAMatchFinder</link></li>
  805. <li><link topic="setup_lzmanumblockthreads">LZMANumBlockThreads</link></li>
  806. <li><link topic="setup_lzmanumfastbytes">LZMANumFastBytes</link></li>
  807. <li><link topic="setup_lzmauseseparateprocess">LZMAUseSeparateProcess</link></li>
  808. <li><link topic="setup_mergeduplicatefiles">MergeDuplicateFiles</link></li>
  809. <li><link topic="setup_missingmessageswarning">MissingMessagesWarning</link></li>
  810. <li><link topic="setup_missingrunonceidswarning">MissingRunOnceIdsWarning</link></li>
  811. <li><link topic="setup_notrecognizedmessageswarning">NotRecognizedMessagesWarning</link></li>
  812. <li><link topic="setup_output">Output</link></li>
  813. <li><link topic="setup_outputbasefilename">OutputBaseFilename</link></li>
  814. <li><link topic="setup_outputdir">OutputDir</link></li>
  815. <li><link topic="setup_outputmanifestfile">OutputManifestFile</link></li>
  816. <li><link topic="setup_reservebytes">ReserveBytes</link></li>
  817. <li><link topic="setup_signeduninstaller">SignedUninstaller</link></li>
  818. <li><link topic="setup_signeduninstallerdir">SignedUninstallerDir</link></li>
  819. <li><link topic="setup_signtool">SignTool</link></li>
  820. <li><link topic="setup_signtoolminimumtimebetween">SignToolMinimumTimeBetween</link></li>
  821. <li><link topic="setup_signtoolretrycount">SignToolRetryCount</link></li>
  822. <li><link topic="setup_signtoolretrydelay">SignToolRetryDelay</link></li>
  823. <li><link topic="setup_signtoolrunminimized">SignToolRunMinimized</link></li>
  824. <li><link topic="setup_slicesperdisk">SlicesPerDisk</link></li>
  825. <li><link topic="setup_solidcompression">SolidCompression</link></li>
  826. <li><link topic="setup_sourcedir">SourceDir</link></li>
  827. <li><link topic="setup_terminalservicesaware">TerminalServicesAware</link></li>
  828. <li><link topic="setup_useduserareaswarning">UsedUserAreasWarning</link></li>
  829. <li><link topic="setup_usesetupldr">UseSetupLdr</link></li>
  830. <li><link topic="setup_versioninfocompany">VersionInfoCompany</link></li>
  831. <li><link topic="setup_versioninfocopyright">VersionInfoCopyright</link></li>
  832. <li><link topic="setup_versioninfodescription">VersionInfoDescription</link></li>
  833. <li><link topic="setup_versioninfooriginalfilename">VersionInfoOriginalFileName</link></li>
  834. <li><link topic="setup_versioninfoproductname">VersionInfoProductName</link></li>
  835. <li><link topic="setup_versioninfoproducttextversion">VersionInfoProductTextVersion</link></li>
  836. <li><link topic="setup_versioninfoproductversion">VersionInfoProductVersion</link></li>
  837. <li><link topic="setup_versioninfotextversion">VersionInfoTextVersion</link></li>
  838. <li><link topic="setup_versioninfoversion">VersionInfoVersion</link></li>
  839. </ul>
  840. <heading>Installer-related</heading>
  841. <p><b>Functional:</b> These directives affect the operation of the Setup program, or are saved and used later by the uninstaller.</p>
  842. <ul appearance="compact">
  843. <li><link topic="setup_allowcancelduringinstall">AllowCancelDuringInstall</link></li>
  844. <li><link topic="setup_allownetworkdrive">AllowNetworkDrive</link></li>
  845. <li><link topic="setup_allownoicons">AllowNoIcons</link></li>
  846. <li><link topic="setup_allowrootdirectory">AllowRootDirectory</link></li>
  847. <li><link topic="setup_allowuncpath">AllowUNCPath</link></li>
  848. <li><link topic="setup_alwaysrestart">AlwaysRestart</link></li>
  849. <li><link topic="setup_alwaysshowcomponentslist">AlwaysShowComponentsList</link></li>
  850. <li><link topic="setup_alwaysshowdironreadypage">AlwaysShowDirOnReadyPage</link></li>
  851. <li><link topic="setup_alwaysshowgrouponreadypage">AlwaysShowGroupOnReadyPage</link></li>
  852. <li><link topic="setup_alwaysusepersonalgroup">AlwaysUsePersonalGroup</link></li>
  853. <li><link topic="setup_appenddefaultdirname">AppendDefaultDirName</link></li>
  854. <li><link topic="setup_appenddefaultgroupname">AppendDefaultGroupName</link></li>
  855. <li><link topic="setup_appcomments">AppComments</link></li>
  856. <li><link topic="setup_appcontact">AppContact</link></li>
  857. <li><link topic="setup_appid">AppId</link></li>
  858. <li><link topic="setup_appmodifypath">AppModifyPath</link></li>
  859. <li><link topic="setup_appmutex">AppMutex</link></li>
  860. <li><link topic="setup_appname"><b>AppName</b></link></li>
  861. <li><link topic="setup_apppublisher">AppPublisher</link></li>
  862. <li><link topic="setup_apppublisherurl">AppPublisherURL</link></li>
  863. <li><link topic="setup_appreadmefile">AppReadmeFile</link></li>
  864. <li><link topic="setup_appsupportphone">AppSupportPhone</link></li>
  865. <li><link topic="setup_appsupporturl">AppSupportURL</link></li>
  866. <li><link topic="setup_appupdatesurl">AppUpdatesURL</link></li>
  867. <li><link topic="setup_appvername">AppVerName</link></li>
  868. <li><link topic="setup_appversion"><b>AppVersion</b></link></li>
  869. <li><link topic="setup_architecturesallowed">ArchitecturesAllowed</link></li>
  870. <li><link topic="setup_architecturesinstallin64bitmode">ArchitecturesInstallIn64BitMode</link></li>
  871. <li><link topic="setup_archiveextraction">ArchiveExtraction</link></li>
  872. <li><link topic="setup_changesassociations">ChangesAssociations</link></li>
  873. <li><link topic="setup_changesenvironment">ChangesEnvironment</link></li>
  874. <li><link topic="setup_closeapplications">CloseApplications</link></li>
  875. <li><link topic="setup_closeapplicationsfilter">CloseApplicationsFilter</link></li>
  876. <li><link topic="setup_closeapplicationsfilterexcludes">CloseApplicationsFilterExcludes</link></li>
  877. <li><link topic="setup_createappdir">CreateAppDir</link></li>
  878. <li><link topic="setup_createuninstallregkey">CreateUninstallRegKey</link></li>
  879. <li><link topic="setup_defaultdialogfontname">DefaultDialogFontName</link></li>
  880. <li><link topic="setup_defaultdirname">DefaultDirName</link></li>
  881. <li><link topic="setup_defaultgroupname">DefaultGroupName</link></li>
  882. <li><link topic="setup_defaultuserinfoname">DefaultUserInfoName</link></li>
  883. <li><link topic="setup_defaultuserinfoorg">DefaultUserInfoOrg</link></li>
  884. <li><link topic="setup_defaultuserinfoserial">DefaultUserInfoSerial</link></li>
  885. <li><link topic="setup_direxistswarning">DirExistsWarning</link></li>
  886. <li><link topic="setup_disabledirpage">DisableDirPage</link></li>
  887. <li><link topic="setup_disablefinishedpage">DisableFinishedPage</link></li>
  888. <li><link topic="setup_disableprogramgrouppage">DisableProgramGroupPage</link></li>
  889. <li><link topic="setup_disablereadymemo">DisableReadyMemo</link></li>
  890. <li><link topic="setup_disablereadypage">DisableReadyPage</link></li>
  891. <li><link topic="setup_disablestartupprompt">DisableStartupPrompt</link></li>
  892. <li><link topic="setup_disablewelcomepage">DisableWelcomePage</link></li>
  893. <li><link topic="setup_enabledirdoesntexistwarning">EnableDirDoesntExistWarning</link></li>
  894. <li><link topic="setup_extradiskspacerequired">ExtraDiskSpaceRequired</link></li>
  895. <li><link topic="setup_infoafterfile">InfoAfterFile</link></li>
  896. <li><link topic="setup_infobeforefile">InfoBeforeFile</link></li>
  897. <li><link topic="setup_languagedetectionmethod">LanguageDetectionMethod</link></li>
  898. <li><link topic="setup_licensefile">LicenseFile</link></li>
  899. <li><link topic="setup_minversion">MinVersion</link></li>
  900. <li><link topic="setup_onlybelowversion">OnlyBelowVersion</link></li>
  901. <li><link topic="setup_password">Password</link></li>
  902. <li><link topic="setup_privilegesrequired">PrivilegesRequired</link></li>
  903. <li><link topic="setup_privilegesrequiredoverridesallowed">PrivilegesRequiredOverridesAllowed</link></li>
  904. <li><link topic="setup_restartapplications">RestartApplications</link></li>
  905. <li><link topic="setup_restartifneededbyrun">RestartIfNeededByRun</link></li>
  906. <li><link topic="setup_setuplogging">SetupLogging</link></li>
  907. <li><link topic="setup_setupmutex">SetupMutex</link></li>
  908. <li><link topic="setup_showlanguagedialog">ShowLanguageDialog</link></li>
  909. <li><link topic="setup_timestamprounding">TimeStampRounding</link></li>
  910. <li><link topic="setup_timestampsinutc">TimeStampsInUTC</link></li>
  911. <li><link topic="setup_touchdate">TouchDate</link></li>
  912. <li><link topic="setup_touchtime">TouchTime</link></li>
  913. <li><link topic="setup_uninstallable">Uninstallable</link></li>
  914. <li><link topic="setup_uninstalldisplayicon">UninstallDisplayIcon</link></li>
  915. <li><link topic="setup_uninstalldisplayname">UninstallDisplayName</link></li>
  916. <li><link topic="setup_uninstalldisplaysize">UninstallDisplaySize</link></li>
  917. <li><link topic="setup_uninstallfilesdir">UninstallFilesDir</link></li>
  918. <li><link topic="setup_uninstalllogging">UninstallLogging</link></li>
  919. <li><link topic="setup_uninstalllogmode">UninstallLogMode</link></li>
  920. <li><link topic="setup_uninstallrestartcomputer">UninstallRestartComputer</link></li>
  921. <li><link topic="setup_updateuninstalllogappname">UpdateUninstallLogAppName</link></li>
  922. <li><link topic="setup_usepreviousappdir">UsePreviousAppDir</link></li>
  923. <li><link topic="setup_usepreviousgroup">UsePreviousGroup</link></li>
  924. <li><link topic="setup_usepreviouslanguage">UsePreviousLanguage</link></li>
  925. <li><link topic="setup_usepreviousprivileges">UsePreviousPrivileges</link></li>
  926. <li><link topic="setup_useprevioussetuptype">UsePreviousSetupType</link></li>
  927. <li><link topic="setup_useprevioustasks">UsePreviousTasks</link></li>
  928. <li><link topic="setup_useprevioususerinfo">UsePreviousUserInfo</link></li>
  929. <li><link topic="setup_userinfopage">UserInfoPage</link></li>
  930. </ul>
  931. <p><b>Cosmetic:</b> These directives only affect the appearance of the Setup program.</p>
  932. <ul appearance="compact">
  933. <li><link topic="setup_appcopyright">AppCopyright</link></li>
  934. <li><link topic="setup_flatcomponentslist">FlatComponentsList</link></li>
  935. <li><link topic="setup_setupiconfile">SetupIconFile</link></li>
  936. <li><link topic="setup_showcomponentsizes">ShowComponentSizes</link></li>
  937. <li><link topic="setup_showtaskstreelines">ShowTasksTreeLines</link></li>
  938. <li><link topic="setup_wizardimagealphaformat">WizardImageAlphaFormat</link></li>
  939. <li><link topic="setup_wizardimagefile">WizardImageFile</link></li>
  940. <li><link topic="setup_wizardimagestretch">WizardImageStretch</link></li>
  941. <li><link topic="setup_wizardresizable">WizardResizable</link></li>
  942. <li><link topic="setup_wizardsizepercent">WizardSizePercent</link></li>
  943. <li><link topic="setup_wizardsmallimagefile">WizardSmallImageFile</link></li>
  944. <li><link topic="setup_wizardstyle">WizardStyle</link></li>
  945. </ul>
  946. <heading>Obsolete</heading>
  947. <p>These directives are obsolete and should not be used in any new scripts.</p>
  948. <ul appearance="compact">
  949. <li><link topic="setup_alwayscreateuninstallicon">AlwaysCreateUninstallIcon</link></li>
  950. <li><link topic="setup_windowvisible">BackColor</link></li>
  951. <li><link topic="setup_windowvisible">BackColor2</link></li>
  952. <li><link topic="setup_windowvisible">BackColorDirection</link></li>
  953. <li><link topic="setup_windowvisible">BackSolid</link></li>
  954. <li><link topic="setup_disableappenddir">DisableAppendDir</link></li>
  955. <li><link topic="setup_dontmergeduplicatefiles">DontMergeDuplicateFiles</link></li>
  956. <li><link topic="setup_messagesfile">MessagesFile</link></li>
  957. <li><link topic="setup_uninstalliconfile">UninstallIconFile</link></li>
  958. <li><link topic="setup_uninstalliconname">UninstallIconName</link></li>
  959. <li><link topic="setup_uninstallstyle">UninstallStyle</link></li>
  960. <li><link topic="setup_windowvisible">WindowResizable</link></li>
  961. <li><link topic="setup_windowvisible">WindowShowCaption</link></li>
  962. <li><link topic="setup_windowvisible">WindowStartMaximized</link></li>
  963. <li><link topic="setup_windowvisible">WindowVisible</link></li>
  964. <li><link topic="setup_wizardimagebackcolor">WizardImageBackColor</link></li>
  965. <li><link topic="setup_wizardsmallimagebackcolor">WizardSmallImageBackColor</link></li>
  966. </ul>
  967. </body>
  968. </topic>
  969. <topic name="typessection" title="[Types] section">
  970. <keyword value="[Types] section" />
  971. <keyword value="Types" />
  972. <body>
  973. <p>This section is optional. It defines all of the setup types Setup will show on the <i>Select Components</i> page of the wizard. During compilation a set of default setup types is created if you define components in a <link topic="componentssection">[Components] section</link> but don't define types. If you are using the default (English) messages file, these types are the same as the types in the example below.</p>
  974. <p>Here is an example of a <tt>[Types]</tt> section:</p>
  975. <precode>
  976. [Types]
  977. Name: "full"; Description: "Full installation"
  978. Name: "compact"; Description: "Compact installation"
  979. Name: "custom"; Description: "Custom installation"; Flags: iscustom
  980. </precode>
  981. <p>The following is a list of the supported <link topic="params">parameters</link>:</p>
  982. <paramlist>
  983. <param name="Name" required="yes">
  984. <p>The internal name of the type. Used as parameter for components in the [Components] section to instruct Setup to which types a component belongs.</p>
  985. <example>
  986. <pre>Name: "full"</pre>
  987. </example>
  988. </param>
  989. <param name="Description" required="yes">
  990. <p>The description of the type, which can include constants. This description is shown during installation.</p>
  991. <example>
  992. <pre>Description: "Full installation"</pre>
  993. </example>
  994. </param>
  995. <param name="Flags">
  996. <p>This parameter is a set of extra options. Multiple options may be used by separating them by spaces. The following options are supported:</p>
  997. <flaglist>
  998. <flag name="iscustom">
  999. <p>Instructs Setup that the type is a custom type. Whenever the end user manually changes the components selection during installation, Setup will set the setup type to the custom type. Note that if you don't define a custom type, Setup will only allow the user to choose a setup type and they can no longer manually select/unselect components.</p>
  1000. <p>Only one type may include this flag.</p>
  1001. </flag>
  1002. </flaglist>
  1003. <example>
  1004. <pre>Flags: iscustom</pre>
  1005. </example>
  1006. </param>
  1007. </paramlist>
  1008. <p><b><link topic="commonparams">Common Parameters</link></b></p>
  1009. </body>
  1010. </topic>
  1011. <topic name="componentssection" title="[Components] section">
  1012. <keyword value="[Components] section" />
  1013. <keyword value="Components" />
  1014. <body>
  1015. <p>This section is optional. It defines all of the components Setup will show on the <i>Select Components</i> page of the wizard for setup type customization.</p>
  1016. <p>By itself a component does nothing: it needs to be 'linked' to other installation entries. See <link topic="componentstasksparams">Components and Tasks Parameters</link>.</p>
  1017. <p>Here is an example of a <tt>[Components]</tt> section:</p>
  1018. <precode>
  1019. [Components]
  1020. Name: "main"; Description: "Main Files"; Types: full compact custom; Flags: fixed
  1021. Name: "help"; Description: "Help Files"; Types: full
  1022. Name: "help\english"; Description: "English"; Types: full
  1023. Name: "help\dutch"; Description: "Dutch"; Types: full
  1024. </precode>
  1025. <p>The example above generates four components: A "main" component which gets installed if the end user selects a type with name "full" or "compact" and a "help" component which has two child components and only gets installed if the end user selects the "full" type.</p>
  1026. <p>The following is a list of the supported <link topic="params">parameters</link>:</p>
  1027. <paramlist>
  1028. <param name="Name" required="yes">
  1029. <p>The internal name of the component.</p>
  1030. <p>The total number of \ or / characters in the name of the component is called the level of the component. Any component with a level of 1 or more is a child component. The component listed before the child component with a level of 1 less than the child component, is the parent component. Other components with the same parent component as the child component are sibling components.</p>
  1031. <p>A child component can't be selected if its parent component isn't selected. A parent component can't be selected if none of its children are selected, unless a <tt>Components</tt> parameter directly references the parent component or the parent component includes the <tt>checkablealone</tt> flag.</p>
  1032. <p>If sibling components have the <tt>exclusive</tt> flag, only one of them can be selected.</p>
  1033. <example>
  1034. <pre>Name: "help"</pre>
  1035. </example>
  1036. </param>
  1037. <param name="Description" required="yes">
  1038. <p>The description of the component, which can include constants. This description is shown to the end user during installation.</p>
  1039. <example>
  1040. <pre>Description: "Help Files"</pre>
  1041. </example>
  1042. </param>
  1043. <param name="Types">
  1044. <p>A space separated list of types this component belongs to. If the end user selects a type from this list, this component will be installed.</p>
  1045. <p>If the <tt>fixed</tt> flag isn't used (see below), any custom types (types using the <tt>iscustom</tt> flag) in this list are ignored by Setup.</p>
  1046. <example>
  1047. <pre>Types: full compact</pre>
  1048. </example>
  1049. </param>
  1050. <param name="ExtraDiskSpaceRequired">
  1051. <p>The extra disk space required by this component, similar to the <link topic="setup_extradiskspacerequired">ExtraDiskSpaceRequired</link> directive for the [Setup] section.</p>
  1052. <p>Supports digit separators and set in bytes. (1048576 bytes = 1 megabyte)</p>
  1053. <example>
  1054. <pre>ExtraDiskSpaceRequired: 1_048_576</pre>
  1055. </example>
  1056. </param>
  1057. <param name="Flags">
  1058. <p>This parameter is a set of extra options. Multiple options may be used by separating them by spaces. The following options are supported:</p>
  1059. <flaglist>
  1060. <flag name="checkablealone">
  1061. <p>Specifies that the component can be checked when none of its children are. By default, if no <tt>Components</tt> parameter directly references the component, unchecking all of the component's children will cause the component to become unchecked.</p>
  1062. </flag>
  1063. <flag name="dontinheritcheck">
  1064. <p>Specifies that the component should not automatically become checked when its parent is checked. Has no effect on top-level components, and cannot be combined with the <tt>exclusive</tt> flag.</p>
  1065. </flag>
  1066. <flag name="exclusive">
  1067. <p>Instructs Setup that this component is mutually exclusive with sibling components that also have the <tt>exclusive</tt> flag.</p>
  1068. </flag>
  1069. <flag name="fixed">
  1070. <p>Instructs Setup that this component can not be manually selected or unselected by the end user during installation.</p>
  1071. </flag>
  1072. <flag name="restart">
  1073. <p>Instructs Setup to ask the user to restart the system if this component is installed, regardless of whether this is necessary (for example because of [Files] section entries with the <tt>restartreplace</tt> flag). Like <link topic="setup_alwaysrestart">AlwaysRestart</link> but per component.</p>
  1074. </flag>
  1075. <flag name="disablenouninstallwarning">
  1076. <p>Instructs Setup not to warn the user that this component will not be uninstalled after they deselected this component when it's already installed on his/her machine.</p>
  1077. <p>Depending on the complexity of your components, you can try to use the [InstallDelete] section and this flag to automatically 'uninstall' deselected components.</p>
  1078. </flag>
  1079. </flaglist>
  1080. <example>
  1081. <pre>Flags: fixed</pre>
  1082. </example>
  1083. </param>
  1084. </paramlist>
  1085. <p><b><link topic="commonparams">Common Parameters</link></b></p>
  1086. </body>
  1087. </topic>
  1088. <topic name="taskssection" title="[Tasks] section">
  1089. <keyword value="[Tasks] section" />
  1090. <keyword value="Tasks" />
  1091. <body>
  1092. <p>This section is optional. It defines all of the user-customizable tasks Setup will perform during installation. These tasks appear as check boxes and radio buttons on the <i>Select Additional Tasks</i> wizard page.</p>
  1093. <p>By itself a task does nothing: it needs to be 'linked' to other installation entries. See <link topic="componentstasksparams">Components and Tasks Parameters</link>.</p>
  1094. <p>Here is an example of a <tt>[Tasks]</tt> section:</p>
  1095. <precode>
  1096. [Tasks]
  1097. Name: desktopicon; Description: "Create a &amp;desktop icon"; GroupDescription: "Additional icons:"; Components: main
  1098. Name: desktopicon\common; Description: "For all users"; GroupDescription: "Additional icons:"; Components: main; Flags: exclusive
  1099. Name: desktopicon\user; Description: "For the current user only"; GroupDescription: "Additional icons:"; Components: main; Flags: exclusive unchecked
  1100. Name: quicklaunchicon; Description: "Create a &amp;Quick Launch icon"; GroupDescription: "Additional icons:"; Components: main; Flags: unchecked
  1101. Name: associate; Description: "&amp;Associate files"; GroupDescription: "Other tasks:"; Flags: unchecked
  1102. </precode>
  1103. <p>The following is a list of the supported <link topic="params">parameters</link>:</p>
  1104. <paramlist>
  1105. <param name="Name" required="yes">
  1106. <p>The internal name of the task.</p>
  1107. <p>The total number of \ or / characters in the name of the task is called the level of the task. Any task with a level of 1 or more is a child task. The task listed before the child task with a level of 1 less than the child task, is the parent task. Other tasks with the same parent task as the child task are sibling tasks.</p>
  1108. <p>A child task can't be selected if its parent task isn't selected. A parent task can't be selected if none of its children are selected, unless a <tt>Tasks</tt> parameter directly references the parent task or the parent task includes the <tt>checkablealone</tt> flag.</p>
  1109. <p>If sibling tasks have the <tt>exclusive</tt> flag, only one of them can be selected.</p>
  1110. <example>
  1111. <pre>Name: "desktopicon"</pre>
  1112. </example>
  1113. </param>
  1114. <param name="Description" required="yes">
  1115. <p>The description of the task, which can include constants. This description is shown to the end user during installation.</p>
  1116. <example>
  1117. <pre>Description: "Create a &amp;desktop icon"</pre>
  1118. </example>
  1119. </param>
  1120. <param name="GroupDescription">
  1121. <p>The group description of a group of tasks, which can include constants. Consecutive tasks with the same group description will be grouped below a text label. The text label shows the group description.</p>
  1122. <example>
  1123. <pre>GroupDescription: "Additional icons"</pre>
  1124. </example>
  1125. </param>
  1126. <param name="Components">
  1127. <p>A space separated list of components this task belongs to. If the end user selects a component from this list, this task will be shown. A task entry without a Components parameter is always shown.</p>
  1128. <example>
  1129. <pre>Components: main</pre>
  1130. </example>
  1131. </param>
  1132. <param name="Flags">
  1133. <p>This parameter is a set of extra options. Multiple options may be used by separating them by spaces. The following options are supported:</p>
  1134. <flaglist>
  1135. <flag name="checkablealone">
  1136. <p>Specifies that the task can be checked when none of its children are. By default, if no <tt>Tasks</tt> parameter directly references the task, unchecking all of the task's children will cause the task to become unchecked.</p>
  1137. </flag>
  1138. <flag name="checkedonce">
  1139. <p>Instructs Setup that this task should be unchecked initially when Setup finds a previous version of the <link topic="sameappnotes">same application</link> is already installed.</p>
  1140. <p>If the <tt>UsePreviousTasks [Setup]</tt> section directive is <tt>no</tt>, this flag is effectively disabled.</p>
  1141. </flag>
  1142. <flag name="dontinheritcheck">
  1143. <p>Specifies that the task should not automatically become checked when its parent is checked. Has no effect on top-level tasks, and cannot be combined with the <tt>exclusive</tt> flag.</p>
  1144. </flag>
  1145. <flag name="exclusive">
  1146. <p>Instructs Setup that this task is mutually exclusive with sibling tasks that also have the <tt>exclusive</tt> flag.</p>
  1147. </flag>
  1148. <flag name="restart">
  1149. <p>Instructs Setup to ask the user to restart the system at the end of installation if this task is selected, regardless of whether it is necessary (for example because of [Files] section entries with the <tt>restartreplace</tt> flag). Like <link topic="setup_alwaysrestart">AlwaysRestart</link> but per task.</p>
  1150. </flag>
  1151. <flag name="unchecked">
  1152. <p>Instructs Setup that this task should be unchecked initially.</p>
  1153. </flag>
  1154. </flaglist>
  1155. <example>
  1156. <pre>Flags: unchecked</pre>
  1157. </example>
  1158. </param>
  1159. </paramlist>
  1160. <p><b><link topic="commonparams">Common Parameters</link></b></p>
  1161. </body>
  1162. </topic>
  1163. <topic name="dirssection" title="[Dirs] section">
  1164. <keyword value="[Dirs] section" />
  1165. <keyword value="Dirs" />
  1166. <body>
  1167. <p>This optional section defines any additional directories Setup is to create <i>besides</i> the application directory the user chooses, which is created automatically. Creating subdirectories underneath the main application directory is a common use for this section.</p>
  1168. <p>Note that you aren't required to explicitly create directories before installing files to them using the [Files] section, so this section is primarily useful for creating empty directories.</p>
  1169. <p>Here is an example of a <tt>[Dirs]</tt> section:</p>
  1170. <precode>
  1171. [Dirs]
  1172. Name: "{app}\data"
  1173. Name: "{app}\bin"
  1174. </precode>
  1175. <p>The example above will, after Setup creates the application directory, create two subdirectories underneath the application directory.</p>
  1176. <p>The following is a list of the supported <link topic="params">parameters</link>:</p>
  1177. <paramlist>
  1178. <param name="Name" required="yes">
  1179. <p>The name of the directory to create, which normally will start with one of the directory constants.</p>
  1180. <example>
  1181. <pre>Name: "{app}\MyDir"</pre>
  1182. </example>
  1183. </param>
  1184. <param name="Attribs">
  1185. <p>Specifies additional attributes for the directory. This can include one or more of the following: <tt>readonly</tt>, <tt>hidden</tt>, <tt>system</tt>, <tt>notcontentindexed</tt>. If this parameter is not specified, Setup does not assign any special attributes to the directory.</p>
  1186. <p>If the directory already exists, the specified attributes will be combined with the directory's existing attributes.</p>
  1187. <example>
  1188. <pre>Attribs: hidden system</pre>
  1189. </example>
  1190. </param>
  1191. <param name="Permissions">
  1192. <p>Specifies additional permissions to grant in the directory's ACL (access control list). It is not recommended that you use this parameter if you aren't familiar with ACLs or why you would need to change them, because misusing it could negatively impact system security.</p>
  1193. <p>For this parameter to have an effect the directory must be located on a partition that supports ACLs (such as NTFS), and the current user must be able to change the permissions on the directory. In the event these conditions are not met, no error message will be displayed, and the permissions will not be set.</p>
  1194. <p>This parameter should <i>only</i> be used on directories private to your application. Never change the ACLs on top-level directories like <tt>{sys}</tt> or <tt>{commonpf}</tt>, otherwise you can open up security holes on your users' systems.</p>
  1195. <p>In addition, it is recommended that you avoid using this parameter to grant write access on directories containing program files. Granting, for example, <tt>everyone-modify</tt> permission on the <tt>{app}</tt> directory will allow unprivileged users to tamper with your application's program files; this creates the potential for a privilege escalation vulnerability. (However, it is safe to change the permissions on a subdirectory of your application's directory which does not contain program files, e.g. <tt>{app}\data</tt>.)</p>
  1196. <p>The specified permissions are set regardless of whether the directory existed prior to installation.</p>
  1197. <p>This parameter can include one or more space separated values in the format:</p>
  1198. <indent><p><tt><link topic="usergroupids">&lt;user or group identifier&gt;</link>-&lt;access type&gt;</tt></p></indent>
  1199. <p>The following access types are supported for the [Dirs] section:</p>
  1200. <flaglist>
  1201. <flag name="full">
  1202. <p>Grants "Full Control" permission, which is the same as <tt>modify</tt> (see below), but additionally allows the specified user/group to take ownership of the directory and change its permissions. Use sparingly; generally, <tt>modify</tt> is sufficient.</p>
  1203. </flag>
  1204. <flag name="modify">
  1205. <p>Grants "Modify" permission, which allows the specified user/group to read, execute, create, modify, and delete files in the directory and its subdirectories.</p>
  1206. </flag>
  1207. <flag name="readexec">
  1208. <p>Grants "Read &amp; Execute" permission, which allows the specified user/group to read and execute files in the directory and its subdirectories.</p>
  1209. </flag>
  1210. </flaglist>
  1211. <example>
  1212. <pre>Permissions: users-modify</pre>
  1213. </example>
  1214. </param>
  1215. <param name="Flags">
  1216. <p>This parameter is a set of extra options. Multiple options may be used by separating them by spaces. The following options are supported:</p>
  1217. <flaglist>
  1218. <flag name="deleteafterinstall">
  1219. <p>Instructs Setup to create the directory as usual, but then delete it once the installation is completed (or aborted) if it's empty. This can be useful when extracting temporary data needed by a program executed in the script's [Run] section.</p>
  1220. <p>This flag will not cause directories that already existed before installation to be deleted.</p>
  1221. </flag>
  1222. <flag name="setntfscompression">
  1223. <p>Instructs Setup to enable NTFS compression on the directory. If it fails to set the compression state for any reason (for example, if compression is not supported by the file system), no error message will be displayed.</p>
  1224. <p>If the directory already exists, the compression state of any files present in the directory will not be changed.</p>
  1225. </flag>
  1226. <flag name="uninsalwaysuninstall">
  1227. <p>Instructs the uninstaller to always attempt to delete the directory if it's empty. Normally the uninstaller will only try to delete the directory if it didn't already exist prior to installation.</p>
  1228. </flag>
  1229. <flag name="uninsneveruninstall">
  1230. <p>Instructs the uninstaller to not attempt to delete the directory. By default, the uninstaller deletes any directory specified in the [Dirs] section if it is empty.</p>
  1231. </flag>
  1232. <flag name="unsetntfscompression">
  1233. <p>Instructs Setup to disable NTFS compression on the directory. If it fails to set the compression state for any reason (for example, if compression is not supported by the file system), no error message will be displayed.</p>
  1234. <p>If the directory already exists, the compression state of any files present in the directory will not be changed.</p>
  1235. </flag>
  1236. </flaglist>
  1237. <example>
  1238. <pre>Flags: uninsneveruninstall</pre>
  1239. </example>
  1240. </param>
  1241. </paramlist>
  1242. <p><b><link topic="componentstasksparams">Components and Tasks Parameters</link></b></p>
  1243. <p><b><link topic="commonparams">Common Parameters</link></b></p>
  1244. </body>
  1245. </topic>
  1246. <topic name="filessection" title="[Files] section">
  1247. <keyword value="[Files] section" />
  1248. <keyword value="Files" />
  1249. <body>
  1250. <p>This optional section defines any files Setup is to install on the user's system.</p>
  1251. <p>Here is an example of a <tt>[Files]</tt> section:</p>
  1252. <precode>
  1253. [Files]
  1254. Source: "MyProg.exe"; DestDir: "{app}"
  1255. Source: "MyProg.chm"; DestDir: "{app}"
  1256. Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme
  1257. </precode>
  1258. <p>See the <i>Remarks</i> section at the bottom of this topic for some important notes.</p>
  1259. <p>The following is a list of the supported <link topic="params">parameters</link>:</p>
  1260. <paramlist>
  1261. <param name="Source" required="yes">
  1262. <p>The name of the <i>source file</i>. The compiler will prepend the path of your installation's <link topic="sourcedirectorynotes">source directory</link> if you do not specify a fully qualified pathname.</p>
  1263. <p>This can be a wildcard to specify a group of files in a single entry. When a wildcard is used, all files matching it use the same options.</p>
  1264. <p>When the flag <tt>external</tt> is specified but the flag <tt>download</tt> is not, <tt>Source</tt> must be the full pathname of an existing file (or wildcard) on the distribution media or the user's system (e.g. "{src}\license.ini").</p>
  1265. <p>When the flag <tt>external</tt> is specified and the flag <tt>download</tt> is also, <tt>Source</tt> must be the URL of the file to download.</p>
  1266. <p>Constants may only be used when the <tt>external</tt> flag is specified, because the compiler does not do any constant translating itself.</p>
  1267. <examples>
  1268. <pre>
  1269. Source: "MyProg.exe"
  1270. Source: "Files\*"
  1271. </pre>
  1272. </examples>
  1273. </param>
  1274. <param name="DestDir" required="yes">
  1275. <p>The directory where the file is to be installed on the user's system. Will almost always begin with one of the directory constants. If the specified path does not already exist on the user's system, it will be created automatically, and removed automatically during uninstallation if empty.</p>
  1276. <examples>
  1277. <pre>
  1278. DestDir: "{app}"
  1279. DestDir: "{app}\subdir"
  1280. </pre>
  1281. </examples>
  1282. </param>
  1283. <param name="DestName">
  1284. <p>This parameter specifies a new name for the file when it is installed on the user's system. By default, Setup uses the name from the <tt>Source</tt> parameter, so in most cases it's not necessary to specify this parameter.</p>
  1285. <example>
  1286. <pre>DestName: "MYPROG2.EXE"</pre>
  1287. </example>
  1288. </param>
  1289. <param name="Excludes">
  1290. <p>Specifies a list of patterns to exclude, separated by commas.</p>
  1291. <p>Patterns may include wildcard characters ("*" and "?"). Note that unlike the <tt>Source</tt> parameter, a simple Unix-style pattern matching routine is used for <tt>Excludes</tt>. Dots in the pattern are always significant, thus "*.*" will not exclude a file with no extension (instead, use just "*"). Also, question marks always match exactly one character, thus "?????" will not exclude files with names less than five characters long.</p>
  1292. <p>If a pattern starts with a backslash ("\") it is matched against the start of a path name, otherwise it is matched against the end of a path name. Thus "\foo" will only exclude a file named "foo" at the base of the tree. On the other hand, "foo" will exclude any file named "foo" anywhere in the tree.</p>
  1293. <p>The patterns may include backslashes. "foo\bar" will exclude both "foo\bar" and "subdir\foo\bar". "\foo\bar" will only exclude "foo\bar".</p>
  1294. <examples>
  1295. <pre>
  1296. Source: "*"; Excludes: "*.~*"
  1297. Source: "*"; Excludes: "*.~*,\Temp\*"; Flags: recursesubdirs
  1298. </pre>
  1299. </examples>
  1300. </param>
  1301. <param name="ExternalSize">
  1302. <p>This parameter must be combined with the <tt>external</tt> flag and specifies the size of the external file in bytes. If this parameter is not specified, Setup retrieves the file size at startup. Primarily useful for files that aren't available at startup, for example files located on a second disk when <link topic="setup_diskspanning">disk spanning</link> is being used.</p>
  1303. <p>If the specified size does not match the actual size, Setup's progress bar will automatically adjust by skipping ahead or pausing as needed during installation.</p>
  1304. <p>If the <tt>extractarchive</tt> flag is also used, the total uncompressed size of all extracted files must be specified.</p>
  1305. <p>Supports digit separators and set in bytes. (1048576 bytes = 1 megabyte)</p>
  1306. <example>
  1307. <pre>
  1308. ExternalSize: 1_048_576; Flags: external
  1309. </pre>
  1310. </example>
  1311. </param>
  1312. <param name="Attribs">
  1313. <p>Specifies additional attributes for the file. This can include one or more of the following: <tt>readonly</tt>, <tt>hidden</tt>, <tt>system</tt>, <tt>notcontentindexed</tt>. If this parameter is not specified, Setup does not assign any special attributes to the file.</p>
  1314. <example>
  1315. <pre>Attribs: hidden system</pre>
  1316. </example>
  1317. </param>
  1318. <param name="Permissions">
  1319. <p>Specifies additional permissions to grant in the file's ACL (access control list). It is not recommended that you use this parameter if you aren't familiar with ACLs or why you would need to change them, because misusing it could negatively impact system security.</p>
  1320. <p>For this parameter to have an effect the file must be located on a partition that supports ACLs (such as NTFS), and the current user must be able to change the permissions on the file. In the event these conditions are not met, no error message will be displayed, and the permissions will not be set.</p>
  1321. <p>This parameter should <i>only</i> be used on files private to your application. Never change the ACLs on shared system files, otherwise you can open up security holes on your users' systems.</p>
  1322. <p>The specified permissions are set regardless of whether the file existed prior to installation.</p>
  1323. <p>This parameter can include one or more space separated values in the format:</p>
  1324. <indent><p><tt><link topic="usergroupids">&lt;user or group identifier&gt;</link>-&lt;access type&gt;</tt></p></indent>
  1325. <p>The following access types are supported for the [Files] section:</p>
  1326. <flaglist>
  1327. <flag name="full">
  1328. <p>Grants "Full Control" permission, which is the same as <tt>modify</tt> (see below), but additionally allows the specified user/group to take ownership of the file and change its permissions. Use sparingly; generally, <tt>modify</tt> is sufficient.</p>
  1329. </flag>
  1330. <flag name="modify">
  1331. <p>Grants "Modify" permission, which allows the specified user/group to read, execute, modify, and delete the file.</p>
  1332. </flag>
  1333. <flag name="readexec">
  1334. <p>Grants "Read &amp; Execute" permission, which allows the specified user/group to read and execute the file.</p>
  1335. </flag>
  1336. </flaglist>
  1337. <example>
  1338. <pre>Permissions: users-modify</pre>
  1339. </example>
  1340. </param>
  1341. <param name="FontInstall">
  1342. <p>Tells Setup the file is a font that needs to be installed. The value of this parameter is the name of the font as stored in the registry or WIN.INI. This must be exactly the same name as you see when you double-click the font file in Explorer. Note that Setup will automatically append " (TrueType)" to the end of the name.</p>
  1343. <p>If the file is not a TrueType font, you must specify the flag <tt>fontisnttruetype</tt> in the Flags parameter.</p>
  1344. <p>It's recommended that you use the flags <tt>onlyifdoesntexist</tt> and <tt>uninsneveruninstall</tt> when installing fonts to the <tt>{autofonts}</tt> directory.</p>
  1345. <p>If the installation is running in <link topic="admininstallmode">non administrative install mode</link>, Windows 10 Version 1803 or later is required to successfully install a font.</p>
  1346. <p>For compatibility with 64-bit Windows, fonts should not be installed to the <tt>{sys}</tt> directory. Use <tt>{autofonts}</tt> as the destination directory instead.</p>
  1347. <example>
  1348. <pre>Source: "OZHANDIN.TTF"; DestDir: "{autofonts}"; FontInstall: "Oz Handicraft BT"; Flags: onlyifdoesntexist uninsneveruninstall</pre>
  1349. </example>
  1350. </param>
  1351. <param name="StrongAssemblyName">
  1352. <p>Specifies the strong assembly name of the file. Used by Uninstall only.</p>
  1353. <p>This parameter is ignored if the <tt>gacinstall</tt> flag isn't also specified.</p>
  1354. <example>
  1355. <pre>StrongAssemblyName: "MyAssemblyName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=abcdef123456, ProcessorArchitecture=MSIL"</pre>
  1356. </example>
  1357. </param>
  1358. <param name="ISSigAllowedKeys">
  1359. <p>A space separated list of key names or group names from the <link topic="issigkeyssection">[ISSigKeys] section</link>, specifying which keys are allowed for the verification done by the <tt>issigverify</tt> flag.</p>
  1360. <example>
  1361. <pre>ISSigAllowedKeys: "exesigner bosskey"</pre>
  1362. </example>
  1363. </param>
  1364. <param name="Hash">
  1365. <p>Instructs the compiler or Setup to do a simple SHA-256 hash check instead of a full signature verification, as an alternative to using the <tt>issigverify</tt> flag. The precise effect of this parameter depends on whether it is combined with the <tt>external</tt> flag. See the <tt>issigverify</tt> flag description for more information.</p>
  1366. <example>
  1367. <pre>Hash: "2f6294f9aa09f59a574b5dcd33be54e16b39377984f3d5658cda44950fa0f8fc"</pre>
  1368. </example>
  1369. </param>
  1370. <param name="ExtractArchivePassword">
  1371. <p>Specifies the password of the archive, which can include constants. Please be aware that this password is stored in an unencrypted form in the resulting Setup file(s), even if you have enabled encryption (using the [Setup] section directive <tt>Encryption</tt>).</p>
  1372. <p>This parameter is ignored if the <tt>extractarchive</tt> flag isn't also specified.</p>
  1373. </param>
  1374. <param name="DownloadISSigSource">
  1375. <p>Specifies the URL of the .issig signature file which should be downloaded, which can include constants. This file is used to verify the file downloaded from the URL specified by the <tt>Source</tt> parameter.</p>
  1376. <p>This parameter is ignored if the <tt>download</tt> and <tt>issigverify</tt> flags aren't both also specified.</p>
  1377. <p>If this parameter is not set but both these flags are used, Setup will instead append ".issig" (without quotes) to the path portion of the URL specified by the <tt>Source</tt> parameter. It will then use the result as the URL to download the .issig signature file from.</p>
  1378. </param>
  1379. <param name="DownloadUserName">
  1380. <p>Specifies the basic authentication username to use for the file download, which can include constants.</p>
  1381. <p>This parameter is ignored if the <tt>download</tt> flag isn't also specified.</p>
  1382. </param>
  1383. <param name="DownloadPassword">
  1384. <p>Specifies the basic authentication password to use for the file download, which can include constants. Please be aware that this password is stored in an unencrypted form in the resulting Setup file(s), even if you have enabled encryption (using the [Setup] section directive <tt>Encryption</tt>).</p>
  1385. <p>This parameter is ignored if the <tt>download</tt> flag isn't also specified.</p>
  1386. </param>
  1387. <param name="Flags">
  1388. <p>This parameter is a set of extra options. Multiple options may be used by separating them by spaces. The following options are supported:</p>
  1389. <flaglist>
  1390. <flag name="32bit">
  1391. <p>Causes the <tt>{sys}</tt> constant to map to the 32-bit System directory when used in the <tt>Source</tt> and <tt>DestDir</tt> parameters, the <tt>regserver</tt> and <tt>regtypelib</tt> flags to treat the file as 32-bit, and the <tt>sharedfile</tt> flag to update the 32-bit SharedDLLs registry key. This is the default behavior in <link topic="32vs64bitinstalls">32-bit install mode</link>.</p>
  1392. </flag>
  1393. <flag name="64bit">
  1394. <p>Causes the <tt>{sys}</tt> constant to map to the 64-bit System directory when used in the <tt>Source</tt> and <tt>DestDir</tt> parameters, the <tt>regserver</tt> and <tt>regtypelib</tt> flags to treat the file as 64-bit, and the <tt>sharedfile</tt> flag to update the 64-bit SharedDLLs registry key. This is the default behavior in <link topic="32vs64bitinstalls">64-bit install mode</link>.</p>
  1395. </flag>
  1396. <flag name="allowunsafefiles">
  1397. <p>Disables the compiler's automatic checking for <link topic="unsafefiles">unsafe files</link>. It is strongly recommended that you DO NOT use this flag, unless you are absolutely sure you know what you're doing.</p>
  1398. </flag>
  1399. <flag name="comparetimestamp">
  1400. <p><i>(Not recommended; see below)</i><br/>
  1401. Instructs Setup to proceed to comparing time stamps (last write/modified time) if the file being installed already exists on the user's system, and at least one of the following conditions is true:</p>
  1402. <ul>
  1403. <li>Neither the existing file nor the file being installed has version info.</li>
  1404. <li>The <tt>ignoreversion</tt> flag is also used on the entry.</li>
  1405. <li>The <tt>replacesameversion</tt> flag isn't used, and the existing file and the file being installed have the same version number (as determined by the files' version info).</li>
  1406. </ul>
  1407. <p>If the existing file has an older time stamp (last write/modified time) than the file being installed, the existing file will replaced. Otherwise, it will not be replaced.</p>
  1408. <p>Use of this flag is <i>not recommended</i> except as a last resort, because there is an inherent issue with it: NTFS partitions store time stamps in UTC (unlike FAT partitions), which causes local time stamps -- what Inno Setup works with by default -- to shift whenever a user changes their system's time zone or when daylight saving time goes into or out of effect. This can create a situation where files are replaced when the user doesn't expect them to be, or not replaced when the user expects them to be.</p>
  1409. </flag>
  1410. <flag name="confirmoverwrite">
  1411. <p>Always ask the user to confirm before replacing an existing file.</p>
  1412. </flag>
  1413. <flag name="createallsubdirs">
  1414. <p>By default the compiler skips empty directories when it recurses subdirectories searching for the <tt>Source</tt> filename/wildcard. This flag causes these directories to be created at install time (just like if you created [Dirs] entries for them).</p>
  1415. <p>This flag must be combined with <tt>recursesubdirs</tt>.</p>
  1416. </flag>
  1417. <flag name="deleteafterinstall">
  1418. <p>Instructs Setup to install the file as usual, but then delete it once the installation is completed (or aborted). This can be useful for extracting temporary data needed by a program executed in the script's [Run] section.</p>
  1419. <p>This flag will not cause existing files that weren't replaced during installation to be deleted.</p>
  1420. <p>This flag cannot be combined with the <tt>isreadme</tt>, <tt>regserver</tt>, <tt>regtypelib</tt>, <tt>restartreplace</tt>, <tt>sharedfile</tt>, or <tt>uninsneveruninstall</tt> flags.</p>
  1421. </flag>
  1422. <flag name="dontcopy">
  1423. <p>Don't copy the file to the user's system during the normal file copying stage but do statically compile the file into the installation. This flag is useful if the file is handled by the [Code] section exclusively and extracted using <link topic="isxfunc_ExtractTemporaryFile">ExtractTemporaryFile</link>.</p>
  1424. </flag>
  1425. <flag name="dontverifychecksum">
  1426. <p>Prevents Setup from verifying the file checksum after extraction. Use this flag on files you wish to modify while already compiled into Setup.</p>
  1427. <p>Must be combined with <tt>nocompression</tt>.</p>
  1428. </flag>
  1429. <flag name="download">
  1430. <p>This flag instructs Setup not to copy an existing file, but instead to download it. Optionally use the <tt>DownloadUserName</tt> and <tt>DownloadPassword</tt> parameters to specify a basic authentication username and password.</p>
  1431. <p>This flag must be combined with the <tt>DestName</tt> and <tt>ExternalSize</tt> parameters. When <tt>download</tt> is combined with <tt>extractarchive</tt>, the value of <tt>DestName</tt> is used to determine the archive format and for display and logging purposes.</p>
  1432. <p>This flag also must be combined with the <tt>external</tt> and <tt>ignoreversion</tt> flags, meaning it should only be used on files private to your application, <i>never</i> on shared system files.</p>
  1433. <p>This flag cannot be combined with the <tt>comparetimestamp</tt> and <tt>skipifsourcedoesntexist</tt> flags.</p>
  1434. <p>Supports HTTPS (but not expired or self-signed certificates) and HTTP. Redirects are automatically followed and proxy settings are automatically used. Safe to use from services.</p>
  1435. </flag>
  1436. <flag name="external">
  1437. <p>This flag instructs Inno Setup not to statically compile the file specified by the <tt>Source</tt> parameter into the installation files, but instead to copy from an existing file on the distribution media or the user's system. See the <tt>Source</tt> parameter description for more information.</p>
  1438. <p>When combined with the <tt>download</tt> or <tt>extractarchive</tt> flags, Setup does not copy the file, but instead downloads or extracts it.</p>
  1439. </flag>
  1440. <flag name="extractarchive">
  1441. <p>This flag instructs Setup not to copy an existing archive file, but instead to extract it. Optionally use the <tt>ExtractArchivePassword</tt> parameter to specify a password.</p>
  1442. <p>The supported archive formats, beyond .7z, and the support for password-protected and multi-volume archives, depend on the <link topic="setup_archiveextraction">ArchiveExtraction</link> [Setup] section directive, that must not be set to <tt>basic</tt>.</p>
  1443. <p>To allow the extraction of archives with custom extensions, such as self-extracting archives, call <link topic="isxfunc_MapArchiveExtensions">MapArchiveExtensions</link>.</p>
  1444. <p>This flag must be combined with the <tt>external</tt> and <tt>ignoreversion</tt> flags, meaning it should only be used on files private to your application, <i>never</i> on shared system files.</p>
  1445. <p>This flag is usually combined with the <tt>recursesubdirs</tt> and <tt>createallsubdirs</tt> flags.</p>
  1446. <p>Using a solid archive is not recommended; extraction performance may degrade depending on the solid block size.</p>
  1447. </flag>
  1448. <flag name="fontisnttruetype">
  1449. <p>Specify this flag if the entry is installing a <i>non-TrueType</i> font with the <tt>FontInstall</tt> parameter.</p>
  1450. </flag>
  1451. <flag name="gacinstall">
  1452. <p>Install the file into the .NET Global Assembly Cache. When used in combination with <tt>sharedfile</tt>, the file will only be uninstalled when the reference count reaches zero.</p>
  1453. <p>To uninstall the file Uninstaller uses the strong assembly name specified by parameter <tt>StrongAssemblyName</tt>.</p>
  1454. <p>An exception will be raised if an attempt is made to use this flag on a system with no .NET Framework present.</p>
  1455. </flag>
  1456. <flag name="ignoreversion">
  1457. <p>Don't compare version info at all; replace existing files regardless of their version number.</p>
  1458. <p>This flag should only be used on files private to your application, <i>never</i> on shared system files.</p>
  1459. <p>This flag cannot be combined with <tt>replacesameversion</tt>.</p>
  1460. </flag>
  1461. <flag name="issigverify">
  1462. <p>Instructs the compiler or Setup to verify the source file's signature using a key from the <link topic="issigkeyssection">[ISSigKeys] section</link>, allowing all keys by default. Use the <tt>ISSigAllowedKeys</tt> parameter to limit the allowed keys.</p>
  1463. <p>The verification requires an <tt>.issig</tt> signature file to be present in the same directory as the source file, created using the <link topic="issigtool">Inno Setup Signature Tool</link>. If flag <tt>download</tt> is set then the <tt>.issig</tt> signature file will be downloaded instead. See the <tt>DownloadISSigSource</tt> parameter description for more information..</p>
  1464. <p>The precise effect of this flag depends on whether it is combined with the <tt>external</tt> flag:</p>
  1465. <ul>
  1466. <li>When used without the <tt>external</tt> flag, the compiler will verify the source file while it is being compressed/stored into the resulting installer. If the verification fails, compilation will abort.</li>
  1467. <li>When used with the <tt>external</tt> flag, Setup will verify the source file during the installation process while it is being copied to the destination directory. Files are always created with temporary names (<tt>*.tmp</tt>) initially. If the verification fails, the temporary file will be deleted and a &quot;Verification of the source file failed&quot; error message will be displayed to the user (with Skip, Try Again, and Cancel options) and a more detailed error is logged. If the verification succeeds, the temporary file will be renamed to the correct destination name.</li>
  1468. <li>When a file entry with the <tt>external</tt> flag is skipped (i.e., not installed - for example because the <tt>ignoreversion</tt> flag wasn't used), the source file isn't copied anywhere, so no verification takes place.</li>
  1469. </ul>
  1470. <p>Since verification occurs while source files are being compressed/copied, and not in a separate pass, each file's contents are only read once. Thus, enabling verification has little performance impact; the only extra I/O comes from reading the tiny <tt>.issig</tt> files. Only archives and downloaded files are read twice.</p>
  1471. <p>The verification process is protected against the Time-Of-Check to Time-Of-Use (TOCTOU) problem.</p>
  1472. <p>This flag cannot be combined with the <tt>sign</tt> or <tt>signonce</tt> flags. Use <tt>signcheck</tt> instead.</p>
  1473. </flag>
  1474. <flag name="isreadme">
  1475. <p>File is the "README" file. Only <i>one</i> file in an installation can have this flag. When a file has this flag, the user will asked if they would like to view the README file after the installation has completed. If Yes is chosen, Setup will open the file, using the default program for the file type. For this reason, the README file should always end with an extension like .txt, .wri, or .doc.</p>
  1476. <p>Note that if Setup has to restart the user's computer (as a result of installing a file with the flag <tt>restartreplace</tt> or if the <tt>AlwaysRestart</tt> <tt>[Setup]</tt> section directive is <tt>yes</tt>), the user will not be given an option to view the README file.</p>
  1477. </flag>
  1478. <flag name="nocompression">
  1479. <p>Prevents the compiler from attempting to compress the file. Use this flag on file types that you know can't benefit from compression (for example, JPEG images) to speed up the compilation process and save a few bytes in the resulting installation.</p>
  1480. </flag>
  1481. <flag name="noencryption">
  1482. <p>Prevents the file from being stored encrypted. Use this flag if you have enabled encryption (using the [Setup] section directive <tt>Encryption</tt>) but want to be able to extract the file using the [Code] section support function <link topic="isxfunc_ExtractTemporaryFile">ExtractTemporaryFile</link> before the user has entered the correct password.</p>
  1483. </flag>
  1484. <flag name="noregerror">
  1485. <p>When combined with either the <tt>regserver</tt> or <tt>regtypelib</tt> flags, Setup will not display any error message if the registration fails.</p>
  1486. </flag>
  1487. <flag name="onlyifdestfileexists">
  1488. <p>Only install the file if a file of the same name already exists on the user's system. This flag may be useful if your installation is a patch to an existing installation, and you don't want files to be installed that the user didn't already have.</p>
  1489. </flag>
  1490. <flag name="onlyifdoesntexist">
  1491. <p>Only install the file if it doesn't already exist on the user's system.</p>
  1492. </flag>
  1493. <flag name="overwritereadonly">
  1494. <p>Always overwrite a read-only file. Without this flag, Setup will ask the user if an existing read-only file should be overwritten.</p>
  1495. </flag>
  1496. <flag name="promptifolder">
  1497. <p>By default, when a file being installed has an older version number (or older time stamp, when the <tt>comparetimestamp</tt> flag is used) than an existing file, Setup will not replace the existing file. (See the <i>Remarks</i> section at the bottom of this topic for more details.) When this flag is used, Setup will ask the user whether the file should be replaced, with the default answer being to keep the existing file.</p>
  1498. </flag>
  1499. <flag name="recursesubdirs">
  1500. <p>Instructs the compiler or Setup to also search for the <tt>Source</tt> filename/wildcard in subdirectories under the <tt>Source</tt> directory.</p>
  1501. </flag>
  1502. <flag name="regserver">
  1503. <p>Register the DLL/OCX file. With this flag set, Setup will call the DllRegisterServer function exported by the DLL/OCX file, and the uninstaller will call DllUnregisterServer prior to removing the file. When used in combination with <tt>sharedfile</tt>, the DLL/OCX file will only be unregistered when the reference count reaches zero.</p>
  1504. <p>In <link topic="32vs64bitinstalls">64-bit install mode</link>, the file is assumed to be a 64-bit image and will be registered inside a 64-bit process. You can override this by specifying the <tt>32bit</tt> flag.</p>
  1505. <p>See the <i>Remarks</i> at the bottom of this topic for more information.</p>
  1506. </flag>
  1507. <flag name="regtypelib">
  1508. <p>Register the type library (.tlb). The uninstaller will unregister the type library (unless the flag <tt>uninsneveruninstall</tt> is specified). As with the <tt>regserver</tt> flag, when used in combination with <tt>sharedfile</tt>, the file will only be unregistered by the uninstaller when the reference count reaches zero.</p>
  1509. <p>In <link topic="32vs64bitinstalls">64-bit install mode</link> running on an x64-compatible edition of Windows, the type library will be registered inside a 64-bit process. You can override this by specifying the <tt>32bit</tt> flag.</p>
  1510. <p>See the <i>Remarks</i> at the bottom of this topic for more information.</p>
  1511. </flag>
  1512. <flag name="replacesameversion">
  1513. <p>When this flag is used and the file already exists on the user's system and it has the same version number as the file being installed, Setup will compare the files and replace the existing file if their contents differ.</p>
  1514. <p>The default behavior (i.e. when this flag isn't used) is to not replace an existing file with the same version number.</p>
  1515. <p>This flag has no effect if combined with the <tt>extractarchive</tt> flag, or if used for a file that lacks a version number.</p>
  1516. <p>This flag cannot be combined with <tt>ignoreversion</tt>.</p>
  1517. </flag>
  1518. <flag name="restartreplace">
  1519. <p>When an existing file needs to be replaced, and it is in use (locked) by another running process, Setup will by default display an error message. This flag tells Setup to instead register the file to be replaced the next time the system is restarted (by calling MoveFileEx or by creating an entry in WININIT.INI). When this happens, the user will be prompted to restart their computer at the end of the installation process.</p>
  1520. <p><b>NOTE:</b> This flag has no effect if the user does not have administrative privileges. Therefore, when using this flag, it is recommended that you leave the <link topic="setup_privilegesrequired">PrivilegesRequired</link> [Setup] section directive at the default setting of <tt>admin</tt>.</p>
  1521. </flag>
  1522. <flag name="setntfscompression">
  1523. <p>Instructs Setup to enable NTFS compression on the file (even if it didn't replace the file). If it fails to set the compression state for any reason (for example, if compression is not supported by the file system), no error message will be displayed.</p>
  1524. </flag>
  1525. <flag name="sharedfile">
  1526. <p>Specifies that the file is shared among multiple applications, and should only be removed at uninstall time if no other applications are using it. Most files installed to the Windows System directory should use this flag, including .OCX, .BPL, and .DPL files.</p>
  1527. <p>Windows' standard shared file reference-counting mechanism (located in the registry under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs) is used to keep track of how many applications depend on the file. Each time the file is installed, the reference count for the file is incremented. (This happens regardless of whether the installer actually replaces the file on disk.) When an application using the file is uninstalled, the reference count is decremented. If the count reaches zero, the file is deleted (with the user's confirmation, unless the <tt>uninsnosharedfileprompt</tt> flag is also specified).</p>
  1528. <p>If Setup is run more than once, the reference count for the file will be incremented more than once. The uninstaller will decrement the reference count the same number of times, however, so no references are leaked (provided the <link topic="setup_uninstalllogmode">UninstallLogMode</link> [Setup] section directive isn't changed from its default setting of <tt>append</tt>).</p>
  1529. <p>When this flag is used, do not specify <tt>{syswow64}</tt> in the <tt>DestDir</tt> parameter; use <tt>{sys}</tt> instead. Even though <tt>{sys}</tt> and <tt>{syswow64}</tt> map to the same underlying directory in <link topic="32vs64bitinstalls">32-bit install mode</link>, the path name must exactly match what every other existing installer is using; otherwise, a second reference count for the file would be created, which could result in the file being removed prematurely. If you need to install a shared file to the 32-bit System directory in <link topic="32vs64bitinstalls">64-bit install mode</link>, specify <tt>{sys}</tt> in the <tt>DestDir</tt> parameter and additionally include the <tt>32bit</tt> flag.</p>
  1530. </flag>
  1531. <flag name="sign">
  1532. <p>This flag instructs the compiler to digitally sign the original source files before storing them. Ignored if [Setup] section directive <link topic="setup_signtool">SignTool</link> is not set.</p>
  1533. <p>This flag cannot be combined with the <tt>issigverify</tt> flag. Use <tt>signcheck</tt> instead.</p>
  1534. </flag>
  1535. <flag name="signcheck">
  1536. <p>This flag instructs the compiler to check the original source files for a digital signature before storing them.</p>
  1537. </flag>
  1538. <flag name="signonce">
  1539. <p>This flag instructs the compiler to digitally sign the original source files before storing them, but only if the files are not already signed. Ignored if [Setup] section directive <link topic="setup_signtool">SignTool</link> is not set.</p>
  1540. <p>This flag cannot be combined with the <tt>issigverify</tt> flag. Use <tt>signcheck</tt> instead.</p>
  1541. </flag>
  1542. <flag name="skipifsourcedoesntexist">
  1543. <p>This flag instructs the compiler -- or Setup, if the <tt>external</tt> flag is also used -- to silently skip over the entry if the source file does not exist, instead of displaying an error message.</p>
  1544. </flag>
  1545. <flag name="solidbreak">
  1546. <p>When <link topic="setup_solidcompression">solid compression</link> is enabled, this flag instructs the compiler to finalize the current compression stream and begin a new one before compressing the file(s) matched by <tt>Source</tt>. This allows Setup to seek to the file instantly without having to decompress any preceding files first. May be useful in a large, multi-component installation if you find too much time is being spent decompressing files belonging to components that weren't selected.</p>
  1547. </flag>
  1548. <flag name="sortfilesbyextension">
  1549. <p>This flag instructs the compiler to compress the found files sorted by extension before it sorts by path name. This potentially decreases the size of Setup if <link topic="setup_solidcompression">solid compression</link> is also used.</p>
  1550. </flag>
  1551. <flag name="sortfilesbyname">
  1552. <p>This flag instructs the compiler to compress the found files sorted by name before it sorts by path name. This potentially decreases the size of Setup if <link topic="setup_solidcompression">solid compression</link> is also used. If <tt>sortfilesbyextension</tt> is also used, files are first sorted by extension.</p>
  1553. </flag>
  1554. <flag name="touch">
  1555. <p>This flag causes Setup to set the time/date stamp of the installed file(s) to that which is specified by the <link topic="setup_touchdate">TouchDate</link> and <link topic="setup_touchtime">TouchTime</link> [Setup] section directives.</p>
  1556. <p>This flag has no effect if combined with the <tt>external</tt> flag.</p>
  1557. </flag>
  1558. <flag name="uninsnosharedfileprompt">
  1559. <p>When uninstalling the shared file, automatically remove the file if its reference count reaches zero instead of asking the user. Must be combined with the <tt>sharedfile</tt> flag to have an effect.</p>
  1560. </flag>
  1561. <flag name="uninsremovereadonly">
  1562. <p>When uninstalling the file, remove any read-only attribute from the file before attempting to delete it.</p>
  1563. </flag>
  1564. <flag name="uninsrestartdelete">
  1565. <p>When this flag is used and the file is in use at uninstall time, the uninstaller will queue the file to be deleted when the system is restarted, and at the end of the uninstallation process ask the user if they wants to restart. This flag can be useful when uninstalling things like shell extensions which cannot be programmatically stopped. Note that administrative privileges are required for this flag to have an effect.</p>
  1566. </flag>
  1567. <flag name="uninsneveruninstall">
  1568. <p>Never remove the file. This flag can be useful when installing very common shared files that shouldn't be deleted under any circumstances, such as MFC DLLs.</p>
  1569. <p>Note that if this flag is combined with the <tt>sharedfile</tt> flag, the file will never be deleted at uninstall time but the reference count will still be properly decremented.</p>
  1570. </flag>
  1571. <flag name="unsetntfscompression">
  1572. <p>Instructs Setup to disable NTFS compression on the file (even if it didn't replace the file). If it fails to set the compression state for any reason (for example, if compression is not supported by the file system), no error message will be displayed.</p>
  1573. </flag>
  1574. </flaglist>
  1575. <example>
  1576. <pre>Flags: isreadme</pre>
  1577. </example>
  1578. </param>
  1579. </paramlist>
  1580. <p><b><link topic="componentstasksparams">Components and Tasks Parameters</link></b></p>
  1581. <p><b><link topic="commonparams">Common Parameters</link></b></p>
  1582. <heading>Remarks</heading>
  1583. <p>If a file already exists on the user's system, it by default will be replaced according to the following rules:</p>
  1584. <ol>
  1585. <li>If the existing file is an older version than the file being installed (as determined by the files' version info), the existing file will be replaced.</li>
  1586. <li>If the existing file is the same version as the file being installed, the existing file will not be replaced, except if the <tt>replacesameversion</tt> flag is used and the content of the two files differs.</li>
  1587. <li>If the existing file is a newer version than the file being installed, or if the existing file has version info but the file being installed does not, the existing file will not be replaced.</li>
  1588. <li>If the existing file does not have version info, it will be replaced.</li>
  1589. </ol>
  1590. <p>Certain flags such as <tt>onlyifdoesntexist</tt>, <tt>ignoreversion</tt>, and <tt>promptifolder</tt> alter the aforementioned rules.</p>
  1591. <p>If Setup is unable to replace an existing file because it is in use by another process, it will make up to 4 additional attempts to replace the file, delaying one second before each attempt. If all attempts fail, an error message will be displayed.</p>
  1592. <p>Setup registers all files with the <tt>regserver</tt> or <tt>regtypelib</tt> flags as the last step of installation. However, if the <tt>[Setup]</tt> section directive <tt>AlwaysRestart</tt> is <tt>yes</tt>, or if there are files with the <tt>restartreplace</tt> flag, all files get registered on the next reboot (by creating an entry in Windows' <i>RunOnce</i> registry key).</p>
  1593. <p>When files with a .HLP extension (Windows help files) are uninstalled, the corresponding .GID and .FTS files are automatically deleted as well. Similarly, when a .CHM (HTML Help) file is deleted, any .CHW (generated index) file is automatically deleted.</p>
  1594. </body>
  1595. </topic>
  1596. <topic name="iconssection" title="[Icons] section">
  1597. <keyword value="[Icons] section" />
  1598. <keyword value="Icons" />
  1599. <body>
  1600. <p>This optional section defines any shortcuts Setup is to create in the Start Menu and/or other locations, such as the desktop.</p>
  1601. <p>Here is an example of an <tt>[Icons]</tt> section:</p>
  1602. <precode>
  1603. [Icons]
  1604. Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"; WorkingDir: "{app}"
  1605. Name: "{group}\Uninstall My Program"; Filename: "{uninstallexe}"
  1606. </precode>
  1607. <p>The following is a list of the supported <link topic="params">parameters</link>:</p>
  1608. <paramlist>
  1609. <param name="Name" required="yes">
  1610. <p>The name and location of the shortcut to create. Any of the shell folder constants or directory constants may be used in this parameter.</p>
  1611. <p>Keep in mind that shortcuts are stored as literal files so any characters not allowed in normal filenames can't be used here. Also, because it's not possible to have two files with the same name, it's therefore not possible to have two shortcuts with the same name.</p>
  1612. <examples>
  1613. <pre>
  1614. Name: "{group}\My Program"
  1615. Name: "{group}\Subfolder\My Program"
  1616. Name: "{commondesktop}\My Program"
  1617. Name: "{commonprograms}\My Program"
  1618. Name: "{commonstartup}\My Program"
  1619. </pre>
  1620. </examples>
  1621. </param>
  1622. <param name="Filename" required="yes">
  1623. <p>The command line filename for the shortcut, which normally begins with a directory constant.</p>
  1624. <p>In addition to file and folder names, URLs (web site addresses) may also be specified. When a URL is specified, Setup will create an "Internet Shortcut" (.url) file, and ignore the <tt>Parameters</tt>, <tt>WorkingDir</tt>, <tt>HotKey</tt>, and <tt>Comment</tt> parameters.</p>
  1625. <p>On 64-bit Windows, note that the <tt>{sys}</tt> constant will map to the native 64-bit System directory when the shortcut is launched by a 64-bit process, such as Windows Explorer. This is true regardless of whether the install is running in <link topic="32vs64bitinstalls">64-bit install mode</link>. To create a shortcut that always points to the 32-bit System directory, use <tt>{syswow64}</tt> instead. (The same applies to the <tt>WorkingDir</tt> and <tt>IconFilename</tt> parameters.)</p>
  1626. <examples>
  1627. <pre>
  1628. Filename: "{app}\MyProg.exe"
  1629. Filename: "{uninstallexe}"
  1630. Filename: "{app}\FolderName"
  1631. Filename: "http://www.example.com/"
  1632. </pre>
  1633. </examples>
  1634. </param>
  1635. <param name="Parameters">
  1636. <p>Optional command line parameters for the shortcut, which can include constants.</p>
  1637. <example>
  1638. <pre>Parameters: "/play filename.mid"</pre>
  1639. </example>
  1640. </param>
  1641. <param name="WorkingDir">
  1642. <p>The working (or <i>Start In</i>) directory for the shortcut, which specifies the initial current directory for the program. This parameter can include constants.</p>
  1643. <p>If this parameter is not specified or is blank, Setup will try to extract a directory name from the <tt>Filename</tt> parameter. If that fails (unlikely), the working directory will be set to <tt>{sys}</tt>.</p>
  1644. <example>
  1645. <pre>WorkingDir: "{app}"</pre>
  1646. </example>
  1647. </param>
  1648. <param name="HotKey">
  1649. <p>The hot key (or "shortcut key") setting for the shortcut, which is a combination of keys with which the program can be started.</p>
  1650. <p>Note: If you change the shortcut key and reinstall the application, Windows may continue to recognize old shortcut key(s) until you log off and back on or restart the system.</p>
  1651. <example>
  1652. <pre>HotKey: "ctrl+alt+k"</pre>
  1653. </example>
  1654. </param>
  1655. <param name="Comment">
  1656. <p>Specifies the <i>Comment</i> (or "description") field of the shortcut, which determines the popup hint for it. This parameter can include constants.</p>
  1657. <example>
  1658. <pre>Comment: "This is my program"</pre>
  1659. </example>
  1660. </param>
  1661. <param name="IconFilename">
  1662. <p>The filename of a custom icon (located on the user's system) to be displayed. This can be an executable image (.exe, .dll) containing icons or a .ico file. If this parameter is not specified or is blank, Windows will use the file's default icon. This parameter can include constants.</p>
  1663. <example>
  1664. <pre>IconFilename: "{app}\myicon.ico"</pre>
  1665. </example>
  1666. <p>Note: when Setup is running on 64-bit Windows, it will automatically replace <tt>{commonpf32}\</tt>'s value in the filename with '%ProgramFiles(x86)%\' to work around a bug in 64-bit Windows: 64-bit Windows replaces it with '%ProgramFiles%\' instead which is incorrect.</p>
  1667. </param>
  1668. <param name="IconIndex">
  1669. <p>Zero-based index of the icon to use in the file specified by <tt>IconFilename</tt>. Defaults to <tt>0</tt>.</p>
  1670. <p>If <tt>IconIndex</tt> is non-zero and <tt>IconFilename</tt> is not specified or is blank, it will act as if <tt>IconFilename</tt> is the same as <tt>Filename</tt>.</p>
  1671. <example>
  1672. <pre>IconIndex: 0</pre>
  1673. </example>
  1674. </param>
  1675. <param name="AppUserModelID">
  1676. <p>Specifies the Windows 7 (or later) Application User Model ID for the shortcut. Ignored on earlier Windows versions. This parameter can include constants.</p>
  1677. <example>
  1678. <pre>AppUserModelID: "MyCompany.MyProg"</pre>
  1679. </example>
  1680. </param>
  1681. <param name="AppUserModelToastActivatorCLSID">
  1682. <p>Specifies the Windows 10 (or later) Application User Model Toast Activator CLSID for the shortcut. Ignored on earlier Windows versions.</p>
  1683. <example>
  1684. <pre>AppUserModelToastActivatorCLSID: "B784B1A4-D682-4FE6-BDBA-21EDDAE42795"</pre>
  1685. </example>
  1686. </param>
  1687. <param name="Flags">
  1688. <p>This parameter is a set of extra options. Multiple options may be used by separating them by spaces. The following options are supported:</p>
  1689. <flaglist>
  1690. <flag name="closeonexit">
  1691. <p>When this flag is set, Setup will set the "Close on Exit" property of the shortcut. This flag only has an effect if the shortcut points to an MS-DOS application (if it has a .pif extension, to be specific). If neither this flag nor the <tt>dontcloseonexit</tt> flags are specified, Setup will not attempt to change the "Close on Exit" property.</p>
  1692. </flag>
  1693. <flag name="createonlyiffileexists">
  1694. <p>When this flag is set, the installer will only try to create the icon if the file specified by the <tt>Filename</tt> parameter exists.</p>
  1695. </flag>
  1696. <flag name="dontcloseonexit">
  1697. <p>Same as <tt>closeonexit</tt>, except it causes Setup to uncheck the "Close on Exit" property.</p>
  1698. </flag>
  1699. <flag name="excludefromshowinnewinstall">
  1700. <p>Prevents the Start menu entry for the new shortcut from receiving a highlight on Windows 7 and additionally prevents the new shortcut from being automatically pinned the Start screen on Windows 8 (or later). Ignored on earlier Windows versions.</p>
  1701. </flag>
  1702. <flag name="preventpinning">
  1703. <p>Prevents a Start menu entry from being pinnable to Taskbar or the Start Menu on Windows 7 (or later). This also makes the entry ineligible for inclusion in the Start menu's Most Frequently Used (MFU) list. Ignored on earlier Windows versions.</p>
  1704. </flag>
  1705. <flag name="runmaximized">
  1706. <p>When this flag is set, Setup sets the "Run" setting of the icon to "Maximized" so that the program will be initially maximized when it is started.</p>
  1707. </flag>
  1708. <flag name="runminimized">
  1709. <p>When this flag is set, Setup sets the "Run" setting of the icon to "Minimized" so that the program will be initially minimized when it is started.</p>
  1710. </flag>
  1711. <flag name="uninsneveruninstall">
  1712. <p>Instructs the uninstaller not to delete the icon.</p>
  1713. </flag>
  1714. <flag name="useapppaths">
  1715. <p>When this flag is set, specify just a filename (no path) in the <tt>Filename</tt> parameter, and Setup will retrieve the pathname from the "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths" registry key and prepend it to the filename automatically.</p>
  1716. </flag>
  1717. </flaglist>
  1718. <example>
  1719. <pre>Flags: runminimized</pre>
  1720. </example>
  1721. </param>
  1722. </paramlist>
  1723. <p><b><link topic="componentstasksparams">Components and Tasks Parameters</link></b></p>
  1724. <p><b><link topic="commonparams">Common Parameters</link></b></p>
  1725. </body>
  1726. </topic>
  1727. <topic name="inisection" title="[INI] section">
  1728. <keyword value="[INI] section" />
  1729. <keyword value="INI" />
  1730. <body>
  1731. <p>This optional section defines any .INI file entries you would like Setup to set on the user's system.</p>
  1732. <p>Here is an example of an <tt>[INI]</tt> section:</p>
  1733. <precode>
  1734. [INI]
  1735. Filename: "MyProg.ini"; Section: "InstallSettings"; Flags: uninsdeletesection
  1736. Filename: "MyProg.ini"; Section: "InstallSettings"; Key: "InstallPath"; String: "{app}"
  1737. </precode>
  1738. <p>The following is a list of the supported <link topic="params">parameters</link>:</p>
  1739. <paramlist>
  1740. <param name="Filename" required="yes">
  1741. <p>The name of the .INI file you want Setup to modify, which can include constants. If this parameter does not include a path, it will write to the Windows directory. If this parameter is blank, it will write to WIN.INI in the Windows directory.</p>
  1742. <example>
  1743. <pre>Filename: "{app}\MyProg.ini"</pre>
  1744. </example>
  1745. </param>
  1746. <param name="Section" required="yes">
  1747. <p>The name of the section in which to create the entry, which can include constants.</p>
  1748. <example>
  1749. <pre>Section: "Settings"</pre>
  1750. </example>
  1751. </param>
  1752. <param name="Key">
  1753. <p>The name of the key to set, which can include constants. If this parameter is not specified or is blank, no key is created.</p>
  1754. <example>
  1755. <pre>Key: "Version"</pre>
  1756. </example>
  1757. </param>
  1758. <param name="String">
  1759. <p>The value to assign to the key, which can use constants. If this parameter is not specified, no key is created.</p>
  1760. <example>
  1761. <pre>String: "1.0"</pre>
  1762. </example>
  1763. </param>
  1764. <param name="Flags">
  1765. <p>This parameter is a set of extra options. Multiple options may be used by separating them by spaces. The following options are supported:</p>
  1766. <flaglist>
  1767. <flag name="createkeyifdoesntexist">
  1768. <p>Assign to the key <i>only</i> if the key doesn't already exist in the file. If this flag is <i>not</i> specified, the key will be set regardless of whether it already existed.</p>
  1769. </flag>
  1770. <flag name="uninsdeleteentry">
  1771. <p>Delete the entry when the program is uninstalled. This can be combined with the <tt>uninsdeletesectionifempty</tt> flag.</p>
  1772. </flag>
  1773. <flag name="uninsdeletesection">
  1774. <p>When the program is uninstalled, delete the entire section in which the entry is located. It obviously wouldn't be a good idea to use this on a section that is used by Windows itself (like some of the sections in WIN.INI). You should only use this on sections private to your application.</p>
  1775. </flag>
  1776. <flag name="uninsdeletesectionifempty">
  1777. <p>Same as <tt>uninsdeletesection</tt>, but deletes the section only if there are no keys left in it. This can be combined with the <tt>uninsdeleteentry</tt> flag.</p>
  1778. </flag>
  1779. </flaglist>
  1780. <example>
  1781. <pre>Flags: uninsdeleteentry</pre>
  1782. </example>
  1783. </param>
  1784. </paramlist>
  1785. <p><b><link topic="componentstasksparams">Components and Tasks Parameters</link></b></p>
  1786. <p><b><link topic="commonparams">Common Parameters</link></b></p>
  1787. </body>
  1788. </topic>
  1789. <topic name="installdeletesection" title="[InstallDelete] section">
  1790. <keyword value="[InstallDelete] section" />
  1791. <keyword value="InstallDelete" />
  1792. <body>
  1793. <p>This optional section is identical in format to the <link topic="uninstalldeletesection">[UninstallDelete]</link> section, except its entries are processed as the first step of <i>installation.</i></p>
  1794. </body>
  1795. </topic>
  1796. <topic name="languagessection" title="[Languages] section">
  1797. <keyword value="[Languages] section" />
  1798. <keyword value="Languages" />
  1799. <keyword value="language" />
  1800. <body>
  1801. <p>Inno Setup supports multilingual installations. The [Languages] section defines the languages to make available to the Setup program.</p>
  1802. <p>Setup determines the default language to use for its messages in the following order:</p>
  1803. <ol>
  1804. <li>It searches for a language whose <tt>LanguageID</tt> setting (normally specified in the [LangOptions] section of the language's .isl file) matches both the primary language identifier and sublanguage identifier of the current user's UI language or locale (depending on the setting of <link topic="setup_languagedetectionmethod">LanguageDetectionMethod</link>).</li>
  1805. <li>If no match is found, it searches for just a primary language identifier match. If two or more available languages have the same primary language identifier, it selects the first one listed in the [Languages] section.<br />Exception: Simplified Chinese is excluded from consideration in this step if the user's UI language or locale (depending on the setting of <link topic="setup_languagedetectionmethod">LanguageDetectionMethod</link>) is Traditional Chinese, and vice versa.</li>
  1806. <li>If no match is found, it defaults to the first language specified in the [Languages] section.</li>
  1807. </ol>
  1808. <p>If the <link topic="setup_showlanguagedialog">ShowLanguageDialog</link> [Setup] section directive is set to <tt>yes</tt> (the default), a <i>Select Language</i> dialog will be displayed which gives the user an opportunity to override the language Setup chose. See the <link topic="langoptionssection">[LangOptions] section</link> help topic for details.</p>
  1809. <p>The following is an example of a <tt>[Languages]</tt> section. It defines two languages: English, based on the standard Default.isl file, and Dutch, based on a third-party translation.</p>
  1810. <precode>
  1811. [Languages]
  1812. Name: "en"; MessagesFile: "compiler:Default.isl"
  1813. Name: "nl"; MessagesFile: "compiler:Languages\Dutch.isl"
  1814. </precode>
  1815. <paramlist>
  1816. <param name="Name" required="yes">
  1817. <p>The internal name of the language, which you can set to anything you like. This can used as a prefix on [LangOptions] or [Messages] section entries to have the entries apply to only one language. The {language} constant returns the internal name of the selected language.</p>
  1818. <example>
  1819. <pre>Name: "en"</pre>
  1820. </example>
  1821. </param>
  1822. <param name="MessagesFile" required="yes">
  1823. <p>Specifies the name(s) of the .isl file(s) to read the default messages from. The file(s) must be located in your installation's <link topic="sourcedirectorynotes">source directory</link> when running the compiler, unless a fully qualified pathname is specified or the pathname is prefixed by "compiler:", in which case it looks for the file in the compiler directory.</p>
  1824. <p>Each message file may contain a <link topic="langoptionssection">[LangOptions] section</link>, a <link topic="messagessection">[Messages] section</link>, and a <link topic="custommessagessection">[CustomMessages] section.</link></p>
  1825. <p>When multiple files are specified, they are read in the order they are specified, thus the last message file overrides any language options or messages from previous files. Any language options or messages in the main script override the ones from message files.</p>
  1826. <p>The file is recommended to be UTF-8 encoded, without a BOM.</p>
  1827. <examples>
  1828. <pre>
  1829. MessagesFile: "compiler:Dutch.isl"
  1830. MessagesFile: "compiler:Default.isl,compiler:MyMessages.isl"
  1831. </pre>
  1832. </examples>
  1833. </param>
  1834. <param name="LicenseFile">
  1835. <p>Specifies the name of an optional license agreement file, in .txt or .rtf (rich text) format, which is displayed before the user selects the destination directory for the program. This file must be located in your installation's <link topic="sourcedirectorynotes">source directory</link> when running the compiler, unless a fully qualified pathname is specified or the pathname is prefixed by "compiler:", in which case it looks for the file in the compiler directory.</p>
  1836. <p>If an Unicode .txt file is used, it must be UTF-8 (with or without a BOM) or UTF-16LE encoded.</p>
  1837. <example>
  1838. <pre>LicenseFile: "license-Dutch.txt"</pre>
  1839. </example>
  1840. </param>
  1841. <param name="InfoBeforeFile">
  1842. <p>Specifies the name of an optional "readme" file, in .txt or .rtf (rich text) format, which is displayed before the user selects the destination directory for the program. This file must be located in your installation's <link topic="sourcedirectorynotes">source directory</link> when running the compiler, unless a fully qualified pathname is specified or the pathname is prefixed by "compiler:", in which case it looks for the file in the compiler directory.</p>
  1843. <p>If an Unicode .txt file is used, it must be UTF-8 (with or without a BOM) or UTF-16LE encoded.</p>
  1844. <example>
  1845. <pre>InfoBeforeFile: "infobefore-Dutch.txt"</pre>
  1846. </example>
  1847. </param>
  1848. <param name="InfoAfterFile">
  1849. <p>Specifies the name of an optional "readme" file, in .txt or .rtf (rich text) format, which is displayed after a successful install. This file must be located in your installation's <link topic="sourcedirectorynotes">source directory</link> when running the compiler, unless a fully qualified pathname is specified or the pathname is prefixed by "compiler:", in which case it looks for the file in the compiler directory.</p>
  1850. <p>This differs from <tt>isreadme</tt> files in that this text is displayed as a page of the wizard, instead of in a separate Notepad window.</p>
  1851. <p>If an Unicode .txt file is used, it must be UTF-8 (with or without a BOM) or UTF-16LE encoded.</p>
  1852. <example>
  1853. <pre>InfoAfterFile: "infoafter-Dutch.txt"</pre>
  1854. </example>
  1855. </param>
  1856. </paramlist>
  1857. </body>
  1858. </topic>
  1859. <topic name="messagessection" title="[Messages] section">
  1860. <keyword value="[Messages] section" />
  1861. <keyword value="Messages" />
  1862. <keyword value="Default.isl" anchor="Default.isl" />
  1863. <keyword value="language" />
  1864. <keyword value="BeveledLabel" anchor="BeveledLabel" />
  1865. <body>
  1866. <p>A [Messages] section is used to define the messages displayed by the Setup program and uninstaller. Normally, you need not create a [Messages] section in your script file, since all messages are, by default, pulled in from the file <a name="Default.isl"><i>Default.isl</i></a> included with Inno Setup (or whichever file is specified by a [Languages] section entry).</p>
  1867. <p>However, particular messages can be overridden by creating a [Messages] section in your script file. To do this, first you will need to know the ID of the message you want to change. This can be easily found by searching Default.isl. For example, say you wanted to change the "&amp;Next" button on the wizard to read "&amp;Forward". The ID of this message is "ButtonNext", so you would create a [Messages] section like this:</p>
  1868. <precode>
  1869. [Messages]
  1870. ButtonNext=&amp;Forward
  1871. </precode>
  1872. <p>Some messages take arguments such as %1 and %2. You can rearrange the order of the arguments (i.e. move the %2 before a %1) and also duplicate arguments if needed (i.e. "%1 ... %1 %2"). On messages with arguments, use two consecutive "%" characters to embed a single "%". "%n" creates a line break.</p>
  1873. <p>If you wish to translate all of Inno Setup's text to another language, instead of modifying Default.isl or overriding each message in every script you create, make a copy of Default.isl with another name like <i>MyTranslation.isl.</i> On any installation you wish to use MyTranslation.isl, create a <link topic="languagessection">[Languages] section</link> entry pointing to the file.</p>
  1874. <p>In cases where there are multiple [Languages] section entries, specifying a [Messages] section entry in your script (as opposed to an .isl file) will by default override that message for all languages. To apply a [Messages] section entry to only one language, prefix it with the language's internal name followed by a period. For example:</p>
  1875. <precode>
  1876. en.ButtonNext=&amp;Forward
  1877. </precode>
  1878. <p>If a message is missing or not recognized for a language, the compiler will warn you about this, which can be disabled using <link topic="setup_missingmessageswarning">MissingMessagesWarning</link> and <link topic="setup_notrecognizedmessageswarning">NotRecognizedMessagesWarning</link>.</p>
  1879. <heading>Special-purpose messages</heading>
  1880. <p>The <a name="BeveledLabel"><tt>BeveledLabel</tt></a> message can be used to specify a line of text that is shown in the lower left corner of the wizard window and uninstaller window. The following is an example:</p>
  1881. <precode>
  1882. [Messages]
  1883. BeveledLabel=Inno Setup
  1884. </precode>
  1885. <p>The <tt>HelpTextNote</tt> message can be used to specify one or more lines of text that are added to the list of parameters in the summary shown when passing <link topic="setupcmdline" anchor="HELP">/HELP</link> on the command line. The following is an example:</p>
  1886. <precode>
  1887. [Messages]
  1888. HelpTextNote=/PORTABLE=1%nEnable portable mode.
  1889. </precode>
  1890. <p>These special-purpose messages default to an empty string so make sure to provide a non-empty default for all languages from your main script if you want to use these messages.</p>
  1891. </body>
  1892. </topic>
  1893. <topic name="custommessagessection" title="[CustomMessages] section">
  1894. <keyword value="[CustomMessages] section" />
  1895. <keyword value="CustomMessages" />
  1896. <body>
  1897. <p>A [CustomMessages] section is used to define the custom message values for {cm:...} constants. See the <link topic="consts" anchor="cm">Constants</link> documentation for more information.</p>
  1898. <p>An example of a task with a description taken from the [CustomMessages] section using a {cm:...} constant:</p>
  1899. <precode>
  1900. [CustomMessages]
  1901. CreateDesktopIcon=Create a &amp;desktop icon
  1902. [Tasks]
  1903. Name: desktopicon; Description: "{cm:CreateDesktopIcon}"
  1904. </precode>
  1905. <p>Messages may take arguments, from %1 up to %9. You can rearrange the order of the arguments (i.e. move the %2 before a %1) and also duplicate arguments if needed (i.e. "%1 ... %1 %2"). On messages with arguments, use two consecutive "%" characters to embed a single "%". "%n" creates a line break.</p>
  1906. <p>In cases where there are multiple [Languages] section entries, specifying a [CustomMessages] section entry in your script (as opposed to an .isl file) will by default override that message for all languages. To apply a [CustomMessages] section entry to only one language, prefix it with the language's internal name followed by a period. For example:</p>
  1907. <precode>
  1908. nl.CreateDesktopIcon=Maak een snelkoppeling op het &amp;bureaublad
  1909. </precode>
  1910. <p>Currently, the .isl files for all languages that come with Inno Setup have the following custom messages defined and translated for each language (shown here with their English values):</p>
  1911. <precode>
  1912. NameAndVersion=%1 version %2
  1913. AdditionalIcons=Additional icons:
  1914. CreateDesktopIcon=Create a &amp;desktop icon
  1915. CreateQuickLaunchIcon=Create a &amp;Quick Launch icon
  1916. ProgramOnTheWeb=%1 on the Web
  1917. UninstallProgram=Uninstall %1
  1918. LaunchProgram=Launch %1
  1919. AssocFileExtension=&amp;Associate %1 with the %2 file extension
  1920. AssocingFileExtension=Associating %1 with the %2 file extension...
  1921. AutoStartProgramGroupDescription=Startup:
  1922. AutoStartProgram=Automatically start %1
  1923. AddonHostProgramNotFound=%1 could not be located in the folder you selected.%n%nDo you want to continue anyway?
  1924. </precode>
  1925. <p>You may use these predefined custom messages in your own script. An example which uses <tt>UninstallProgram</tt>:</p>
  1926. <precode>
  1927. [Icons]
  1928. Name: "{group}\{cm:UninstallProgram,My Program}"; Filename: "{uninstallexe}"
  1929. </precode>
  1930. </body>
  1931. </topic>
  1932. <topic name="langoptionssection" title="[LangOptions] section">
  1933. <keyword value="[LangOptions] section" />
  1934. <keyword value="LangOptions" anchor="LangOptions" />
  1935. <keyword value="LanguageName" anchor="LanguageName" />
  1936. <keyword value="LanguageID" anchor="LanguageID" />
  1937. <keyword value="LanguageCodePage" anchor="LanguageCodePage" />
  1938. <keyword value="DialogFontName" anchor="DialogFontName" />
  1939. <keyword value="DialogFontSize" anchor="DialogFontSize" />
  1940. <keyword value="WelcomeFontName" anchor="WelcomeFontName" />
  1941. <keyword value="WelcomeFontSize" anchor="WelcomeFontSize" />
  1942. <keyword value="TitleFontName" anchor="TitleFontName" />
  1943. <keyword value="TitleFontSize" anchor="TitleFontSize" />
  1944. <keyword value="CopyrightFontName" anchor="CopyrightFontName" />
  1945. <keyword value="CopyrightFontSize" anchor="CopyrightFontSize" />
  1946. <keyword value="RightToLeft" anchor="RightToLeft" />
  1947. <keyword value="language" />
  1948. <keyword value="fonts" />
  1949. <body>
  1950. <p>A <a name="LangOptions">[LangOptions]</a> section is used to define the language-specific settings, such as fonts, used by the Setup program and uninstaller. Normally, you need not create a [LangOptions] section in your script file, since the language-specific settings are, by default, pulled in from the file <i>Default.isl</i> included with Inno Setup (or whichever file is specified by a [Languages] section entry).</p>
  1951. <p>The following is an example of a <tt>[LangOptions]</tt> section. (The settings listed below are the defaults.)</p>
  1952. <precode>
  1953. [LangOptions]
  1954. LanguageName=English
  1955. LanguageID=$0409
  1956. LanguageCodePage=0
  1957. DialogFontName=
  1958. DialogFontSize=8
  1959. WelcomeFontName=Verdana
  1960. WelcomeFontSize=12
  1961. TitleFontName=Arial
  1962. TitleFontSize=29
  1963. CopyrightFontName=Arial
  1964. CopyrightFontSize=8
  1965. RightToLeft=no
  1966. </precode>
  1967. <p><b><a name="LanguageName">LanguageName</a></b> is the native name of the language (so not the English name). It is displayed in the list of available languages on the <i>Select Language</i> dialog in a multilingual installation.</p>
  1968. <p><b><a name="LanguageID">LanguageID</a></b> is the numeric "language identifier" of the language. Refer to the <extlink href="http://msdn.microsoft.com/en-us/library/dd318693.aspx">list of valid language identifiers on MSDN</extlink>. This, along with <tt>LanguageCodePage</tt>, is used for the purpose of auto-detecting the most appropriate language to use by default, so be sure it is set correctly. It should always begin with a "$" sign, since language identifiers are in hexadecimal. If no language identifier currently exists for the language, set this to zero.</p>
  1969. <p><b><a name="LanguageCodePage">LanguageCodePage</a></b> specifies the "code page" (character set) used by the compiler to convert any non-Unicode text in the language's files to Unicode text. Note that any text in the .iss file such as a [CustomMessages] entry for the language is never converted and should be in Unicode already.<br/>
  1970. If no code page currently exists for the language, set <tt>LanguageCodePage</tt> to zero and only use Unicode text (UTF-8) in the languages's files.<br/>
  1971. If the language only uses ASCII characters (like English), set <tt>LanguageCodePage</tt> to zero as well.<br/>
  1972. If <tt>LanguageCodePage</tt> is set to zero but non-Unicode text is used in one of the language's files, the system code page will be used to convert the text in the file to Unicode.</p>
  1973. <p><b><a name="DialogFontName">DialogFontName</a></b> and <b><a name="DialogFontSize">DialogFontSize</a></b> specify the font name and point size to use in dialogs. If no <tt>DialogFontName</tt> setting is present, then the value of the <link topic="setup_defaultdialogfontname">DefaultDialogFontName</link> [Setup] section directive is used for the font name. If the specified font name does not exist on the user's system or is an empty string, 8-point <i>Microsoft Sans Serif</i> or <i>MS Sans Serif</i> will be substituted.</p>
  1974. <p><b><a name="WelcomeFontName">WelcomeFontName</a></b> and <b><a name="WelcomeFontSize">WelcomeFontSize</a></b> specify the font name and point size to use at the top of the <i>Welcome</i> and <i>Setup Completed</i> wizard pages. If the specified font name does not exist on the user's system or is an empty string, 12-point <i>Microsoft Sans Serif</i> or <i>MS Sans Serif</i> will be substituted.</p>
  1975. <p><b><a name="TitleFontName">TitleFontName</a></b> and <b><a name="TitleFontSize">TitleFontSize</a></b> specify the font name and point size to use when displaying the application name on the background window (only visible when <tt>WindowVisible=yes</tt>). If the specified font name does not exist on the user's system, 29-point <i>Arial</i> will be substituted. If the specified font name is an empty string, 29-point <i>Microsoft Sans Serif</i> or <i>MS Sans Serif</i> will be substituted.</p>
  1976. <p><b><a name="CopyrightFontName">CopyrightFontName</a></b> and <b><a name="CopyrightFontSize">CopyrightFontSize</a></b> specify the font name and point size to use when displaying the <tt>AppCopyright</tt> message on the background window (only visible when <tt>WindowVisible=yes</tt>). If the specified font name does not exist on the user's system, 8-point <i>Arial</i> will be substituted. If the specified font name is an empty string, 8-point <i>Microsoft Sans Serif</i> or <i>MS Sans Serif</i> will be substituted.</p>
  1977. <p><b><a name="RightToLeft">RightToLeft</a></b> specifies whether the language is written from right to left. If set to <tt>yes</tt>, text alignment and reading order will be reversed (with some intentional exceptions), and controls will be arranged from right to left ("flipped").</p>
  1978. <p><br/>
  1979. In cases where there are multiple [Languages] section entries, specifying a [LangOptions] section directive in your script (as opposed to an .isl file) will by default override that directive for all languages. To apply a [LangOptions] section directive to only one language, prefix it with the language's internal name followed by a period. For example:</p>
  1980. <precode>
  1981. en.LanguageName=English
  1982. </precode>
  1983. </body>
  1984. </topic>
  1985. <topic name="registrysection" title="[Registry] section">
  1986. <keyword value="[Registry] section" />
  1987. <keyword value="Registry" />
  1988. <keyword value="HKA" />
  1989. <keyword value="HKEY_AUTO" />
  1990. <keyword value="HKCR" />
  1991. <keyword value="HKEY_CLASSES_ROOT" />
  1992. <keyword value="HKCU" />
  1993. <keyword value="HKEY_CURRENT_USER" />
  1994. <keyword value="HKLM" />
  1995. <keyword value="HKEY_LOCAL_MACHINE" />
  1996. <keyword value="HKU" />
  1997. <keyword value="HKEY_USERS" />
  1998. <keyword value="HKCC" />
  1999. <keyword value="HKEY_CURRENT_CONFIG" />
  2000. <body>
  2001. <p>This optional section defines any registry keys/values you would like Setup to create, modify, or delete on the user's system.</p>
  2002. <p>By default, registry keys and values created by Setup are not deleted at uninstall time. If you want the uninstaller to delete keys or values, you must include one of the <tt>uninsdelete*</tt> flags described below.</p>
  2003. <p>The following is an example of a <tt>[Registry]</tt> section.</p>
  2004. <precode>
  2005. [Registry]
  2006. Root: HKLM; Subkey: "Software\My Company"; Flags: uninsdeletekeyifempty
  2007. Root: HKLM; Subkey: "Software\My Company\My Program"; Flags: uninsdeletekey
  2008. Root: HKLM; Subkey: "Software\My Company\My Program\Settings"; ValueType: string; ValueName: "InstallPath"; ValueData: "{app}"
  2009. </precode>
  2010. <p>The following is a list of the supported <link topic="params">parameters</link>:</p>
  2011. <paramlist>
  2012. <param name="Root" required="yes">
  2013. <p>The root key. This must be one of the following values:</p>
  2014. <indent>
  2015. <table>
  2016. <tr><td><tt>HKCU</tt></td><td>(HKEY_CURRENT_USER)</td></tr>
  2017. <tr><td><tt>HKLM</tt></td><td>(HKEY_LOCAL_MACHINE)</td></tr>
  2018. <tr><td><tt>HKCR</tt></td><td>(HKEY_CLASSES_ROOT)</td></tr>
  2019. <tr><td><tt>HKU</tt></td><td>(HKEY_USERS)</td></tr>
  2020. <tr><td><tt>HKCC</tt></td><td>(HKEY_CURRENT_CONFIG)</td></tr>
  2021. </table>
  2022. </indent>
  2023. <p>Additionally one special value is allowed:</p>
  2024. <indent>
  2025. <table>
  2026. <tr><td><tt>HKA</tt></td><td>(equals HKLM in <link topic="admininstallmode">administrative install mode</link>, HKCU otherwise)</td></tr>
  2027. </table>
  2028. </indent>
  2029. <p><tt>HKCU</tt> and <tt>HKA</tt> should only be used for settings which are compatible with roaming profiles.</p>
  2030. <p>Using <tt>HKCR</tt> is not recommended, use <tt>HKA</tt> with the <tt>Subkey</tt> parameter set to "Software\Classes" instead.</p>
  2031. <p>The values (including <tt>HKA</tt>) may have a suffix of <tt>32</tt> or <tt>64</tt>. Root key values with a suffix of <tt>32</tt> (for example, <tt>HKLM32</tt>) map to the 32-bit view of the registry; root key values with a suffix of <tt>64</tt> (for example, <tt>HKLM64</tt>) map to the 64-bit view of the registry.</p>
  2032. <p>Root key values with a suffix of <tt>64</tt> can only be used when Setup is running on 64-bit Windows, otherwise an error will occur. On an installation supporting both 32- and 64-bit architectures, it is possible to avoid the error by adding a <tt>Check: IsWin64</tt> parameter, which will cause the entry to be silently skipped when running on 32-bit Windows.</p>
  2033. <p>A root key value without a suffix (for example, <tt>HKLM</tt>) is equivalent to the value with a suffix of <tt>32</tt> (for example, <tt>HKLM32</tt>) unless the install is running in <link topic="32vs64bitinstalls">64-bit install mode</link>, in which case it is equivalent to the value with a suffix of <tt>64</tt> (for example, <tt>HKLM64</tt>).</p>
  2034. <example>
  2035. <pre>Root: HKLM</pre>
  2036. </example>
  2037. </param>
  2038. <param name="Subkey" required="yes">
  2039. <p>The subkey name, which can include constants.</p>
  2040. <example>
  2041. <pre>Subkey: "Software\My Company\My Program"</pre>
  2042. </example>
  2043. </param>
  2044. <param name="ValueType">
  2045. <p>The data type of the value. This must be one of the following:</p>
  2046. <indent><p><tt>
  2047. none<br/>
  2048. string<br/>
  2049. expandsz<br/>
  2050. multisz<br/>
  2051. dword<br/>
  2052. qword<br/>
  2053. binary</tt></p></indent>
  2054. <p>If <tt>none</tt> (the default setting) is specified, Setup will create the key but <i>not</i> a value. In this case the <tt>ValueData</tt> parameter is ignored.<br/>
  2055. If <tt>string</tt> is specified, Setup will create a string (REG_SZ) value.<br/>
  2056. If <tt>expandsz</tt> is specified, Setup will create an expand-string (REG_EXPAND_SZ) value.<br/>
  2057. If <tt>multisz</tt> is specified, Setup will create an multi-string (REG_MULTI_SZ) value.<br/>
  2058. If <tt>dword</tt> is specified, Setup will create a 32-bit integer (REG_DWORD) value.<br/>
  2059. If <tt>qword</tt> is specified, Setup will create a 64-bit integer (REG_QWORD) value.<br/>
  2060. If <tt>binary</tt> is specified, Setup will create a binary (REG_BINARY) value.</p>
  2061. <example>
  2062. <pre>ValueType: string</pre>
  2063. </example>
  2064. </param>
  2065. <param name="ValueName">
  2066. <p>The name of the value to modify, which can include constants. If this is blank, it will modify the "Default" value.</p>
  2067. <example>
  2068. <pre>ValueName: "Version"</pre>
  2069. </example>
  2070. </param>
  2071. <param name="ValueData">
  2072. <p>The data for the value. If the <tt>ValueType</tt> parameter is <tt>string</tt>, <tt>expandsz</tt>, or <tt>multisz</tt>, this is a string that can include constants. If the data type is <tt>dword</tt> or <tt>qword</tt>, this can be a decimal integer (e.g. "123"), a hexadecimal integer (e.g. "$7B"), or a constant which resolves to an integer. Supports digit separators if the data type is <tt>qword</tt>. If the data type is <tt>binary</tt>, this is a sequence of hexadecimal bytes in the form: "00 ff 12 34". If the data type is <tt>none</tt>, this is ignored.</p>
  2073. <p>On a <tt>string</tt>, <tt>expandsz</tt>, or <tt>multisz</tt> type value, you may use a special constant called <tt>{olddata}</tt> in this parameter. <tt>{olddata}</tt> is replaced with the previous data of the registry value. The <tt>{olddata}</tt> constant can be useful if you need to append a string to an existing value, for example, <tt>{olddata};{app}</tt>. If the value does not exist or the existing value isn't a string type, the {olddata} constant is silently removed. {olddata} will also be silently removed if the value being created is a <tt>multisz</tt> type but the existing value is not a multi-string type (i.e. it's REG_SZ or REG_EXPAND_SZ), and vice versa.</p>
  2074. <p>On a <tt>multisz</tt> type value, you may use a special constant called <tt>{break}</tt> in this parameter to embed line breaks (nulls).</p>
  2075. <example>
  2076. <pre>ValueData: "1.0"</pre>
  2077. </example>
  2078. </param>
  2079. <param name="Permissions">
  2080. <p>Specifies additional permissions to grant in the registry key's ACL (access control list). It is not recommended that you use this parameter if you aren't familiar with ACLs or why you would need to change them, because misusing it could negatively impact system security.</p>
  2081. <p>For this parameter to have an effect the current user must be able to change the permissions on the registry key. In the event these conditions are not met, no error message will be displayed, and the permissions will not be set.</p>
  2082. <p>This parameter should <i>only</i> be used on registry keys private to your application. Never change the ACLs on a top-level key like HKEY_LOCAL_MACHINE\SOFTWARE, otherwise you can open up security holes on your users' systems.</p>
  2083. <p>The specified permissions are set regardless of whether the registry key existed prior to installation. The permissions are not set if <tt>ValueType</tt> is <tt>none</tt> and the <tt>deletekey</tt> flag or <tt>deletevalue</tt> flag is used.</p>
  2084. <p>This parameter can include one or more space separated values in the format:</p>
  2085. <indent><p><tt><link topic="usergroupids">&lt;user or group identifier&gt;</link>-&lt;access type&gt;</tt></p></indent>
  2086. <p>The following access types are supported for the [Registry] section:</p>
  2087. <flaglist>
  2088. <flag name="full">
  2089. <p>Grants "Full Control" permission, which is the same as <tt>modify</tt> (see below), but additionally allows the specified user/group to take ownership of the registry key and change its permissions. Use sparingly; generally, <tt>modify</tt> is sufficient.</p>
  2090. </flag>
  2091. <flag name="modify">
  2092. <p>Grants "Modify" permission, which allows the specified user/group to read, create, modify, and delete values and subkeys.</p>
  2093. </flag>
  2094. <flag name="read">
  2095. <p>Grants "Read" permission, which allows the specified user/group to read values and subkeys.</p>
  2096. </flag>
  2097. </flaglist>
  2098. <example>
  2099. <pre>Permissions: users-modify</pre>
  2100. </example>
  2101. </param>
  2102. <param name="Flags">
  2103. <p>This parameter is a set of extra options. Multiple options may be used by separating them by spaces. The following options are supported:</p>
  2104. <flaglist>
  2105. <flag name="createvalueifdoesntexist">
  2106. <p>When this flag is specified, Setup will create the value <i>only</i> if a value of the same name doesn't already exist. This flag has no effect if the data type is <tt>none</tt>, or if you specify the <tt>deletevalue</tt> flag.</p>
  2107. </flag>
  2108. <flag name="deletekey">
  2109. <p>When this flag is specified, Setup will first try deleting the entire key if it exists, including all values and subkeys in it. If <tt>ValueType</tt> is not <tt>none</tt>, it will then create a new key and value.</p>
  2110. <p>To prevent disasters, this flag is ignored during installation if <tt>Subkey</tt> is blank or contains only backslashes.</p>
  2111. </flag>
  2112. <flag name="deletevalue">
  2113. <p>When this flag is specified, Setup will first try deleting the value if it exists. If <tt>ValueType</tt> is not <tt>none</tt>, it will then create the key if it didn't already exist, and the new value.</p>
  2114. </flag>
  2115. <flag name="dontcreatekey">
  2116. <p>When this flag is specified, Setup will not attempt to create the key or any value if the key did not already exist on the user's system. No error message is displayed if the key does not exist.</p>
  2117. <p>Typically this flag is used in combination with the <tt>uninsdeletekey</tt> flag, for deleting keys during uninstallation but not creating them during installation.</p>
  2118. </flag>
  2119. <flag name="noerror">
  2120. <p>Don't display an error message if Setup fails to create the key or value for any reason.</p>
  2121. </flag>
  2122. <flag name="preservestringtype">
  2123. <p>This is only applicable when the <tt>ValueType</tt> parameter is <tt>string</tt> or <tt>expandsz</tt>. When this flag is specified and the value did not already exist or the existing value isn't a string type (REG_SZ or REG_EXPAND_SZ), it will be created with the type specified by <tt>ValueType</tt>. If the value did exist and is a string type, it will be replaced with the same value type as the pre-existing value.</p>
  2124. </flag>
  2125. <flag name="uninsclearvalue">
  2126. <p>When the program is uninstalled, set the value's data to a null string (type REG_SZ). This flag cannot be combined with the <tt>uninsdeletekey</tt> flag.</p>
  2127. </flag>
  2128. <flag name="uninsdeletekey">
  2129. <p>When the program is uninstalled, delete the entire key, including all values and subkeys in it. It obviously wouldn't be a good idea to use this on a key that is used by Windows itself. You should only use this on keys private to your application.</p>
  2130. <p>To prevent disasters, this flag is ignored during installation if <tt>Subkey</tt> is blank or contains only backslashes.</p>
  2131. </flag>
  2132. <flag name="uninsdeletekeyifempty">
  2133. <p>When the program is uninstalled, delete the key if it has no values or subkeys left in it. This flag can be combined with <tt>uninsdeletevalue.</tt></p>
  2134. <p>To prevent disasters, this flag is ignored during installation if <tt>Subkey</tt> is blank or contains only backslashes.</p>
  2135. </flag>
  2136. <flag name="uninsdeletevalue">
  2137. <p>Delete the value when the program is uninstalled. This flag can be combined with <tt>uninsdeletekeyifempty.</tt></p>
  2138. <p><b>NOTE:</b> In Inno Setup versions prior to 1.1, you could use this flag along with the data type <tt>none</tt> and it would function as a "delete key if empty" flag. This technique is no longer supported. You must now use the <tt>uninsdeletekeyifempty</tt> flag to accomplish this.</p>
  2139. </flag>
  2140. </flaglist>
  2141. <example>
  2142. <pre>Flags: uninsdeletevalue</pre>
  2143. </example>
  2144. </param>
  2145. </paramlist>
  2146. <p><b><link topic="componentstasksparams">Components and Tasks Parameters</link></b></p>
  2147. <p><b><link topic="commonparams">Common Parameters</link></b></p>
  2148. </body>
  2149. </topic>
  2150. <topic name="runsection" title="[Run] &amp; [UninstallRun] sections">
  2151. <keyword value="[Run] section" />
  2152. <keyword value="Run" />
  2153. <keyword value="[UninstallRun] section" />
  2154. <keyword value="UninstallRun" />
  2155. <body>
  2156. <p>The [Run] section is optional, and specifies any number of programs to execute after the program has been successfully installed, but before the Setup program displays the final dialog. The [UninstallRun] section is optional as well, and specifies any number of programs to execute as the first step of <i>uninstallation.</i> Both sections share an identical syntax, except where otherwise noted below.</p>
  2157. <p>Programs are executed in the order they appear in the script. By default, when processing a [Run]/[UninstallRun] entry, Setup/Uninstall will wait until the program has terminated before proceeding to the next one, unless the <tt>nowait</tt>, <tt>shellexec</tt>, or <tt>waituntilidle</tt> flags are used.</p>
  2158. <p>Note that by default, if a program executed in the [Run] section queues files to be replaced on the next reboot (by calling MoveFileEx or by modifying wininit.ini), Setup will detect this and prompt the user to restart the computer at the end of installation. If you don't want this, set the <link topic="setup_restartifneededbyrun">RestartIfNeededByRun</link> directive to <tt>no</tt>.</p>
  2159. <p>The following is an example of a <tt>[Run]</tt> section.</p>
  2160. <precode>
  2161. [Run]
  2162. Filename: "{app}\Init.exe"; Parameters: "/x"
  2163. Filename: "{app}\Readme.txt"; Description: "View the README file"; Flags: postinstall shellexec skipifsilent
  2164. Filename: "{app}\MyProg.exe"; Description: "Launch application"; Flags: postinstall nowait skipifsilent unchecked
  2165. </precode>
  2166. <p>The following is a list of the supported <link topic="params">parameters</link>:</p>
  2167. <paramlist>
  2168. <param name="Filename" required="yes">
  2169. <p>The program to execute, or file/folder to open. If <tt>Filename</tt> is not an executable (.exe or .com) or batch file (.bat or .cmd), you <i>must</i> use the <tt>shellexec</tt> flag on the entry. This parameter can include constants.</p>
  2170. <example>
  2171. <pre>Filename: "{app}\INIT.EXE"</pre>
  2172. </example>
  2173. </param>
  2174. <param name="Description">
  2175. <p>Valid only in a <tt>[Run]</tt> section. The description of the entry, which can include constants. This description is used for entries with the <tt>postinstall</tt> flag. If the description is not specified for an entry, Setup will use a default description. This description depends on the type of the entry (normal or <tt>shellexec</tt>).</p>
  2176. <example>
  2177. <pre>Description: "View the README file"</pre>
  2178. </example>
  2179. </param>
  2180. <param name="Parameters">
  2181. <p>Optional command line parameters for the program, which can include constants.</p>
  2182. <example>
  2183. <pre>Parameters: "/x"</pre>
  2184. </example>
  2185. </param>
  2186. <param name="WorkingDir">
  2187. <p>The initial current directory for the program. If this parameter is not specified or is blank, it uses the directory from the <tt>Filename</tt> parameter; if <tt>Filename</tt> does not include a path, it will use a default directory. This parameter can include constants.</p>
  2188. <example>
  2189. <pre>WorkingDir: "{app}"</pre>
  2190. </example>
  2191. </param>
  2192. <param name="StatusMsg">
  2193. <p>Valid only in a <tt>[Run]</tt> section. Determines the message displayed on the wizard while the program is executed. If this parameter is not specified or is blank, a default message of "Finishing installation..." will be used. This parameter can include constants.</p>
  2194. <example>
  2195. <pre>StatusMsg: "Installing BDE..."</pre>
  2196. </example>
  2197. </param>
  2198. <param name="RunOnceId">
  2199. <p>Valid only in an <tt>[UninstallRun]</tt> section. If the <link topic="sameappnotes">same application</link> is installed more than once, "run" entries will be duplicated in the uninstall log file. By assigning a string to <tt>RunOnceId</tt>, you can ensure that a particular <tt>[UninstallRun]</tt> entry will only be executed once during uninstallation. For example, if two or more "run" entries in the uninstall log have a <tt>RunOnceId</tt> setting of "DelService", only the latest entry with a <tt>RunOnceId</tt> setting of "DelService" will be executed; the rest will be ignored. Note that <tt>RunOnceId</tt> comparisons are case-sensitive. If you don't assign a string to <tt>RunOnceId</tt>, the compiler will warn you about this, which can be disabled using <link topic="setup_missingrunonceidswarning">MissingRunOnceIdsWarning</link>.</p>
  2200. <example>
  2201. <pre>RunOnceId: "DelService"</pre>
  2202. </example>
  2203. </param>
  2204. <param name="Verb">
  2205. <p>Specifies the action to be performed on the file. Must be combined with the <tt>shellexec</tt> flag. Commonly available verbs include "open" and "print". If this parameter is not specified or is blank, the default verb for the file type will be used (typically "open").</p>
  2206. <example>
  2207. <pre>Verb: "print"</pre>
  2208. </example>
  2209. </param>
  2210. <param name="Flags">
  2211. <p>This parameter is a set of extra options. Multiple options may be used by separating them by spaces. The following options are supported:</p>
  2212. <flaglist>
  2213. <flag name="32bit">
  2214. <p>Causes the <tt>{sys}</tt> constant to map to the 32-bit System directory when used in the <tt>Filename</tt> and <tt>WorkingDir</tt> parameters. This is the default behavior in <link topic="32vs64bitinstalls">32-bit install mode</link>.</p>
  2215. <p>This flag cannot be combined with the <tt>shellexec</tt> flag.</p>
  2216. </flag>
  2217. <flag name="64bit">
  2218. <p>Causes the <tt>{sys}</tt> constant to map to the 64-bit System directory when used in the <tt>Filename</tt> and <tt>WorkingDir</tt> parameters. This is the default behavior in <link topic="32vs64bitinstalls">64-bit install mode</link> install.</p>
  2219. <p>This flag can only be used when Setup is running on 64-bit Windows, otherwise an error will occur. On an installation supporting both 32- and 64-bit architectures, it is possible to avoid the error by adding a <tt>Check: IsWin64</tt> parameter, which will cause the entry to be silently skipped when running on 32-bit Windows.</p>
  2220. <p>This flag cannot be combined with the <tt>shellexec</tt> flag.</p>
  2221. </flag>
  2222. <flag name="dontlogparameters">
  2223. <p>If this flag is specified, the command line parameters for the program will not be included in the log file.</p>
  2224. </flag>
  2225. <flag name="hidewizard">
  2226. <p>If this flag is specified, the wizard will be hidden while the program is running.</p>
  2227. </flag>
  2228. <flag name="logoutput">
  2229. <p>If this flag is specified, the output of the program will be included in the log file.</p>
  2230. <p>This flag cannot be combined with the <tt>nowait</tt>, <tt>runasoriginaluser</tt>, <tt>shellexec</tt>, and <tt>waituntilidle</tt> flags.</p>
  2231. </flag>
  2232. <flag name="nowait">
  2233. <p>If this flag is specified, it will not wait for the process to finish executing before proceeding to the next [Run] entry, or completing Setup. Cannot be combined with <tt>waituntilidle</tt> or <tt>waituntilterminated</tt>.</p>
  2234. </flag>
  2235. <flag name="postinstall">
  2236. <p>Valid only in a [Run] section. Instructs Setup to create a checkbox on the <i>Setup Completed</i> wizard page. The user can uncheck or check this checkbox and thereby choose whether this entry should be processed or not. Previously this flag was called <tt>showcheckbox</tt>.</p>
  2237. <p>If Setup has to restart the user's computer (as a result of installing a file with the flag <tt>restartreplace</tt> or if the <tt>AlwaysRestart</tt> <tt>[Setup]</tt> section directive is <tt>yes</tt>), there will not be an opportunity for the checkbox to be displayed and therefore the entry will never be processed.</p>
  2238. <p>The <tt>isreadme</tt> flag for entries in the [Files] section is now obsolete. If the compiler detects a entry with an <tt>isreadme</tt> flag, it strips the <tt>isreadme</tt> flag from the [Files] entry and inserts a generated [Run] entry at the head of the list of [Run] entries. This generated [Run] entry runs the README file and has flags <tt>shellexec</tt>, <tt>skipifdoesntexist</tt>, <tt>postinstall</tt> and <tt>skipifsilent</tt>.</p>
  2239. </flag>
  2240. <flag name="runascurrentuser">
  2241. <p>If this flag is specified, the spawned process will inherit Setup/Uninstall's user credentials (typically, full administrative privileges).</p>
  2242. <p>This is the default behavior when the <tt>postinstall</tt> flag is not used.</p>
  2243. <p>This flag cannot be combined with the <tt>runasoriginaluser</tt> flag.</p>
  2244. </flag>
  2245. <flag name="runasoriginaluser">
  2246. <p>Valid only in a [Run] section. If this flag is specified, the spawned process will execute with the (normally non-elevated) credentials of the user that started Setup initially (i.e., the "pre-UAC dialog" credentials).</p>
  2247. <p>This is the default behavior when the <tt>postinstall</tt> flag is used.</p>
  2248. <p>If a user launches Setup by right-clicking its EXE file and selecting "Run as administrator", then this flag, unfortunately, will have no effect, because Setup has no opportunity to run any code with the original user credentials. The same is true if Setup is launched from an already-elevated process. Note, however, that this is not an Inno Setup-specific limitation; Windows Installer-based installers cannot return to the original user credentials either in such cases.</p>
  2249. <p>This flag cannot be combined with the <tt>runascurrentuser</tt> flag.</p>
  2250. </flag>
  2251. <flag name="runhidden">
  2252. <p>If this flag is specified, it will launch the program in a hidden window. Never use this flag when executing a program that may prompt for user input.</p>
  2253. </flag>
  2254. <flag name="runmaximized">
  2255. <p>If this flag is specified, it will launch the program or document in a maximized window.</p>
  2256. </flag>
  2257. <flag name="runminimized">
  2258. <p>If this flag is specified, it will launch the program or document in a minimized window.</p>
  2259. </flag>
  2260. <flag name="shellexec">
  2261. <p>This flag is required if <tt>Filename</tt> is not a directly executable file (an .exe or .com file). When this flag is set, <tt>Filename</tt> can be a folder or any registered file type -- including .chm, .doc, and so on. The file will be opened with the application associated with the file type on the user's system, the same way it would be if the user double-clicked the file in Explorer.</p>
  2262. <p>By default, when the <tt>shellexec</tt> flag is used it will not wait until the spawned process terminates. If you need that, you must add the flag <tt>waituntilterminated</tt>. Note that it cannot and will not wait if a new process isn't spawned -- for example, if <tt>Filename</tt> specifies a folder.</p>
  2263. </flag>
  2264. <flag name="skipifdoesntexist">
  2265. <p>If this flag is specified in the [Run] section, Setup won't display an error message if <tt>Filename</tt> doesn't exist.</p>
  2266. <p>If this flag is specified in the [UninstallRun] section, the uninstaller won't display the "some elements could not be removed" warning if <tt>Filename</tt> doesn't exist.</p>
  2267. <p>When this flag is used, <tt>Filename</tt> must be an absolute path.</p>
  2268. </flag>
  2269. <flag name="skipifnotsilent">
  2270. <p>Valid only in a [Run] section. Instructs Setup to skip this entry if Setup is not running (very) silent.</p>
  2271. </flag>
  2272. <flag name="skipifsilent">
  2273. <p>Valid only in a [Run] section. Instructs Setup to skip this entry if Setup is running (very) silent.</p>
  2274. </flag>
  2275. <flag name="unchecked">
  2276. <p>Valid only in a [Run] section. Instructs Setup to initially uncheck the checkbox. The user can still check the checkbox if they wishes to process the entry. This flag is ignored if the <tt>postinstall</tt> flag isn't also specified.</p>
  2277. </flag>
  2278. <flag name="waituntilidle">
  2279. <p>If this flag is specified, it will wait until the process is waiting for user input with no input pending, instead of waiting for the process to terminate. (This calls the <i>WaitForInputIdle</i> Win32 function.) Cannot be combined with <tt>nowait</tt> or <tt>waituntilterminated</tt>.</p>
  2280. </flag>
  2281. <flag name="waituntilterminated">
  2282. <p>If this flag is specified, it will wait until the process has completely terminated. Note that this is the default behavior (i.e. you don't need to specify this flag) unless you're using <tt>shellexec</tt> flag, in which case you do need to specify this flag if you want it to wait. Cannot be combined with <tt>nowait</tt> or <tt>waituntilidle</tt>.</p>
  2283. </flag>
  2284. </flaglist>
  2285. <example>
  2286. <pre>Flags: postinstall nowait skipifsilent</pre>
  2287. </example>
  2288. </param>
  2289. </paramlist>
  2290. <p><b><link topic="componentstasksparams">Components and Tasks Parameters</link></b></p>
  2291. <p><b><link topic="commonparams">Common Parameters</link></b></p>
  2292. </body>
  2293. </topic>
  2294. <topic name="uninstalldeletesection" title="[UninstallDelete] section">
  2295. <keyword value="[UninstallDelete] section" />
  2296. <keyword value="UninstallDelete" />
  2297. <body>
  2298. <p>This optional section defines any additional files or directories you want the uninstaller to delete, besides those that were installed/created using [Files] or [Dirs] section entries. Deleting .INI files created by your application is one common use for this section. The uninstaller processes these entries as the last step of uninstallation.</p>
  2299. <p>Here is an example of a <tt>[UninstallDelete]</tt> section:</p>
  2300. <precode>
  2301. [UninstallDelete]
  2302. Type: files; Name: "{win}\MYPROG.INI"
  2303. </precode>
  2304. <p>The following is a list of the supported <link topic="params">parameters</link>:</p>
  2305. <paramlist>
  2306. <param name="Type" required="yes">
  2307. <p>Specifies what is to be deleted by the uninstaller. This must be one of the following:</p>
  2308. <flaglist>
  2309. <flag name="files">
  2310. <p>The <tt>Name</tt> parameter specifies a name of a particular file, or a filename with wildcards.</p>
  2311. </flag>
  2312. <flag name="filesandordirs">
  2313. <p>Functions the same as <tt>files</tt> except it matches directory names also, and any directories matching the name are deleted including all files and subdirectories in them.</p>
  2314. </flag>
  2315. <flag name="dirifempty">
  2316. <p>When this is used, the <tt>Name</tt> parameter must be the name of a directory, but it cannot include wildcards. The directory will only be deleted if it contains no files or subdirectories.</p>
  2317. </flag>
  2318. </flaglist>
  2319. <example>
  2320. <pre>Type: files</pre>
  2321. </example>
  2322. </param>
  2323. <param name="Name" required="yes">
  2324. <p>Name of the file or directory to delete.</p>
  2325. <p><b>NOTE:</b> Don't be tempted to use a wildcard here to delete all files in the {app} directory. Doing this is strongly recommend against for two reasons. First, users usually don't appreciate having their data files they put in the application directory deleted without warning (they might only be uninstalling it because they want to move it to a different drive, for example). It's better to leave it up to the end users to manually remove them if they want. Also, if the user happened to install the program in the wrong directory by mistake (for example, C:\WINDOWS) and then went to uninstall it there could be disastrous consequences. So again, <b>DON'T DO THIS!</b></p>
  2326. <example>
  2327. <pre>Name: "{win}\MYPROG.INI"</pre>
  2328. </example>
  2329. </param>
  2330. </paramlist>
  2331. <p><b><link topic="componentstasksparams">Components and Tasks Parameters</link></b></p>
  2332. <p><b><link topic="commonparams">Common Parameters</link></b></p>
  2333. </body>
  2334. </topic>
  2335. <topic name="issigkeyssection" title="[ISSigKeys] section">
  2336. <keyword value="[ISSigKeys] section" />
  2337. <keyword value="ISSigKeys" />
  2338. <body>
  2339. <p>This optional section defines any keys the compiler and Setup can use to verify files using <link topic="filessection">[Files]</link> section's <tt>issigverify</tt> flag.</p>
  2340. <p>Here are two examples of an <tt>[ISSigKeys]</tt> section:</p>
  2341. <precode>
  2342. [ISSigKeys]
  2343. Name: "MyKey1; \
  2344. KeyID: "def0147c3bbc17ab99bf7b7a9c2de1390283f38972152418d7c2a4a7d7131a38"; \
  2345. KeyFile: "MyKey1.ispublickey"
  2346. Name: "MyKey2; \
  2347. KeyID: "def020edee3c4835fd54d85eff8b66d4d899b22a777353ca4a114b652e5e7a28"; \
  2348. PublicX: "515dc7d6c16d4a46272ceb3d158c5630a96466ab4d948e72c2029d737c823097"; \
  2349. PublicY: "f3c21f6b5156c52a35f6f28016ee3e31a3ded60c325b81fb7b1f88c221081a61"
  2350. </precode>
  2351. <precode>
  2352. [ISSigKeys]
  2353. Name: anna: KeyFile: "anna.ispublickey"; Group: exesigner
  2354. Name: ryan; KeyFile: "ryan.ispublickey"; Group: exesigner
  2355. Name: ivan; KeyFile: "ivan.ispublickey"; Group: docsigner
  2356. ; max is trusted for both exe and doc signing
  2357. Name: max; KeyFile: "max.ispublickey"; Group: exesigner docsigner
  2358. ; the boss also has a key
  2359. Name: bosskey; KeyFile: "boss.ispublickey"
  2360. </precode>
  2361. <p>See the <i>Remarks</i> section at the bottom of this topic for some important notes.</p>
  2362. <p>The following is a list of the supported <link topic="params">parameters</link>:</p>
  2363. <paramlist>
  2364. <param name="Name" required="yes">
  2365. <p>The internal name of the key.</p>
  2366. <p>Key names are not stored in the resulting Setup file(s), so you may use personal or non-public information in them, like the names of developers.</p>
  2367. <example><pre>Name: MyKey</pre></example>
  2368. </param>
  2369. <param name="Group">
  2370. <p>A space separated list of internal group names, specifying how to group the key.</p>
  2371. <p>Group names are not stored in the resulting Setup file(s), so you may use personal or non-public information in them, like the names of developer groups.</p>
  2372. <example><pre>Group: exesigner docsigner</pre></example>
  2373. </param>
  2374. <param name="KeyID">
  2375. <p>Specifies the ID of the key. If specified, the compiler uses it to double check the values of parameters <tt>KeyFile</tt>, <tt>PublicX</tt>, and <tt>PublicY</tt>. Is not used for anything else.</p>
  2376. <example><pre>KeyID: "def0147c3bbc17ab99bf7b7a9c2de1390283f38972152418d7c2a4a7d7131a38"</pre></example>
  2377. </param>
  2378. <param name="KeyFile">
  2379. <p>Specifies the private or public key file. The compiler will prepend the path of your installation's <link topic="sourcedirectorynotes">source directory</link> if you do not specify a fully qualified pathname.</p>
  2380. <p>Must be set if parameters <tt>PublicX</tt> and <tt>PublicY</tt> aren't set.</p>
  2381. <p>If a private key file is specified, only its public information is stored in the resulting Setup file(s).</p>
  2382. <example><pre>KeyFile: "MyKey.ispublickey"</pre></example>
  2383. </param>
  2384. <param name="PublicX">
  2385. <p>Specifies the "public-x" value of the key.</p>
  2386. <p>Must be set if parameter <tt>KeyFile</tt> isn't set.</p>
  2387. <example><pre>PublicX: "e3e943066aff8f28d2219fd71c9ffff4c8d1aa26bc4225434be67180ab5e242d"</pre></example>
  2388. </param>
  2389. <param name="PublicY">
  2390. <p>Specifies the "public-y" value of the key.</p>
  2391. <p>Must be set if parameter <tt>KeyFile</tt> isn't set.</p>
  2392. <example><pre>PublicY: "e419041c3f54551e86a1c47f387005cd535dfc9d64339b30d37f9a4f7866b650"</pre></example>
  2393. </param>
  2394. <param name="RuntimeID">
  2395. <p>Specifies the runtime ID of the key, used by <link topic="isxfunc_ISSigVerify">ISSigVerify</link>.</p>
  2396. <p>Runtime ID's are stored in the resulting Setup file(s), so you should <i>not</i> use personal or non-public information in them.</p>
  2397. <example><pre>RuntimeID: def01</pre></example>
  2398. </param>
  2399. </paramlist>
  2400. <heading>Remarks</heading>
  2401. <p>Keys and key files should be created using <link topic="issigtool">Inno Setup Signature Tool</link>.</p>
  2402. <p>Created key files are human readable and can be opened with any text editor to get a key's <tt>KeyID</tt>, <tt>PublicX</tt>, and <tt>PublicY</tt> values. Note that none of these values are required if you set the <tt>KeyFile</tt> parameter instead.</p>
  2403. </body>
  2404. </topic>
  2405. <topic name="examples" title="Example Scripts">
  2406. <keyword value="Example Scripts" />
  2407. <body>
  2408. <p>The Inno Setup Example Scripts are located in a separate folder. Please click the "Inno Setup Example Scripts" shortcut created in the Start Menu when you installed Inno Setup, or open the "Examples" folder in your Inno Setup directory.</p>
  2409. </body>
  2410. </topic>
  2411. <topic name="unicode" title="Unicode Inno Setup">
  2412. <keyword value="Unicode Inno Setup" />
  2413. <body>
  2414. <p>Prior to Inno Setup 6 two versions of Inno Setup were available: Non Unicode Inno Setup and Unicode Inno Setup. Starting with Inno Setup 6 there's only one version available: Unicode Inno Setup.</p>
  2415. <p>Key features of Unicode Inno Setup are its ability to display any language on any system regardless of the system code page, and its ability to work with Unicode filenames.</p>
  2416. <p>If you don't remember which version you installed, click the "Inno Setup Compiler" shortcut created in the Start Menu. If the version number displayed in its title bar says "(a)" you are running Non Unicode Inno Setup. Otherwise you are running Unicode Inno Setup.</p>
  2417. <p>For the most part the two versions are used identically, and any differences between them are noted throughout the help file. However, the following overview lists the primary differences:</p>
  2418. <ul>
  2419. <li>Unicode Inno Setup supports UTF-8 encoded .iss and .isl files. Starting with Inno Setup 6.3, a BOM is no longer required. UTF-16 is not supported.</li>
  2420. <li>Any existing ANSI .isl language files are automatically converted during compilation using the <tt>LanguageCodePage</tt> setting of the language.</li>
  2421. <li>Any [Messages] and [CustomMessages] entries in existing ANSI .iss script files must to be converted to Unicode manually if the language used a special <tt>LanguageCodePage</tt>.</li>
  2422. <li>Unicode Inno Setup supports UTF-8 and UTF-16LE encoded .txt files for <tt>LicenseFile</tt>, <tt>InfoBeforeFile</tt>, and <tt>InfoAfterFile</tt>. Starting with Inno Setup 6.3, a BOM is no longer required.</li>
  2423. <li>Any language specific plain text ANSI files used for <tt>LicenseFile</tt>, <tt>InfoBeforeFile</tt>, or <tt>InfoAfterFile</tt> are automatically converted during compilation using the <tt>LanguageCodePage</tt> setting of the language.</li>
  2424. <li>The [Setup] directive <tt>ShowUndisplayableLanguages</tt> is ignored by Unicode Inno Setup.</li>
  2425. <li>Existing installations of your programs done by non Unicode installers can be freely updated by Unicode installers, and vice versa.</li>
  2426. <li>Unicode Pascal Scripting notes:
  2427. <ul>
  2428. <li>The Unicode compiler sees type 'String' as a Unicode string, and 'Char' as a Unicode character. Its 'AnsiString' type hasn't changed and still is an ANSI string. Its 'PChar' type has been renamed to 'PAnsiChar'.</li>
  2429. <li>The Unicode compiler is more strict about correct ';' usage: it no longer accepts certain missing ';' characters.</li>
  2430. <li>Some support functions had their prototype changed: some parameters of <tt>CreateOutputMsgMemoPage</tt>, <tt>RegQueryBinaryValue</tt>, <tt>RegWriteBinaryValue</tt>, <tt>OemToCharBuff</tt>, <tt>CharToOemBuff</tt>, <tt>LoadStringFromfile</tt>, <tt>SaveStringToFile</tt>, and <tt>GetMD5OfString</tt> are of type AnsiString now instead of String.</li>
  2431. <li>Added new <tt>SaveStringsToUTF8File</tt>, and <tt>GetMD5OfUnicodeString</tt> support functions.</li>
  2432. <li>Added new 'Int64' type, supported by <tt>IntToStr</tt>. Also added new <tt>StrToInt64</tt>, <tt>StrToInt64Def</tt>, and <tt>GetSpaceOnDisk64</tt> support functions.</li>
  2433. <li>Added new <tt>TStringStream</tt> class.</li>
  2434. <li>If you want to compile an existing script that imports ANSI Windows API calls with the Unicode compiler, either upgrade to the 'W' Unicode API call or change the parameters from 'String' or 'PChar' to 'AnsiString'. The 'AnsiString' approach will make your [Code] compatible with both the Unicode and the non Unicode version.</li>
  2435. </ul>
  2436. </li>
  2437. </ul>
  2438. <p>Note: Unicode Inno Setup can only create Unicode installers and like wise the non Unicode version can only create non Unicode installers. If you want to be able to create both Unicode and non Unicode installers on one computer, you have to install both versions of Inno Setup into different folders.</p>
  2439. </body>
  2440. </topic>
  2441. <topic name="faq" title="Frequently Asked Questions">
  2442. <keyword value="Frequently Asked Questions" />
  2443. <keyword value="FAQ" />
  2444. <keyword value="file associations, creating" />
  2445. <keyword value="Visual Basic" />
  2446. <keyword value="BDE installation" />
  2447. <body>
  2448. <p>The Frequently Asked Questions is now located in a separate document. Please click the "Inno Setup FAQ" shortcut created in the Start Menu when you installed Inno Setup, or open the "isfaq.url" file in your Inno Setup directory.</p>
  2449. <p>For the most recent Frequently Asked Questions, go to <extlink href="https://jrsoftware.org/isfaq.php">https://jrsoftware.org/isfaq.php</extlink></p>
  2450. </body>
  2451. </topic>
  2452. <topic name="wizardpages" title="Wizard Pages">
  2453. <keyword value="Wizard Pages" />
  2454. <body>
  2455. <p>Below is a list of all the wizard pages Setup may potentially display, and the conditions under which they are displayed.</p>
  2456. <ul>
  2457. <li>
  2458. <b>Welcome</b><br/>
  2459. Shown if <link topic="setup_disablewelcomepage">DisableWelcomePage</link> is set to <tt>no</tt>.
  2460. </li>
  2461. <li>
  2462. <b>License Agreement</b><br/>
  2463. Shown if <link topic="setup_licensefile">LicenseFile</link> is set. Users may proceed to the next page only if the option "I accept the agreement" is selected.
  2464. </li>
  2465. <li>
  2466. <b>Password</b><br/>
  2467. Shown if <link topic="setup_password">Password</link> is set. Users may proceed to the next page only after entering the correct password.
  2468. </li>
  2469. <li>
  2470. <b>Information</b><br/>
  2471. Shown if <link topic="setup_infobeforefile">InfoBeforeFile</link> is set.
  2472. </li>
  2473. <li>
  2474. <b>User Information</b><br/>
  2475. Shown if <link topic="setup_userinfopage">UserInfoPage</link> is set to <tt>yes</tt>.
  2476. </li>
  2477. <li>
  2478. <b>Select Destination Location</b><br/>
  2479. Shown if <link topic="setup_disabledirpage">DisableDirPage</link> is set to <tt>no</tt> or <tt>auto</tt>.
  2480. </li>
  2481. <li>
  2482. <b>Select Components</b><br/>
  2483. Shown if there are any <link topic="componentssection">[Components]</link> entries.
  2484. </li>
  2485. <li>
  2486. <b>Select Start Menu Folder</b><br/>
  2487. Shown if there are any <link topic="iconssection">[Icons]</link> entries and if <link topic="setup_disableprogramgrouppage">DisableProgramGroupPage</link> is set to <tt>no</tt> or <tt>auto</tt>.
  2488. </li>
  2489. <li>
  2490. <b>Select Tasks</b><br/>
  2491. Shown if there are any <link topic="taskssection">[Tasks]</link> entries, unless the [Tasks] entries are all tied to components that were not selected on the <i>Select Components</i> page.
  2492. </li>
  2493. <li>
  2494. <b>Ready to Install</b><br/>
  2495. Shown by default, but can be disabled via <link topic="setup_disablereadypage">DisableReadyPage</link>.
  2496. </li>
  2497. <li>
  2498. <b>Preparing to Install</b><br/>
  2499. Normally, Setup will never stop or pause on this page. The only time it will is if Setup determines it can't continue or if it detects applications using files that need to be updated.<br/><br/>
  2500. The former can happen if the <link topic="scriptevents" anchor="PrepareToInstall"><tt>PrepareToInstall</tt></link> event function returned an error or if one or more files specified in the [Files] and [InstallDelete] sections were queued (by some other installation) to be replaced or deleted on the next restart. In this case, it tells the user they need to restart their computer and then run Setup again. Note that this check is performed on silent installations too, but any messages are displayed in a message box instead of inside a wizard page.<br/><br/>
  2501. The latter can happen if <link topic="setup_closeapplications">CloseApplications</link> is set to <tt>yes</tt> or <tt>force</tt>.
  2502. </li>
  2503. <li>
  2504. <b>Installing</b><br/>
  2505. Shown during the actual installation process.
  2506. </li>
  2507. <li>
  2508. <b>Information</b><br/>
  2509. Shown if <link topic="setup_infoafterfile">InfoAfterFile</link> is set.
  2510. </li>
  2511. <li>
  2512. <b>Setup Completed</b><br/>
  2513. Shown by default, but can be disabled in some cases via <link topic="setup_disablefinishedpage">DisableFinishedPage</link>.
  2514. </li>
  2515. </ul>
  2516. <p>See the <i>AllPagesExample.iss</i> example script for an example which shows all these pages.</p>
  2517. </body>
  2518. </topic>
  2519. <topic name="installorder" title="Installation Order">
  2520. <keyword value="Installation Order" />
  2521. <body>
  2522. <p>Once the actual installation process begins, this is the order in which the various installation tasks are performed:</p>
  2523. <ul>
  2524. <li>If <link topic="setup_closeapplications">CloseApplications</link> was set to <tt>yes</tt>, Setup closes applications using files that need to be updated.</li>
  2525. <li><link topic="installdeletesection">[InstallDelete]</link> is processed.</li>
  2526. <li>The entries in <link topic="uninstalldeletesection">[UninstallDelete]</link> are stored in the uninstall log (which, at this stage, is stored in memory).</li>
  2527. <li>The application directory is created, if necessary.</li>
  2528. <li><link topic="dirssection">[Dirs]</link> is processed.</li>
  2529. <li>A filename for the uninstall log is reserved, if necessary.</li>
  2530. <li><link topic="filessection">[Files]</link> is processed. (File registration does not happen yet.)</li>
  2531. <li><link topic="iconssection">[Icons]</link> is processed.</li>
  2532. <li><link topic="inisection">[INI]</link> is processed.</li>
  2533. <li><link topic="registrysection">[Registry]</link> is processed.</li>
  2534. <li>Files that needed to be registered are now registered, unless the system needs to be restarted, in which case no files are registered until the system is restarted.</li>
  2535. <li>The <i>Add/Remove Programs</i> entry for the program is created, if necessary.</li>
  2536. <li>The entries in <link topic="runsection">[UninstallRun]</link> are stored in the uninstall log.</li>
  2537. <li>The uninstaller EXE and log are finalized and saved to disk. After this is done, the user is forbidden from cancelling the install, and any subsequent errors will not cause what was installed before to be rolled back.</li>
  2538. <li><link topic="runsection">[Run]</link> is processed, except for entries with the <tt>postinstall</tt> flag, which get processed after the <i>Setup Completed</i> wizard page is shown.</li>
  2539. <li>If <link topic="setup_restartapplications">RestartApplications</link> was set to <tt>yes</tt>, Setup restarts closed applications which support being restarted.</li>
  2540. <li>If <link topic="setup_changesassociations">ChangesAssociations</link> was set to <tt>yes</tt> or to a <link topic="scriptexpression">scripted boolean expression</link> evaluating to <tt>True</tt>, file associations are refreshed now.</li>
  2541. <li>If <link topic="setup_changesenvironment">ChangesEnvironment</link> was set to <tt>yes</tt> or to a <link topic="scriptexpression">scripted boolean expression</link> evaluating to <tt>True</tt>, other applications are notified at this point.</li>
  2542. </ul>
  2543. <p>All entries are processed by the installer in the order they appear in a section.</p>
  2544. <p>You can see the order yourself by loading a script into the Compiler IDE and pressing F7 (Step Into) repeatedly: each time Setup or Uninstall is about to process an entry the IDE will pause Setup or Uninstall and show you the entry.</p>
  2545. <p>Changes are undone by the uninstaller in the <i>opposite</i> order in which the installer made them. This is because the uninstall log is parsed from end to beginning.</p>
  2546. <p>In this example:</p>
  2547. <precode>
  2548. [INI]
  2549. Filename: "{win}\MYPROG.INI"; Section: "InstallSettings"; Flags: uninsdeletesectionifempty
  2550. Filename: "{win}\MYPROG.INI"; Section: "InstallSettings"; Key: "InstallPath"; String: "{app}"; Flags: uninsdeleteentry
  2551. </precode>
  2552. <p>the installer will first record the data for first entry's <tt>uninsdeletesectionifempty</tt> flag in the uninstall log, create the key of the second entry, and then record the data for the <tt>uninsdeleteentry</tt> flag in the uninstall log. When the program is uninstalled, the uninstaller will first process the <tt>uninsdeleteentry</tt> flag, deleting the entry, and then the <tt>uninsdeletesectionifempty</tt> flag, deleting the section.</p>
  2553. <p>Note that the uninstaller processes <tt>[UninstallRun]</tt> and <tt>[UninstallDelete]</tt> entries in the same order they appear in the script (not in reverse order).</p>
  2554. </body>
  2555. </topic>
  2556. <topic name="admininstallmode" title="Non Administrative Install Mode">
  2557. <keyword value="Install Mode: administrative vs. non administrative" />
  2558. <keyword value="Administrative install mode" />
  2559. <keyword value="Non administrative install mode" />
  2560. <keyword value="install mode" />
  2561. <body>
  2562. <p>An installation can run in one of two modes: administrative or non administrative. Which mode is selected is specified by the <link topic="setup_privilegesrequired">PrivilegesRequired</link> and <link topic="setup_privilegesrequiredoverridesallowed">PrivilegesRequiredOverridesAllowed</link> [Setup] section directives.</p>
  2563. <p>In administrative install mode:</p>
  2564. <ul>
  2565. <li>The <tt>{group}</tt> folder is created in the <i>All Users</i> profile.</li>
  2566. <li>The "auto" form of the directory and Shell Folder constants is mapped to the "common" form.</li>
  2567. <li>The "user" form of these constants should NOT be used: user-level files and settings must be handled by the application itself, and never in an administrative install mode installer.</li>
  2568. <li>The <link topic="registrysection">HKA</link>, uninstall info, and font install root keys will be HKEY_LOCAL_MACHINE.</li>
  2569. </ul>
  2570. <p>In non administrative install mode:</p>
  2571. <ul>
  2572. <li>The <tt>{group}</tt> folder is created in the current user's profile.</li>
  2573. <li>The "auto" form of the directory and Shell Folder constants is mapped to the "user" form.</li>
  2574. <li>The <link topic="registrysection">HKA</link>, uninstall info, and font install root keys will be HKEY_CURRENT_USER.</li>
  2575. </ul>
  2576. <p><b>Notes:</b></p>
  2577. <p>Regardless of the version of Windows, if the installation is running in administrative install mode then you should be careful about making any per-user area changes: user-level files and settings must be handled by the application itself, and never in an administrative install mode installer. The compiler will warn you about this, which can be disabled using <link topic="setup_useduserareaswarning">UsedUserAreasWarning</link>.</p>
  2578. <p>If the installation is running in non administrative install mode, but administrative privileges are available anyway then Setup or the [Code] section might still make use of these privileges. For this reason the uninstaller will always be marked as requiring administrative privileges in this case, just as if the installation was running in administrative install mode.</p>
  2579. </body>
  2580. </topic>
  2581. <topic name="32vs64bitinstalls" title="64-bit Install Mode">
  2582. <keyword value="Install Mode: 32-bit vs. 64-bit" />
  2583. <keyword value="32-bit install mode" />
  2584. <keyword value="64-bit install mode" />
  2585. <keyword value="install mode" />
  2586. <body>
  2587. <p>An installation can run in one of two modes: 32-bit or 64-bit. 64-bit install mode is selected if the user is running a 64-bit version of Windows and the system's processor architecture is included in the value of the <link topic="setup_architecturesinstallin64bitmode">ArchitecturesInstallIn64BitMode</link> [Setup] section directive. Otherwise, 32-bit install mode is used.</p>
  2588. <p>How do the two modes of installation differ? Primarily, the differences lie in where things are installed by default.</p>
  2589. <p>In 32-bit install mode:</p>
  2590. <ul>
  2591. <li>The System32 path returned by the <tt>{sys}</tt> constant maps to the 32-bit System directory by default.</li>
  2592. <li>The <tt>{commonpf}</tt> constant is equivalent to <tt>{commonpf32}</tt>.</li>
  2593. <li>The <tt>{commoncf}</tt> constant is equivalent to <tt>{commoncf32}</tt>.</li>
  2594. <li>[Registry] writes to the 32-bit view by default.</li>
  2595. <li>The <tt>{reg:...}</tt> constant reads the 32-bit view by default.</li>
  2596. <li>The <tt>Reg*</tt> [Code] support functions access the 32-bit view by default.</li>
  2597. <li>The <tt>useapppaths</tt> flag of the [Icons] section reads the "App Paths" key in the 32-bit view of the registry.</li>
  2598. <li>The <tt>regserver</tt> and <tt>regtypelib</tt> flags of the [Files] section load and register files inside a 32-bit process by default.</li>
  2599. <li>The <tt>sharedfile</tt> flag of the [Files] section updates the "SharedDLLs" key in the 32-bit view of the registry by default.</li>
  2600. <li>The Uninstall key is created in the 32-bit view of the registry.</li>
  2601. </ul>
  2602. <p>In 64-bit install mode:</p>
  2603. <ul>
  2604. <li>The System32 path returned by the <tt>{sys}</tt> constant maps to the 64-bit System directory by default when used in the [Dirs], [Files], [InstallDelete], [Run], [UninstallDelete], and [UninstallRun] sections. This is because Setup/Uninstall temporarily disables <extlink href="http://msdn.microsoft.com/en-us/library/aa384187.aspx">WOW64 file system redirection</extlink> when files/directories are accessed by those sections. Elsewhere, System32 and <tt>{sys}</tt> map to the 32-bit System directory, as is normal in a 32-bit process.</li>
  2605. <li>The <tt>{commonpf}</tt> constant is equivalent to <tt>{commonpf64}</tt>.</li>
  2606. <li>The <tt>{commoncf}</tt> constant is equivalent to <tt>{commoncf64}</tt>.</li>
  2607. <li>[Registry] writes to the 64-bit view by default.</li>
  2608. <li>The <tt>{reg:...}</tt> constant reads the 64-bit view by default.</li>
  2609. <li>The <tt>Reg*</tt> [Code] support functions access the 64-bit view by default.</li>
  2610. <li>The <tt>useapppaths</tt> flag of the [Icons] section reads the "App Paths" key in the 64-bit view of the registry.</li>
  2611. <li>The <tt>regserver</tt> and <tt>regtypelib</tt> flags of the [Files] section load and register files inside a 64-bit process by default.</li>
  2612. <li>The <tt>sharedfile</tt> flag of the [Files] section updates the "SharedDLLs" key in the 64-bit view of the registry by default.</li>
  2613. <li>The Uninstall key is created in the 64-bit view of the registry.</li>
  2614. </ul>
  2615. </body>
  2616. </topic>
  2617. <topic name="64bitlimitations" title="64-bit Installation Limitations">
  2618. <keyword value="64-bit Installation Limitations" />
  2619. <keyword value="64-bit install mode" />
  2620. <body>
  2621. <p>Because Inno Setup is a 32-bit application, there are some limitations to be aware of when utilizing its 64-bit installation features:</p>
  2622. <ul>
  2623. <li>The System32 path returned by the <tt>{sys}</tt> constant does not always map to the 64-bit System directory. When Setup/Uninstall is running in 64-bit install mode, it maps to the 64-bit System directory when used in the [Dirs], [Files], [InstallDelete], [Run], [UninstallDelete], and [UninstallRun] sections because Setup temporarily disables <extlink href="http://msdn.microsoft.com/en-us/library/aa384187.aspx">WOW64 file system redirection</extlink> when files/directories are accessed by those sections. Elsewhere, System32 and <tt>{sys}</tt> map to the 32-bit System directory, as is normal in a 32-bit process.</li>
  2624. <li>
  2625. <p>In the [Code] section, when Setup/Uninstall is running in 64-bit install mode, functions that access files disable WOW64 file system redirection (unless overridden by a call to <link topic="isxfunc_EnableFsRedirection">EnableFsRedirection</link>). However, there are exceptions, listed below. These functions never disable file system redirection, meaning you cannot pass them (or get back) the name of a file located in the 64-bit System directory:</p>
  2626. <table>
  2627. <tr><td><tt>*Ini*</tt></td><td>(all of the functions that manipulate .INI files)</td></tr>
  2628. <tr><td><tt>BrowseForFolder</tt></td></tr>
  2629. <tr><td><tt>CreateShellLink</tt></td></tr>
  2630. <tr><td><tt>GetOpenFileName</tt></td></tr>
  2631. <tr><td><tt>LoadDLL</tt></td><td>(see following point)</td></tr>
  2632. <tr><td><tt>ModifyPifFile</tt></td></tr>
  2633. <tr><td><tt>SetCurrentDir</tt></td></tr>
  2634. <tr><td><tt>ShellExec</tt></td><td>(use <tt>Exec</tt> instead)</td></tr>
  2635. <tr><td><tt>UnregisterFont</tt></td></tr>
  2636. </table>
  2637. <p>Additionally, no VCL classes are capable of disabling file system redirection. For example, you cannot call the <tt>LoadFromFile</tt> method of <tt>TBitmap</tt> to load a bitmap file from the 64-bit System directory.</p>
  2638. </li>
  2639. <li>You cannot load/use 64-bit DLLs in the [Code] section, because Windows does not allow 32-bit processes to load 64-bit DLLs (and vice versa). A 32-bit process can, however, launch 64-bit EXEs. Use the <tt>Exec</tt> function or the [Run] section to do that.</li>
  2640. </ul>
  2641. </body>
  2642. </topic>
  2643. <topic name="technotes" title="Miscellaneous Notes">
  2644. <keyword value="Miscellaneous Notes" />
  2645. <body>
  2646. <ul>
  2647. <li>
  2648. <p>To easily auto update your application, first make your application somehow detect a new version of your Setup.exe and make it locate or download this new version. Then, to auto update, start your Setup.exe from your application with for example the following command line:</p>
  2649. <precode>
  2650. /SP- /silent /noicons "/dir=expand:{autopf}\My Program"
  2651. </precode>
  2652. <p>After starting setup.exe, exit your application as soon as possible. Note that to avoid problems with updating your .exe, Setup has an auto retry feature.</p>
  2653. <p>Optionally you could also use the <tt>skipifsilent</tt> and <tt>skipifnotsilent</tt> flags and make your application aware of a '/updated' parameter to for example show a nice message box to inform the user that the update has completed.</p>
  2654. </li>
  2655. <li>
  2656. <p>Inno Setup's own installers accept an additional /PORTABLE=1 command line parameter to enable portable mode which causes the installers to install to the desktop by default and to not create an uninstaller nor an entry in the Add/Remove Programs Control Panel applet. For example:</p>
  2657. <precode>
  2658. /portable=1 /silent /currentuser
  2659. </precode>
  2660. </li>
  2661. <li>The Inno Setup backup domain can be found at <extlink href="https://innosetup.nl/">innosetup.nl</extlink>. It currently just redirects to the main site but in case of emergencies this will be deactivated.</li>
  2662. </ul>
  2663. </body>
  2664. </topic>
  2665. <topic name="compformshortcuts" title="Compiler IDE Keyboard And Mouse Commands">
  2666. <keyword value="Compiler IDE Keyboard And Mouse Commands" />
  2667. <keyword value="Keyboard commands" />
  2668. <keyword value="Mouse commands" />
  2669. <body>
  2670. <p>Besides the keyboard commands listed in the menus, the Compiler IDE supports additional keyboard and mouse commands, some of which depend on the active editor key map.</p>
  2671. <p><u>If the Visual Studio Code column is empty then the shortcut for this command is the same as listed in the Classic column.</u></p>
  2672. <p>A single dash (-) means there's no shortcut available for this command in the key map.</p>
  2673. <p>Note: a few of the shortcuts below use string representations for special virtual keys. More precisely: ; for VK_OEM_1, . for VK_OEM_PERIOD, / for VK_OEM_2, [ for VK_OEM_4, \ for VK_OEM_5, and ] for VK_OEM_6. Different keyboard layouts usually reposition these special virtual keys or change the characters produced when they are pressed. In the <i>Edit</i> menu these shortcuts are shown using the current system's keyboard layout. For example, when using a French AZERTY keyboard layout the <i>Toggle Line Comment</i> shortcut is shown as Ctrl+: instead of Ctrl+/. If the keyboard layout doesn't support the virtual key then no shortcut will be shown.</p>
  2674. <table>
  2675. <tr><td></td><td><u>Classic</u></td><td><u>Visual Studio Code</u></td></tr>
  2676. <tr>
  2677. <td>&nbsp;</td>
  2678. </tr>
  2679. <tr>
  2680. <td>Indent block</td><td>Tab</td>
  2681. </tr>
  2682. <tr>
  2683. <td>Unindent block</td><td>Shift+Tab</td>
  2684. </tr>
  2685. <tr>
  2686. <td>Indent lines</td><td>-</td><td>Ctrl+]</td>
  2687. </tr>
  2688. <tr>
  2689. <td>Unindent lines</td><td>-</td><td>Ctrl+[</td>
  2690. </tr>
  2691. <tr>
  2692. <td>Toggle lines comment</td><td>Ctrl+/</td>
  2693. </tr>
  2694. <tr>
  2695. <td>&nbsp;</td>
  2696. </tr>
  2697. <tr>
  2698. <td>Delete to start of word</td><td>Ctrl+Backspace</td>
  2699. </tr>
  2700. <tr>
  2701. <td>Delete to end of word</td><td>Ctrl+Delete</td>
  2702. </tr>
  2703. <tr>
  2704. <td>Delete to start of line</td><td>Ctrl+Shift+Backspace</td>
  2705. </tr>
  2706. <tr>
  2707. <td>Delete to end of line</td><td>Ctrl+Shift+Delete</td>
  2708. </tr>
  2709. <tr>
  2710. <td>&nbsp;</td>
  2711. </tr>
  2712. <tr>
  2713. <td>Go to start of document (Shift extends selection)</td><td>Ctrl+Home</td>
  2714. </tr>
  2715. <tr>
  2716. <td>Go to first non-blank character of line</td><td>Home</td>
  2717. </tr>
  2718. <tr>
  2719. <td>Go to start of line</td><td>Alt+Home or Home Home</td>
  2720. </tr>
  2721. <tr>
  2722. <td>Go to end of document (Shift extends selection)</td><td>Ctrl+End</td>
  2723. </tr>
  2724. <tr>
  2725. <td>Go to next paragraph (Shift extends selection)</td><td>Ctrl+]</td><td>-</td>
  2726. </tr>
  2727. <tr>
  2728. <td>Go to previous paragraph (Shift extends selection)</td><td>Ctrl+[</td><td>-</td>
  2729. </tr>
  2730. <tr>
  2731. <td>Go to end of line</td><td>End</td>
  2732. </tr>
  2733. <tr>
  2734. <td>Go to end of wrapped line</td><td>Alt+End</td>
  2735. </tr>
  2736. <tr>
  2737. <td>Go to previous word (Shift extends selection)</td><td>Ctrl+Left</td>
  2738. </tr>
  2739. <tr>
  2740. <td>Go to next word (Shift extends selection)</td><td>Ctrl+Right</td>
  2741. </tr>
  2742. <tr>
  2743. <td>Go to matching brace</td><td>Ctrl+Shift+\</td>
  2744. </tr>
  2745. <tr>
  2746. <td>Scroll up</td><td>Ctrl+Up</td>
  2747. </tr>
  2748. <tr>
  2749. <td>Scroll down</td><td>Ctrl+Down</td>
  2750. </tr>
  2751. <tr>
  2752. <td>Scroll horizontally</td><td>Shift+MouseWheel</td>
  2753. </tr>
  2754. <tr>
  2755. <td>&nbsp;</td>
  2756. </tr>
  2757. <tr>
  2758. <td>Cut selection or line</td><td>Ctrl+X or Shift+Delete</td>
  2759. </tr>
  2760. <tr>
  2761. <td>Copy selection or line</td><td>Ctrl+C or Ctrl+Insert</td>
  2762. </tr>
  2763. <tr>
  2764. <td>Cut lines</td><td>Ctrl+L</td>
  2765. </tr>
  2766. <tr>
  2767. <td>Copy lines</td><td>Ctrl+Shift+T</td>
  2768. </tr>
  2769. <tr>
  2770. <td>Delete line</td><td>Ctrl+Shift+L</td><td>Ctrl+Shift+K</td>
  2771. </tr>
  2772. <tr>
  2773. <td>Switch line with previous</td><td>Ctrl+T</td>
  2774. </tr>
  2775. <tr>
  2776. <td>Move selected lines up</td><td>Alt+Up</td>
  2777. </tr>
  2778. <tr>
  2779. <td>Move selected lines down</td><td>Alt+Down</td>
  2780. </tr>
  2781. <tr>
  2782. <td>Duplicate selection or copy lines down</td><td>Ctrl+D</td><td>-</td>
  2783. </tr>
  2784. <tr>
  2785. <td>Copy line down</td><td>-</td><td>Shift+Alt+Down</td>
  2786. </tr>
  2787. <tr>
  2788. <td>Lowercase lines</td><td>Ctrl+U</td>
  2789. </tr>
  2790. <tr>
  2791. <td>Uppercase lines</td><td>Ctrl+Shift+U</td>
  2792. </tr>
  2793. <tr>
  2794. <td>&nbsp;</td>
  2795. </tr>
  2796. <tr>
  2797. <td>Extend selection</td><td>Shift+Arrow</td>
  2798. </tr>
  2799. <tr>
  2800. <td>Select word</td><td>DoubleClick</td>
  2801. </tr>
  2802. <tr>
  2803. <td>Select line</td><td>TripleClick or Click on line number</td>
  2804. </tr>
  2805. <tr>
  2806. <td>Select all</td><td>Ctrl+A or Ctrl+Click on line number</td>
  2807. </tr>
  2808. <tr>
  2809. <td>Add additional cursor or selection</td><td>Ctrl+Click or Ctrl+Drag</td><td>Alt+Click or Alt+Drag</td>
  2810. </tr>
  2811. <tr>
  2812. <td>Remove a selection by clicking it</td><td>Ctrl+Click</td><td>Alt+Click</td>
  2813. </tr>
  2814. <tr>
  2815. <td>Add word as additional selection</td><td>Ctrl+DoubleClick</td><td>Alt+DoubleClick</td>
  2816. </tr>
  2817. <tr>
  2818. <td>Add line as additional selection</td><td>Ctrl+TripleClick</td><td>Alt+TripleClick</td>
  2819. </tr>
  2820. <tr>
  2821. <td>Add additional cursor or selection up</td><td>Ctrl+Alt+Up</td>
  2822. </tr>
  2823. <tr>
  2824. <td>Add additional cursor or selection down</td><td>Ctrl+Alt+Down</td>
  2825. </tr>
  2826. <tr>
  2827. <td>Add cursors to line ends</td><td>Shift+Alt+I</td>
  2828. </tr>
  2829. <tr>
  2830. <td>&nbsp;</td>
  2831. </tr>
  2832. <tr>
  2833. <td>Add next occurrence of current word or selected text as additional selection</td><td>Shift+Alt+.</td><td>Ctrl+D</td>
  2834. </tr>
  2835. <tr>
  2836. <td>Select all occurrences of current word or selected text</td><td>Shift+Alt+;</td><td>Ctrl+Shift+L or (only if classic menu keys are not active) Ctrl+F2</td>
  2837. </tr>
  2838. <tr>
  2839. <td>Select all matches of last find text (also works when find dialog is open)</td><td>Alt+Enter</td>
  2840. </tr>
  2841. <tr>
  2842. <td>Revert multiple selections into single one or single selection into empty one</td><td>Esc</td>
  2843. </tr>
  2844. <tr>
  2845. <td>&nbsp;</td>
  2846. </tr>
  2847. <tr>
  2848. <td>Perform rectangular block selection (mouse) (Shift extends selection)</td><td>Alt+Drag</td><td>Shift+Alt+Drag</td>
  2849. </tr>
  2850. <tr>
  2851. <td>Perform rectangular block selection (keyboard)</td><td>Shift+Alt+Arrow</td><td>Ctrl+Shift+Alt+Arrow</td>
  2852. </tr>
  2853. <tr>
  2854. <td>Extend rectangular selection to first non-blank character of line</td><td>Shift+Alt+Home</td><td>Ctrl+Shift+Alt+Home</td>
  2855. </tr>
  2856. <tr>
  2857. <td>Extend rectangular selection to start of line</td><td>Shift+Alt+Home Home</td><td>Ctrl+Shift+Alt+Home Home</td>
  2858. </tr>
  2859. <tr>
  2860. <td>Extend rectangular selection to end of line</td><td>Shift+Alt+End</td><td>Ctrl+Shift+Alt+End</td>
  2861. </tr>
  2862. <tr>
  2863. <td>&nbsp;</td>
  2864. </tr>
  2865. <tr>
  2866. <td>Fold section</td><td>Ctrl+Shift+[</td>
  2867. </tr>
  2868. <tr>
  2869. <td>Unfold section</td><td>Ctrl+Shift+]</td>
  2870. </tr>
  2871. <tr>
  2872. <td>Fold or unfold all sections</td><td>Ctrl+Shift+Click in folding margin</td>
  2873. </tr>
  2874. <tr>
  2875. <td>&nbsp;</td>
  2876. </tr>
  2877. <tr>
  2878. <td>Invoke autocomplete</td><td>Ctrl+Space or Ctrl+I</td>
  2879. </tr>
  2880. <tr>
  2881. <td>Select autocompletion</td><td>Tab or Enter</td>
  2882. </tr>
  2883. <tr>
  2884. <td>Fillup autocompletion</td><td>Space for ISPP directives and Flags and Type parameters<br />\ for constants<br />: for constants and section parameters<br />] for sections<br />= for section directives<br />( for [Code]</td>
  2885. </tr>
  2886. <tr>
  2887. <td>Invoke parameter hint or show next definition</td><td>Ctrl+Shift+Space</td>
  2888. </tr>
  2889. <tr>
  2890. <td>Cancel autocomplete or parameter hint</td><td>Esc</td>
  2891. </tr>
  2892. <tr>
  2893. <td>&nbsp;</td>
  2894. </tr>
  2895. <tr>
  2896. <td>Toggle overwrite</td><td>Insert</td>
  2897. </tr>
  2898. <tr>
  2899. <td>Select tab</td><td>Ctrl+1 through Ctrl+9</td>
  2900. </tr>
  2901. <tr>
  2902. <td>Switch between the active memo and the active bottom pane</td><td>F6</td>
  2903. </tr>
  2904. </table>
  2905. </body>
  2906. </topic>
  2907. <topic name="compformregex" title="Compiler IDE Regular Expressions">
  2908. <keyword value="Compiler IDE Regular Expressions" />
  2909. <keyword value="Regular Expressions" />
  2910. <keyword value="Regex" />
  2911. <body>
  2912. <p>The Compiler IDE supports to use of regular expressions for all of its find and replace operations. This can be enabled and disabled using the <i>Use Regular Expressions</i> option to the <i>Edit</i> menu or its shortcut (Ctrl+Alt+R or Alt+R). Once enabled or disabled, this setting will be preserved across sessions.</p>
  2913. <p>When used, regular expressions will only match ranges within a single line, never matching over multiple lines.</p>
  2914. <p>Regular expressions must be written in the ECMAScript grammar, generally similar to the grammar used by JavaScript and the .NET languages. Invalid regular expressions will cause an error message.</p>
  2915. <p>For more information about the grammar see:</p>
  2916. <ul>
  2917. <li><extlink href="https://cplusplus.com/reference/regex/ECMAScript/">https://cplusplus.com/reference/regex/ECMAScript/</extlink></li>
  2918. <li><extlink href="https://learn.microsoft.com/en-us/cpp/standard-library/regular-expressions-cpp">https://learn.microsoft.com/en-us/cpp/standard-library/regular-expressions-cpp</extlink></li>
  2919. <li><extlink href="https://regex101.com/r/fYE7S3/1">https://regex101.com/r/fYE7S3/1</extlink></li>
  2920. </ul>
  2921. <p>When replacing using regular expressions the replace string may contain the following special escape sequences:</p>
  2922. <table>
  2923. <tr><td><u>Escape Sequence</u></td><td><u>Meaning</u></td></tr>
  2924. <tr>
  2925. <td>$1 through $9 or \1 through \9</td><td>Contents of the corresponding capture group</td>
  2926. </tr>
  2927. <tr>
  2928. <td>$&amp; or \0</td><td>Complete match contents</td>
  2929. </tr>
  2930. <tr>
  2931. <td>$$</td><td>A literal '$' character</td>
  2932. </tr>
  2933. <tr>
  2934. <td>\\, \a, \b, \f, \r, \n, \t, \v</td><td>A literal '\', '\a', '\b', etc. character</td>
  2935. </tr>
  2936. </table>
  2937. <p>For example, if the search string was (Ex)(ample) and the replace string was $2$1, when applied to a script saying "Examples" this would modify the script to say "ampleExs". Or if the replace string was $1\r\n$2 this would put a newline between "Ex" and "amples".</p>
  2938. </body>
  2939. </topic>
  2940. <topic name="compilercmdline" title="Command Line Compiler Execution">
  2941. <keyword value="Command Line Compiler Execution" />
  2942. <keyword value="command line parameters" />
  2943. <keyword value="compil32" />
  2944. <keyword value="ISCC" />
  2945. <body>
  2946. <ul>
  2947. <li>
  2948. <p>You can compile scripts from the command line using the console-mode compiler, ISCC.exe. Command line usage is as follows:</p>
  2949. <indent>
  2950. <p>iscc <i>[options]</i> <i>&lt;script name&gt;</i></p>
  2951. <p>Or to read from standard input:</p>
  2952. <p>iscc <i>[options]</i> -</p>
  2953. <example>iscc "c:\isetup\samples\my script.iss"</example>
  2954. </indent>
  2955. <p>As shown in the example above, filenames that include spaces must be enclosed in quotes.</p>
  2956. <p>Valid options are:</p>
  2957. <indent>
  2958. <table>
  2959. <tr><td>/O(+|-)</td><td>Enable or disable output (overrides <tt>Output</tt>)</td></tr>
  2960. <tr><td>/O&lt;path&gt;</td><td>Output files to specified path (overrides <tt>OutputDir</tt>)</td></tr>
  2961. <tr><td>/F&lt;filename&gt;</td><td>Specifies an output filename (overrides <tt>OutputBaseFilename</tt>)</td></tr>
  2962. <tr><td>/S&lt;name&gt;=&lt;command></td><td>Sets a SignTool with the specified name and command (any Sign Tools configured using the Compiler IDE will be specified automatically)</td></tr>
  2963. <tr><td>/Q</td><td>Quiet compile (print error messages only)</td></tr>
  2964. <tr><td>/Qp</td><td>Enable quiet compile while still displaying progress</td></tr>
  2965. </table>
  2966. <example>iscc /Qp /O"My Output" /F"MyProgram-1.0" /Sbyparam=$p "c:\isetup\samples\my script.iss"</example>
  2967. </indent>
  2968. <p>Also see <link topic="isppcc">Inno Setup Preprocessor: Command Line Compiler</link> for additional options.</p>
  2969. <p>ISCC will return an exit code of 0 if the compile was successful, 1 if the command line parameters were invalid or an internal error occurred, or 2 if the compile failed.</p>
  2970. </li>
  2971. <li>
  2972. <p>Alternatively, scripts can also be compiled by the Compiler IDE from the command line. Command line usage is as follows:</p>
  2973. <indent>
  2974. <p>compil32 /cc <i>&lt;script name&gt;</i></p>
  2975. <example>compil32 /cc "c:\isetup\samples\my script.iss"</example>
  2976. </indent>
  2977. <p>As shown in the example above, filenames that include spaces must be enclosed in quotes.</p>
  2978. <p>Running the Compiler IDE from the command line does not suppress the normal progress display or any error messages. The Compiler IDE will return an exit code of 0 if the compile was successful, 1 if the command line parameters were invalid, or 2 if the compile failed.</p>
  2979. </li>
  2980. <li>
  2981. <p>The Setup Script Wizard can be started from the command line. Command line usage is as follows:</p>
  2982. <indent>
  2983. <p>compil32 /wizard <i>&lt;wizard name&gt; &lt;script name&gt;</i></p>
  2984. <example>compil32 /wizard "MyProg Script Wizard" "c:\temp.iss"</example>
  2985. </indent>
  2986. <p>As shown in the example above, wizard names and filenames that include spaces must be enclosed in quotes.</p>
  2987. <p>Running the wizard from the command line does not suppress any error messages. The Setup Script Wizard will return an exit code of 0 if there was no error and additionally it will save the generated script file to the specified filename, 1 if the command line parameters were invalid, or 2 if the generated script file could not be saved. If the user cancelled the Setup Script Wizard, an exit code of 0 is returned and no script file is saved.</p>
  2988. </li>
  2989. </ul>
  2990. </body>
  2991. </topic>
  2992. <topic name="issig" title=".issig Signatures: Introduction">
  2993. <body>
  2994. <p>Inno Setup includes an integrated signature-verification capability that can be used to detect corruption or tampering in your files at compile time, before files are included in an installer being built, or during installation, before Setup copies external files onto a user's system.</p>
  2995. <p>Signatures are created using the included <link topic="issigtool">Inno Setup Signature Tool</link> utility (<tt>ISSigTool.exe</tt>) and are stored in separate files with an <tt>.issig</tt> extension. Because the signatures are stored in separate files — the original files are not touched — any type of file may be signed and verified.</p>
  2996. <p>Creation of <tt>.issig</tt> signatures does <i>not</i> require a certificate from a certificate authority. There is no cost involved.</p>
  2997. <p>Note, however, that an <tt>.issig</tt> signature cannot be used to eliminate an "Unknown publisher" warning message shown by Windows when an installer or other EXE file is started. That requires a completely different kind of signature (Authenticode) embedded inside the EXE file by a different tool (Microsoft's <tt>signtool.exe</tt>), and it does require a (usually expensive) code-signing certificate from a certificate authority. You can however use both <tt>signtool.exe</tt> and <tt>ISSigTool.exe</tt> on a single file, in that order. If you are looking for more information about <tt>signtool.exe</tt> see <link topic="setup_signtool">SignTool</link> instead.</p>
  2998. <heading>Quick start: Verifying files at compile time</heading>
  2999. <p>On the <tt>issigtool</tt> commands below, prepend the path of your Inno Setup installation, and include quotes. For example: <tt>"%ProgramFiles(x86)%\Inno Setup 6\issigtool"</tt></p>
  3000. <ol>
  3001. <li>
  3002. <p>At the command line, generate a new private key file that will be used for signing:</p>
  3003. <precode>
  3004. issigtool --key-file="MyKey.isprivatekey" generate-private-key
  3005. </precode>
  3006. <p>A file named <tt>MyKey.isprivatekey</tt> will be created in the current directory. You may include a pathname if you wish.</p>
  3007. <p>The file should not be shared with others, and should never be committed into a public repository. To reduce the risk of accidental disclosure, it is best to keep the file outside of your source tree.</p>
  3008. </li>
  3009. <li>
  3010. <p>Create the file we want to sign, then create the signature:</p>
  3011. <precode>
  3012. echo Hello &gt; MyFile.txt
  3013. issigtool --key-file="MyKey.isprivatekey" sign "MyFile.txt"
  3014. </precode>
  3015. <p>A signature file named <tt>MyFile.txt.issig</tt> is created.</p>
  3016. </li>
  3017. <li>
  3018. <p>Inside your Inno Setup script, add an <link topic="issigkeyssection">[ISSigKeys] section</link> entry linking to your key file, and a <link topic="filessection">[Files] section</link> entry for <tt>MyFile.txt</tt> that includes the <tt>issigverify</tt> flag:</p>
  3019. <precode>
  3020. [ISSigKeys]
  3021. Name: MyKey; KeyFile: "MyKey.isprivatekey"
  3022. [Files]
  3023. Source: "MyFile.txt"; DestDir: "{app}"; Flags: issigverify
  3024. </precode>
  3025. <p>Note: Specifying a <i>public</i> key file instead is preferred; see the <link topic="issig" anchor="tips">Tips &amp; Recommendations</link> section below.</p>
  3026. </li>
  3027. <li>
  3028. <p>Compile the script. In the compiler output, you should see a line indicating the file was successfully verified:</p>
  3029. <precode>
  3030. Compressing: MyFile.txt
  3031. Verification successful.
  3032. </precode>
  3033. </li>
  3034. <li>
  3035. <p>Now let's confirm that the compiler actually does catch corruption or tampering within the file.</p>
  3036. <p>Make a modification to <tt>MyFile.txt</tt> — for example, add or change a character.</p>
  3037. </li>
  3038. <li>
  3039. <p>Compile the script again. This time, you should get an error like the following:</p>
  3040. <precode>
  3041. Signature is not valid for source file "MyFile.txt": file hash incorrect.
  3042. </precode>
  3043. </li>
  3044. </ol>
  3045. <heading>Verifying external files during installation</heading>
  3046. <p>The procedure for setting up verification of <tt>external</tt> files is essentially the same as the procedure shown above for compile-time verification, except:</p>
  3047. <ul>
  3048. <li>
  3049. <p>The <tt>[Files]</tt> section entry would include a path in the <tt>Source</tt> parameter, and include the <tt>external</tt> flag:</p>
  3050. <precode>
  3051. [Files]
  3052. Source: "{src}\MyFile.txt"; DestDir: "{app}"; Flags: external issigverify
  3053. </precode>
  3054. </li>
  3055. <li>
  3056. <p>The signature file — <tt>MyFile.txt.issig</tt> in this example — must exist in the same directory as the <tt>Source</tt> file during the installation process. (No compile-time verification occurs on <tt>external</tt> files.)</p>
  3057. </li>
  3058. </ul>
  3059. <heading><a name="tips">Tips &amp; Recommendations</a></heading>
  3060. <ul>
  3061. <li>
  3062. <p>Although an <link topic="issigkeyssection">[ISSigKeys] section</link> entry's <tt>KeyFile</tt> parameter can point to a private key file as demonstrated above, it is recommended that a <i>public</i> key file be specified instead whenever possible. Unlike a private key file, a public key file does not have to be kept secret, and <i>can</i> be safely committed into a version control repository.</p>
  3063. <p>To create a public key file (<tt>MyKey.ispublickey</tt>) from an existing private key file (<tt>MyKey.isprivatekey</tt>), run this command:</p>
  3064. <precode>
  3065. issigtool --key-file="MyKey.isprivatekey" export-public-key "MyKey.ispublickey"
  3066. </precode>
  3067. <p>Alternatively, the public key values may be specified directly inside your script by using the <tt>PublicX</tt> and <tt>PublicY</tt> parameters instead of <tt>KeyFile</tt>.</p>
  3068. </li>
  3069. <li>
  3070. <p>To avoid having to repeat the same <tt>--key-file=</tt> parameter on every <tt>issigtool</tt> command invocation, you may instead set the <tt>ISSIGTOOL_KEY_FILE</tt> environment variable to the path of your key file.</p>
  3071. <p>In <tt>cmd.exe</tt> or a batch file:</p>
  3072. <precode>
  3073. set ISSIGTOOL_KEY_FILE=MyKey.isprivatekey
  3074. </precode>
  3075. <p>In PowerShell:</p>
  3076. <precode>
  3077. $env:ISSIGTOOL_KEY_FILE = "MyKey.isprivatekey"
  3078. </precode>
  3079. <p>The above variable assignments are non-persistent; they only affect the current <tt>cmd.exe</tt> or PowerShell session.</p>
  3080. <p>Afterward, you may simply run:</p>
  3081. <precode>
  3082. issigtool sign "MyFile.txt"
  3083. issigtool verify "MyFile.txt"
  3084. </precode>
  3085. </li>
  3086. </ul>
  3087. </body>
  3088. </topic>
  3089. <topic name="issigtool" title="Inno Setup Signature Tool">
  3090. <keyword value="ISSigTool" />
  3091. <body>
  3092. <p>Inno Setup includes a command-line utility, <tt>ISSigTool.exe</tt>. This utility is designed to sign files using ECDSA P-256 cryptographic <link topic="issig">signatures</link>.</p>
  3093. <p>Command line usage is as follows:</p>
  3094. <indent>
  3095. <p>issigtool <i>[options]</i> <i>&lt;command&gt;</i> <i>&lt;arguments&gt;</i></p>
  3096. </indent>
  3097. <p>Available commands:</p>
  3098. <indent>
  3099. <table>
  3100. <tr>
  3101. <td>sign <i>&lt;file names&gt;</i></td>
  3102. <td>Signs each specified file. Requires a private key.</td>
  3103. </tr>
  3104. <tr>
  3105. <td>verify <i>&lt;file names&gt;</i></td>
  3106. <td>Verifies the signature of each specified file against the key.</td>
  3107. </tr>
  3108. <tr>
  3109. <td>export-public-key <i>&lt;file name&gt;</i></td>
  3110. <td>Exports the public key used in the signing process to the specified file.</td>
  3111. </tr>
  3112. <tr>
  3113. <td>generate-private-key</td>
  3114. <td>Generates a new private key for signing operations.</td>
  3115. </tr>
  3116. </table>
  3117. </indent>
  3118. <p>Valid options are:</p>
  3119. <indent>
  3120. <table>
  3121. <tr>
  3122. <td>--key-file=&lt;filename&gt;</td>
  3123. <td>Specifies the private key filename required for signing. This option overrides the <tt>ISSIGTOOL_KEY_FILE</tt> environment variable which can also be used.</td>
  3124. </tr>
  3125. <tr>
  3126. <td>--allow-overwrite, -o</td>
  3127. <td>Allow to overwrite existing files.</td>
  3128. </tr>
  3129. <tr>
  3130. <td>--quiet, -q</td>
  3131. <td>Suppresses status messages that are normally printed to standard output.</td>
  3132. </tr>
  3133. <tr>
  3134. <td>--help, -?</td>
  3135. <td>Prints usage information.</td>
  3136. </tr>
  3137. </table>
  3138. </indent>
  3139. <p>Examples:</p>
  3140. <indent>
  3141. <examples noheader="1">
  3142. issigtool --key-file="MyKey.isprivatekey" generate-private-key<br/>
  3143. issigtool --key-file="MyKey.isprivatekey" sign "MyProg.dll"<br/>
  3144. issigtool --key-file="MyKey.isprivatekey" export-public-key "MyKey.ispublickey"<br/>
  3145. issigtool --key-file="MyKey.ispublickey" verify "MyProg.dll"
  3146. </examples>
  3147. </indent>
  3148. <p>Exit codes:</p>
  3149. <indent>
  3150. <table>
  3151. <tr>
  3152. <td>0</td>
  3153. <td>Success</td>
  3154. </tr>
  3155. <tr>
  3156. <td>1</td>
  3157. <td>A signature verification failed</td>
  3158. </tr>
  3159. <tr>
  3160. <td>2</td>
  3161. <td>Command line parameters were invalid or a fatal error occurred</td>
  3162. </tr>
  3163. </table>
  3164. </indent>
  3165. <p>Notes:</p>
  3166. <ul>
  3167. <li>Filenames that include spaces must be enclosed in quotes.</li>
  3168. <li>Ensure the private key file is secure, as its compromise can affect the validity of your signatures.</li>
  3169. </ul>
  3170. </body>
  3171. </topic>
  3172. <topic name="setupcmdline" title="Setup Command Line Parameters">
  3173. <keyword value="Setup Command Line Parameters" />
  3174. <keyword value="command line parameters" />
  3175. <keyword value="/HELP" anchor="HELP" />
  3176. <keyword value="/?" anchor="HELP2" />
  3177. <keyword value="/SP-" anchor="SP-" />
  3178. <keyword value="/SILENT" anchor="SILENT" />
  3179. <keyword value="/VERYSILENT" anchor="VERYSILENT" />
  3180. <keyword value="/NORESTART" anchor="NORESTART" />
  3181. <keyword value="/CLOSEAPPLICATIONS" anchor="CLOSEAPPLICATIONS" />
  3182. <keyword value="/NOCLOSEAPPLICATIONS" anchor="NOCLOSEAPPLICATIONS" />
  3183. <keyword value="/FORCECLOSEAPPLICATIONS" anchor="FORCECLOSEAPPLICATIONS" />
  3184. <keyword value="/NOFORCECLOSEAPPLICATIONS" anchor="NOFORCECLOSEAPPLICATIONS" />
  3185. <keyword value="/LOGCLOSEAPPLICATIONS" anchor="LOGCLOSEAPPLICATIONS" />
  3186. <keyword value="/RESTARTAPPLICATIONS" anchor="RESTARTAPPLICATIONS" />
  3187. <keyword value="/NORESTARTAPPLICATIONS" anchor="NORESTARTAPPLICATIONS" />
  3188. <keyword value="/LOADINF=" anchor="LOADINF" />
  3189. <keyword value="/SAVEINF=" anchor="SAVEINF" />
  3190. <keyword value="/LANG=" anchor="LANG" />
  3191. <keyword value="/DIR=" anchor="DIR" />
  3192. <keyword value="/GROUP=" anchor="GROUP" />
  3193. <keyword value="/NOICONS" anchor="NOICONS" />
  3194. <keyword value="/TYPE=" anchor="TYPE" />
  3195. <keyword value="/COMPONENTS=" anchor="COMPONENTS" />
  3196. <keyword value="/TASKS=" anchor="TASKS" />
  3197. <keyword value="/MERGETASKS=" anchor="MERGETASKS" />
  3198. <keyword value="/NOCANCEL" anchor="NOCANCEL" />
  3199. <keyword value="/LOG" anchor="LOG" />
  3200. <keyword value="/LOG=" anchor="LOG2" />
  3201. <keyword value="/PASSWORD=" anchor="PASSWORD" />
  3202. <keyword value="/RESTARTEXITCODE=" anchor="RESTARTEXITCODE" />
  3203. <keyword value="/SUPPRESSMSGBOXES" anchor="SUPPRESSMSGBOXES" />
  3204. <keyword value="/ALLUSERS" anchor="ALLUSERS" />
  3205. <keyword value="/CURRENTUSER" anchor="CURRENTUSER" />
  3206. <keyword value="silent installation" />
  3207. <keyword value="logging" />
  3208. <body>
  3209. <p>The Setup program accepts optional command line parameters. These can be useful to system administrators, and to other programs calling the Setup program.</p>
  3210. <p>Also see <link topic="uninstcmdline">Uninstaller Command Line Parameters</link>.</p>
  3211. <dl>
  3212. <dt><b><a name="HELP">/HELP</a>, <a name="HELP2">/?</a></b></dt>
  3213. <dd>
  3214. <p>Shows a summary of this information. Ignored if the <tt>UseSetupLdr</tt> <tt>[Setup]</tt> section directive was set to <tt>no</tt>.</p>
  3215. </dd>
  3216. <dt><b><a name="SP-">/SP-</a></b></dt>
  3217. <dd>
  3218. <p>Disables the <i>This will install... Do you wish to continue?</i> prompt at the beginning of Setup. Of course, this will have no effect if the <tt>DisableStartupPrompt</tt> <tt>[Setup]</tt> section directive was set to <tt>yes</tt>.</p>
  3219. </dd>
  3220. <dt><b><a name="SILENT">/SILENT</a>, <a name="VERYSILENT">/VERYSILENT</a></b></dt>
  3221. <dd>
  3222. <p>Instructs Setup to be silent or very silent. When Setup is silent the wizard and the background window are not displayed but the installation progress window is. When a setup is very silent this installation progress window is not displayed. Everything else is normal so for example error messages during installation are displayed and the startup prompt is (if you haven't disabled it with DisableStartupPrompt or the '/SP-' command line option explained above).</p>
  3223. <p>If a restart is necessary and the '/NORESTART' command isn't used (see below) and Setup is silent, it will display a <i>Reboot now?</i> message box. If it's very silent it will reboot without asking.</p>
  3224. </dd>
  3225. <dt><b><a name="SUPPRESSMSGBOXES">/SUPPRESSMSGBOXES</a></b></dt>
  3226. <dd>
  3227. <p>Instructs Setup to suppress message boxes. Only has an effect when combined with '/SILENT' or '/VERYSILENT'.</p>
  3228. <p>The default response in situations where there's a choice is:</p>
  3229. <ul appearance="compact">
  3230. <li>Yes in a 'Keep newer file?' situation.</li>
  3231. <li>No in a 'File exists, confirm overwrite.' situation.</li>
  3232. <li>Abort in Abort/Retry situations.</li>
  3233. <li>Cancel in Retry/Cancel situations.</li>
  3234. <li>Yes (=continue) in a DiskSpaceWarning/DirExists/DirDoesntExist/NoUninstallWarning/ExitSetupMessage/ConfirmUninstall situation.</li>
  3235. <li>Yes (=restart) in a FinishedRestartMessage/UninstalledAndNeedsRestart situation.</li>
  3236. <li>The recommended choice in a PrivilegesRequiredOverridesAllowed=dialog situation.</li>
  3237. </ul>
  3238. <p>5 message boxes are not suppressible:</p>
  3239. <ul appearance="compact">
  3240. <li>The About Setup message box.</li>
  3241. <li>The Exit Setup? message box.</li>
  3242. <li>The FileNotInDir2 message box displayed when Setup requires a new disk to be inserted and the disk was not found.</li>
  3243. <li>Any (error) message box displayed before Setup (or Uninstall) could read the command line parameters.</li>
  3244. <li>Any task dialog or message box displayed by [Code] support functions <tt>TaskDialogMsgBox</tt> and <tt>MsgBox</tt>.</li>
  3245. </ul>
  3246. </dd>
  3247. <dt><b><a name="ALLUSERS">/ALLUSERS</a></b></dt>
  3248. <dd>
  3249. <p>Instructs Setup to install in <link topic="admininstallmode">administrative install</link> mode. Only has an effect when the <tt>[Setup]</tt> section directive <link topic="setup_privilegesrequiredoverridesallowed">PrivilegesRequiredOverridesAllowed</link> allows the <tt>commandline</tt> override.</p>
  3250. </dd>
  3251. <dt><b><a name="CURRENTUSER">/CURRENTUSER</a></b></dt>
  3252. <dd>
  3253. <p>Instructs Setup to install in <link topic="admininstallmode">non administrative install</link> mode. Only has an effect when the <tt>[Setup]</tt> section directive <link topic="setup_privilegesrequiredoverridesallowed">PrivilegesRequiredOverridesAllowed</link> allows the <tt>commandline</tt> override.</p>
  3254. </dd>
  3255. <dt><b><a name="LOG">/LOG</a></b></dt>
  3256. <dd>
  3257. <p>Causes Setup to create a log file in the user's TEMP directory detailing file installation and [Run] actions taken during the installation process. This can be a helpful debugging aid. For example, if you suspect a file isn't being replaced when you believe it should be (or vice versa), the log file will tell you if the file was really skipped, and why.</p>
  3258. <p>The log file is created with a unique name based on the current date. (It will not overwrite or append to existing files.)</p>
  3259. <p>The information contained in the log file is technical in nature and therefore not intended to be understandable by end users. Nor is it designed to be machine-parsable; the format of the file is subject to change without notice.</p>
  3260. </dd>
  3261. <dt><b><a name="LOG2">/LOG=</a>"<i>filename</i>"</b></dt>
  3262. <dd>
  3263. <p>Same as /LOG, except it allows you to specify a fixed path/filename to use for the log file. If a file with the specified name already exists it will be overwritten. If the file cannot be created, Setup will abort with an error message.</p>
  3264. </dd>
  3265. <dt><b><a name="NOCANCEL">/NOCANCEL</a></b></dt>
  3266. <dd>
  3267. <p>Prevents the user from cancelling during the installation process, by disabling the Cancel button and ignoring clicks on the close button. Useful along with '/SILENT' or '/VERYSILENT'.</p>
  3268. </dd>
  3269. <dt><b><a name="NORESTART">/NORESTART</a></b></dt>
  3270. <dd>
  3271. <p>Prevents Setup from restarting the system following a successful installation, or after a <i>Preparing to Install</i> failure that requests a restart. Typically used along with /SILENT or /VERYSILENT.</p>
  3272. </dd>
  3273. <dt><b><a name="RESTARTEXITCODE">/RESTARTEXITCODE=</a><i>exit code</i></b></dt>
  3274. <dd>
  3275. <p>Specifies a custom exit code that Setup is to return when the system needs to be restarted following a successful installation. (By default, 0 is returned in this case.) Typically used along with /NORESTART. See also: <link topic="setupexitcodes">Setup Exit Codes</link></p>
  3276. </dd>
  3277. <dt><b><a name="CLOSEAPPLICATIONS">/CLOSEAPPLICATIONS</a></b></dt>
  3278. <dd>
  3279. <p>Instructs Setup to close applications using files that need to be updated by Setup if possible.</p>
  3280. </dd>
  3281. <dt><b><a name="NOCLOSEAPPLICATIONS">/NOCLOSEAPPLICATIONS</a></b></dt>
  3282. <dd>
  3283. <p>Prevents Setup from closing applications using files that need to be updated by Setup. If /CLOSEAPPLICATIONS was also used, this command line parameter is ignored.</p>
  3284. </dd>
  3285. <dt><b><a name="FORCECLOSEAPPLICATIONS">/FORCECLOSEAPPLICATIONS</a></b></dt>
  3286. <dd>
  3287. <p>Instructs Setup to force close when closing applications.</p>
  3288. </dd>
  3289. <dt><b><a name="NOFORCECLOSEAPPLICATIONS">/NOFORCECLOSEAPPLICATIONS</a></b></dt>
  3290. <dd>
  3291. <p>Prevents Setup from force closing when closing applications. If /FORCECLOSEAPPLICATIONS was also used, this command line parameter is ignored.</p>
  3292. </dd>
  3293. <dt><b><a name="LOGCLOSEAPPLICATIONS">/LOGCLOSEAPPLICATIONS</a></b></dt>
  3294. <dd>
  3295. <p>Instructs Setup to create extra logging when closing applications for debugging purposes.</p>
  3296. </dd>
  3297. <dt><b><a name="RESTARTAPPLICATIONS">/RESTARTAPPLICATIONS</a></b></dt>
  3298. <dd>
  3299. <p>Instructs Setup to restart applications if possible.</p>
  3300. </dd>
  3301. <dt><b><a name="NORESTARTAPPLICATIONS">/NORESTARTAPPLICATIONS</a></b></dt>
  3302. <dd>
  3303. <p>Prevents Setup from restarting applications. If /RESTARTAPPLICATIONS was also used, this command line parameter is ignored.</p>
  3304. </dd>
  3305. <dt><b><a name="LOADINF">/LOADINF=</a>"<i>filename</i>"</b></dt>
  3306. <dd>
  3307. <p>Instructs Setup to load the settings from the specified file after having checked the command line. This file can be prepared using the '/SAVEINF=' command as explained below.</p>
  3308. <p>Don't forget to use quotes if the filename contains spaces.</p>
  3309. </dd>
  3310. <dt><b><a name="SAVEINF">/SAVEINF=</a>"<i>filename</i>"</b></dt>
  3311. <dd>
  3312. <p>Instructs Setup to save installation settings to the specified file.</p>
  3313. <p>Don't forget to use quotes if the filename contains spaces.</p>
  3314. </dd>
  3315. <dt><b><a name="LANG">/LANG=</a><i>language</i></b></dt>
  3316. <dd>
  3317. <p>Specifies the language to use. <i>language</i> specifies the internal name of the language as specified in a [Languages] section entry.</p>
  3318. <p>When a valid /LANG parameter is used, the <i>Select Language</i> dialog will be suppressed.</p>
  3319. </dd>
  3320. <dt><b><a name="DIR">/DIR=</a>"<i>x</i>:\<i>dirname</i>"</b></dt>
  3321. <dd>
  3322. <p>Overrides the default directory name displayed on the <i>Select Destination Location</i> wizard page. A fully qualified pathname must be specified. May include an "expand:" prefix which instructs Setup to expand any constants in the name. For example: '/DIR=expand:{autopf}\My Program'.</p>
  3323. </dd>
  3324. <dt><b><a name="GROUP">/GROUP=</a>"<i>folder name</i>"</b></dt>
  3325. <dd>
  3326. <p>Overrides the default folder name displayed on the <i>Select Start Menu Folder</i> wizard page. May include an "expand:" prefix, see '/DIR='. If the <tt>[Setup]</tt> section directive <tt>DisableProgramGroupPage</tt> was set to <tt>yes</tt>, this command line parameter is ignored.</p>
  3327. </dd>
  3328. <dt><b><a name="NOICONS">/NOICONS</a></b></dt>
  3329. <dd>
  3330. <p>Instructs Setup to initially check the <i>Don't create a Start Menu folder</i> check box on the <i>Select Start Menu Folder</i> wizard page.</p>
  3331. </dd>
  3332. <dt><b><a name="TYPE">/TYPE=</a><i>type name</i></b></dt>
  3333. <dd>
  3334. <p>Overrides the default <link topic="typessection">setup type</link>.</p>
  3335. <p>If the specified type exists and isn't a custom type, then any /COMPONENTS parameter will be ignored.</p>
  3336. </dd>
  3337. <dt><b><a name="COMPONENTS">/COMPONENTS=</a>"<i>comma separated list of component names</i>"</b></dt>
  3338. <dd>
  3339. <p>Overrides the default <link topic="componentssection">component</link> settings. Using this command line parameter causes Setup to automatically select a custom type. If no custom type is defined, this parameter is ignored.</p>
  3340. <p>Only the specified components will be selected; the rest will be deselected.</p>
  3341. <p>If a component name is prefixed with a "*" character, any child components will be selected as well (except for those that include the <tt>dontinheritcheck</tt> flag). If a component name is prefixed with a "!" character, the component will be deselected.</p>
  3342. <p>This parameter does not change the state of components that include the <tt>fixed</tt> flag.</p>
  3343. <example>
  3344. Deselect all components, then select the "help" and "plugins" components:<br/>
  3345. /COMPONENTS="help,plugins"
  3346. </example>
  3347. <example>
  3348. Deselect all components, then select a parent component and all of its children with the exception of one:<br/>
  3349. /COMPONENTS="*parent,!parent\child"
  3350. </example>
  3351. </dd>
  3352. <dt><b><a name="TASKS">/TASKS=</a>"<i>comma separated list of task names</i>"</b></dt>
  3353. <dd>
  3354. <p>Specifies a list of <link topic="taskssection">tasks</link> that should be initially selected.</p>
  3355. <p>Only the specified tasks will be selected; the rest will be deselected. Use the /MERGETASKS parameter instead if you want to keep the default set of tasks and only select/deselect some of them.</p>
  3356. <p>If a task name is prefixed with a "*" character, any child tasks will be selected as well (except for those that include the <tt>dontinheritcheck</tt> flag). If a task name is prefixed with a "!" character, the task will be deselected.</p>
  3357. <example>
  3358. Deselect all tasks, then select the "desktopicon" and "fileassoc" tasks:<br/>
  3359. /TASKS="desktopicon,fileassoc"
  3360. </example>
  3361. <example>
  3362. Deselect all tasks, then select a parent task and all of its children with the exception of one:<br/>
  3363. /TASKS="*parent,!parent\child"
  3364. </example>
  3365. </dd>
  3366. <dt><b><a name="MERGETASKS">/MERGETASKS=</a>"<i>comma separated list of task names</i>"</b></dt>
  3367. <dd>
  3368. <p>Like the /TASKS parameter, except the specified tasks will be merged with the set of tasks that would have otherwise been selected by default.</p>
  3369. <p>If <link topic="setup_useprevioustasks">UsePreviousTasks</link> is set to <tt>yes</tt>, the specified tasks will be selected/deselected after any previous tasks are restored.</p>
  3370. <example>
  3371. Keep the default set of selected tasks, but additionally select the "desktopicon" and "fileassoc" tasks:<br/>
  3372. /MERGETASKS="desktopicon,fileassoc"
  3373. </example>
  3374. <example>
  3375. Keep the default set of selected tasks, but deselect the "desktopicon" task:<br/>
  3376. /MERGETASKS="!desktopicon"
  3377. </example>
  3378. </dd>
  3379. <dt><b><a name="PASSWORD">/PASSWORD=</a><i>password</i></b></dt>
  3380. <dd>
  3381. <p>Specifies the password to use. If the <tt>[Setup]</tt> section directive <tt>Password</tt> was not set, this command line parameter is ignored.</p>
  3382. <p>When an invalid password is specified, this command line parameter is also ignored.</p>
  3383. </dd>
  3384. </dl>
  3385. </body>
  3386. </topic>
  3387. <topic name="setupexitcodes" title="Setup Exit Codes">
  3388. <keyword value="Setup Exit Codes" />
  3389. <keyword value="exit codes" />
  3390. <keyword value="return codes" />
  3391. <body>
  3392. <p>The Setup program may return one of the following exit codes:</p>
  3393. <table>
  3394. <tr>
  3395. <td><b>0</b></td>
  3396. <td>
  3397. <p>Setup was successfully run to completion or the /HELP or /? command line parameter was used.</p>
  3398. </td>
  3399. </tr>
  3400. <tr>
  3401. <td><b>1</b></td>
  3402. <td>
  3403. <p>Setup failed to initialize.</p>
  3404. </td>
  3405. </tr>
  3406. <tr>
  3407. <td><b>2</b></td>
  3408. <td>
  3409. <p>The user clicked Cancel in the wizard before the actual installation started, or chose "No" on the opening "This will install..." message box.</p>
  3410. </td>
  3411. </tr>
  3412. <tr>
  3413. <td><b>3</b></td>
  3414. <td>
  3415. <p>A fatal error occurred while preparing to move to the next installation phase (for example, from displaying the pre-installation wizard pages to the actual installation process). This should never happen except under the most unusual of circumstances, such as running out of memory or Windows resources.</p>
  3416. </td>
  3417. </tr>
  3418. <tr>
  3419. <td><b>4</b></td>
  3420. <td>
  3421. <p>A fatal error occurred during the actual installation process.</p>
  3422. <p><i>Note:</i> Errors that cause an Abort-Retry-Ignore box to be displayed are not fatal errors. If the user chooses <i>Abort</i> at such a message box, exit code 5 will be returned.</p>
  3423. </td>
  3424. </tr>
  3425. <tr>
  3426. <td><b>5</b></td>
  3427. <td>
  3428. <p>The user clicked Cancel during the actual installation process, or chose <i>Abort</i> at an Abort-Retry-Ignore box.</p>
  3429. </td>
  3430. </tr>
  3431. <tr>
  3432. <td><b>6</b></td>
  3433. <td>
  3434. <p>The Setup process was forcefully terminated by the debugger (<i>Run | Terminate</i> was used in the Compiler IDE).</p>
  3435. </td>
  3436. </tr>
  3437. <tr>
  3438. <td><b>7</b></td>
  3439. <td>
  3440. <p>The <link topic="wizardpages"><i>Preparing to Install</i></link> stage determined that Setup cannot proceed with installation.</p>
  3441. </td>
  3442. </tr>
  3443. <tr>
  3444. <td><b>8</b></td>
  3445. <td>
  3446. <p>The <link topic="wizardpages"><i>Preparing to Install</i></link> stage determined that Setup cannot proceed with installation, and that the system needs to be restarted in order to correct the problem.</p>
  3447. </td>
  3448. </tr>
  3449. </table>
  3450. <p>Before returning an exit code of 1, 3, 4, 7, or 8, an error message explaining the problem will normally be displayed.</p>
  3451. <p>Future versions of Inno Setup may return additional exit codes, so applications checking the exit code should be programmed to handle unexpected exit codes gracefully. Any non-zero exit code indicates that Setup was not run to completion.</p>
  3452. </body>
  3453. </topic>
  3454. <topic name="uninstcmdline" title="Uninstaller Command Line Parameters">
  3455. <keyword value="Uninstaller Command Line Parameters" />
  3456. <keyword value="command line parameters" />
  3457. <keyword value="/SILENT" anchor="SILENT" />
  3458. <keyword value="/VERYSILENT" anchor="VERYSILENT" />
  3459. <keyword value="/NORESTART" anchor="NORESTART" />
  3460. <keyword value="/LOG" anchor="LOG" />
  3461. <keyword value="/LOG=" anchor="LOG2" />
  3462. <keyword value="/SUPPRESSMSGBOXES" anchor="SUPPRESSMSGBOXES" />
  3463. <keyword value="silent uninstallation" />
  3464. <keyword value="logging" />
  3465. <body>
  3466. <p>The uninstaller program (unins???.exe) accepts optional command line parameters. These can be useful to system administrators, and to other programs calling the uninstaller program.</p>
  3467. <p>Also see <link topic="setupcmdline">Setup Command Line Parameters</link>.</p>
  3468. <dl>
  3469. <dt><b><a name="SILENT">/SILENT</a>, <a name="VERYSILENT">/VERYSILENT</a></b></dt>
  3470. <dd>
  3471. <p>When specified, the uninstaller will not ask the user for startup confirmation or display a message stating that uninstall is complete. Shared files that are no longer in use are deleted automatically without prompting. Any critical error messages will still be shown on the screen. When '/VERYSILENT' is specified, the uninstallation progress window is not displayed.</p>
  3472. <p>If a restart is necessary and the '/NORESTART' command isn't used (see below) and '/VERYSILENT' is specified, the uninstaller will reboot without asking.</p>
  3473. </dd>
  3474. <dt><b><a name="SUPPRESSMSGBOXES">/SUPPRESSMSGBOXES</a></b></dt>
  3475. <dd>
  3476. <p>Instructs the uninstaller to suppress message boxes. Only has an effect when combined with '/SILENT' and '/VERYSILENT'. See '/SUPPRESSMSGBOXES' under <link topic="setupcmdline" anchor="SUPPRESSMSGBOXES">Setup Command Line Parameters</link> for more details.</p>
  3477. </dd>
  3478. <dt><b><a name="LOG">/LOG</a></b></dt>
  3479. <dd>
  3480. <p>Causes Uninstall to create a log file in the user's TEMP directory detailing file uninstallation and [UninstallRun] actions taken during the uninstallation process. This can be a helpful debugging aid.</p>
  3481. <p>The log file is created with a unique name based on the current date. (It will not overwrite or append to existing files.)</p>
  3482. <p>The information contained in the log file is technical in nature and therefore not intended to be understandable by end users. Nor is it designed to be machine-parsable; the format of the file is subject to change without notice.</p>
  3483. </dd>
  3484. <dt><b><a name="LOG2">/LOG=</a>"<i>filename</i>"</b></dt>
  3485. <dd>
  3486. <p>Same as /LOG, except it allows you to specify a fixed path/filename to use for the log file. If a file with the specified name already exists it will be overwritten. If the file cannot be created, Uninstall will abort with an error message.</p>
  3487. </dd>
  3488. <dt><b><a name="NORESTART">/NORESTART</a></b></dt>
  3489. <dd>
  3490. <p>Instructs the uninstaller not to reboot even if it's necessary.</p>
  3491. </dd>
  3492. </dl>
  3493. </body>
  3494. </topic>
  3495. <topic name="uninstexitcodes" title="Uninstaller Exit Codes">
  3496. <keyword value="Uninstaller Exit Codes" />
  3497. <keyword value="exit codes" />
  3498. <keyword value="return codes" />
  3499. <body>
  3500. <p>The uninstaller will return a non-zero exit code if the user cancels or a fatal error is encountered. Programs checking the exit code to detect failure should not check for a specific non-zero value; any non-zero exit code indicates that the uninstaller was not run to completion.</p>
  3501. <p>Note that at the moment you get an exit code back from the uninstaller, some code related to uninstallation might still be running. Because Windows doesn't allow programs to delete their own EXEs, the uninstaller creates and spawns a copy of itself in the TEMP directory. This "clone" performs the actual uninstallation, and at the end, terminates the original uninstaller EXE (at which point you get an exit code back), deletes it, then displays the "uninstall complete" message box (if it hasn't been suppressed with /SILENT or /VERYSILENT).</p>
  3502. </body>
  3503. </topic>
  3504. <topic name="unsafefiles" title="Unsafe Files">
  3505. <keyword value="Unsafe Files" />
  3506. <body>
  3507. <p>As a convenience to new users who are unfamiliar with which files they should and should not distribute, the compiler will display an error message if one attempts to install certain "unsafe" files using the <link topic="filessection">[Files] section</link>. These files are listed below.</p>
  3508. <p>(Note: It is possible to disable the error message by using a certain flag on the [Files] section entry, but this is NOT recommended.)</p>
  3509. <dl>
  3510. <dt><b>Any DLL file from own Windows System directory</b></dt>
  3511. <dd>
  3512. <p>You should not deploy any DLLs out of your own Windows System directory to <tt>{sys}</tt> because most of them are tailored for your own specific version of Windows, and will not work when installed on other versions. Often times a user's system will be <b>rendered unbootable</b> if you install a DLL from a different version of Windows. Another reason why it's a bad idea is that when you install programs on your computer, the DLLs may be replaced with different/incompatible versions without your knowledge. This could lead to unexpected and difficult-to-trace problems on users' systems when you build new installations.</p>
  3513. <p>Instead of deploying the DLLs from your Windows System directory, you should find versions that are specifically deemed "redistributable". Redistributable DLLs typically work on more than one version of Windows. To find redistributable versions of the Visual Basic and Visual C++ run-time DLLs, see the Inno Setup FAQ.</p>
  3514. <p>If you have a DLL residing in the Windows System directory that you are <b>absolutely sure</b> is redistributable, copy it to your script's source directory and deploy it from there instead.</p>
  3515. </dd>
  3516. <dt><b>ADVAPI32.DLL, COMDLG32.DLL, GDI32.DLL, KERNEL32.DLL, RICHED32.DLL, SHELL32.DLL, USER32.DLL, UXTHEME.DLL</b></dt>
  3517. <dd>
  3518. <p>These are all core components of Windows and must never be deployed with an installation. Users may only get new versions of these DLLs by installing a new version of Windows or a service pack or hotfix for Windows.</p>
  3519. </dd>
  3520. <dt><i>(Special case)</i> <b>COMCAT.DLL, MSVBVM50.DLL, MSVBVM60.DLL, OLEAUT32.DLL, OLEPRO32.DLL, STDOLE2.TLB</b></dt>
  3521. <dd>
  3522. <p>If <tt>DestDir</tt> is set to a location <i>other</i> than <tt>{sys}</tt> and the <tt>regserver</tt> or <tt>regtypelib</tt> flag is used, then the above files will be considered "unsafe". These files must never be deployed to and registered in a directory other than <tt>{sys}</tt> because doing so can potentially cause <i>all</i> programs on the system to use them in favor of the files in <tt>{sys}</tt>. Problems would result if your copies of the files are older than the ones in <tt>{sys}</tt>. Also, if your copies of the files were removed, other applications would break.</p>
  3523. </dd>
  3524. <dt><b>COMCTL32.DLL</b></dt>
  3525. <dd>
  3526. <p>Microsoft does not allow separate redistribution of COMCTL32.DLL (and for good reason - the file differs between platforms), so you should never place COMCTL32.DLL in a script's [Files] section. You can however direct your users to <extlink href="http://www.microsoft.com/downloads/details.aspx?FamilyID=cb2cf3a2-8025-4e8f-8511-9b476a8d35d2&amp;DisplayLang=en">download the COMCTL32 update from Microsoft</extlink>, or distribute the COMCTL32 update along with your program.</p>
  3527. </dd>
  3528. <dt><b>SHDOCVW.DLL, SHLWAPI.DLL, URLMON.DLL, WININET.DLL</b></dt>
  3529. <dd>
  3530. <p>These are core components of Internet Explorer and are also used by Windows Explorer. Replacing them may prevent Explorer from starting. If your application depends on these DLLs, or a recent version of them, then your users will need to install a recent version of Internet Explorer to get them.</p>
  3531. </dd>
  3532. <dt><b>MSCOREE.DLL</b></dt>
  3533. <dd>
  3534. <p>This file is part of the Microsoft .NET Framework. You cannot safely install or update the .NET Framework by including this file with your installation. Call or direct your users to dotnetfx.exe instead.</p>
  3535. </dd>
  3536. </dl>
  3537. </body>
  3538. </topic>
  3539. <topic name="credits" title="Contributors">
  3540. <keyword value="Contributors" />
  3541. <keyword value="Credits" />
  3542. <body>
  3543. <p>Inno Setup was created by Jordan Russell and is currently maintained by Martijn Laan (since 5.4.3, released in 2011).</p>
  3544. <p>The following is a list of those who have contributed significant code to the Inno Setup project, or otherwise deserve special recognition:</p>
  3545. <ul>
  3546. <li>Jean-loup Gailly &amp; Mark Adler: Creators of the <extlink href="http://www.zlib.net/">zlib</extlink> compression library that Inno Setup uses.</li>
  3547. <li>Julian Seward: Creator of the <extlink href="http://www.bzip.org/">bzlib</extlink> compression library that Inno Setup uses.</li>
  3548. <li>Igor Pavlov: Creator of the <extlink href="https://7-zip.org/">7-Zip</extlink> and <extlink href="http://www.7-zip.org/sdk.html">LZMA SDK</extlink> libraries that Inno Setup uses.</li>
  3549. <li>Vince Valenti: Most of the code for the "Window" <tt>[Setup]</tt> section directives (1.12.4).</li>
  3550. <li>Joe White: Code for ChangesAssociations <tt>[Setup]</tt> section directive (1.2).</li>
  3551. <li>Jason Olsen: Most of the code for <link topic="appendnotes">appending to existing uninstall logs</link> (1.3).</li>
  3552. <li>Martijn Laan: Rich Edit 2.0 &amp; URL detection support (1.3.13); Silent uninstallation (1.3.25); System image list support in drive and directory lists (1.3.25); Silent installation (2.0); The <tt>[Types]</tt>, <tt>[Components]</tt> and <tt>[Tasks]</tt> sections (2.0); The <tt>postinstall</tt> flag (2.0); The <tt>[Code]</tt> section (4.0); Subcomponents and subtasks support (4.0); Many other features after 4.0.</li>
  3553. <li>Alex Yackimoff: Portions of <link topic="scriptclasses" anchor="TNewCheckListBox">TNewCheckListBox</link> (4.0); ISPP (5.4.1).</li>
  3554. <li>Carlo Kok: <extlink href="http://www.remobjects.com/ps">RemObjects Pascal Script</extlink> (4.0).</li>
  3555. <li>Creators of SynEdit: The syntax-highlighting editor used in the Compiler IDE (2.0 - 5.2.4).</li>
  3556. <li>Creators of UniSynEdit: The syntax-highlighting editor used in the Compiler IDE (5.3 - 5.3.11).</li>
  3557. <li>Creators of <extlink href="http://www.scintilla.org/">Scintilla</extlink>: The syntax-highlighting editor used in the Compiler IDE (5.4).</li>
  3558. <li>Zaher Dirkey: Initial work on improved right-to-left languages support (5.2.3).</li>
  3559. <li>Evgeny Karpov of RemObjects Software: Initial work on Unicode support (5.3).</li>
  3560. <li>Motaz Alnuweiri: 128x128 and 256x256 sizes of the Compiler IDE and document icons (5.5.3).</li>
  3561. <li>DRON: Code for the improved image stretching (5.6).</li>
  3562. <li>Sherlock Software: Most of the code for the <tt>CreateCallback</tt> support function (6.0).</li>
  3563. <li>Vizit0r: Code for the "Debug Call Stack" view (6.0.3).</li>
  3564. <li>Cristoph Nahr: Code for the .NET version detection (6.0.4).</li>
  3565. <li>Sergii Leonov: Code for the Compiler IDE's MsgBox tool (6.1.0) and initial work on its [Registry] tool (6.3.0).</li>
  3566. <li>Jens Geyer: Initial work on closeable tabs in the Compiler IDE (6.3.0).</li>
  3567. <li>ser163: Code for the Compiler IDE's [Files] tool (6.3.0).</li>
  3568. </ul>
  3569. <p>Special thanks to everyone answering questions on the forum and on Stack Overflow, especially: Gavin Lambert, Deanna Hants, Jernej Simon&#269;i&#269;, Martin Prikryl and TLama.</p>
  3570. </body>
  3571. </topic>
  3572. <topic name="donate" title="Support Inno Setup">
  3573. <keyword value="Support Inno Setup" />
  3574. <body>
  3575. <p>To support Inno Setup, go to this page:<br/>
  3576. <extlink href="https://jrsoftware.org/isdonate.php">https://jrsoftware.org/isdonate.php</extlink></p>
  3577. <p>Thank you in advance for your support!</p>
  3578. </body>
  3579. </topic>
  3580. <setuptopic directive="UseSetupLdr">
  3581. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  3582. <setupdefault><tt>yes</tt></setupdefault>
  3583. <body>
  3584. <p>This tells the compiler which type of Setup to create. If this is <tt>yes</tt>, it compiles all setup data into a single EXE. If this is <tt>no</tt>, it compiles the setup data into at least three files: setup.exe, setup-0.bin, and setup-1.bin. The <b>only</b> reason you would probably want to use <tt>no</tt> is for debugging purposes.</p>
  3585. <p><i>Note:</i> Do not use <tt>UseSetupLdr=no</tt> on an installation which uses disk spanning (<tt>DiskSpanning=yes</tt>). When <tt>UseSetupLdr</tt> is <tt>yes</tt>, the setup program is copied to and run from the user's TEMP directory. This does not happen when <tt>UseSetupLdr</tt> is <tt>no</tt>, and could result in errors if Windows tries to locate the setup.exe file on the disk and can't find it because a different disk is in the drive.</p>
  3586. <p><i>Note:</i> Do not use <tt>UseSetupLdr=no</tt> to avoid digital signature verification startup delays on a large Setup, use disk spanning instead. See <link topic="setup_signtool">SignTool</link> for more information. Also note that digitally signing a <tt>UseSetupLdr=no</tt> based Setup will lead to an invalid digital signature for Uninstall.</p>
  3587. </body>
  3588. </setuptopic>
  3589. <setuptopic directive="AppName">
  3590. <body>
  3591. <p>This required directive specifies the name of the application being installed. Do not include the version number, as that is defined by the <link topic="setup_appversion">AppVersion</link> and/or <link topic="setup_appvername">AppVerName</link> directives. <tt>AppName</tt> is displayed throughout the Setup program and uninstaller in window titles, wizard pages, and dialog boxes. The value may include constants.</p>
  3592. <p>If <link topic="setup_disablewelcomepage">DisableWelcomePage</link> is set to <tt>yes</tt> (which it is by default) then <link topic="setup_appvername">AppVerName</link> is displayed in window titles instead of <tt>AppName</tt>.</p>
  3593. <p>The value of this directive is also used as the default value for the <link topic="setup_appid">AppId</link>, <link topic="setup_versioninfodescription">VersionInfoDescription</link>, and <link topic="setup_versioninfoproductname">VersionInfoProductName</link> directives if those are not specified.</p>
  3594. <example><pre>AppName=My Program</pre></example>
  3595. <p><b>See also:</b><br/>
  3596. <link topic="setup_appvername">AppVerName</link>
  3597. </p>
  3598. </body>
  3599. </setuptopic>
  3600. <setuptopic directive="AppVersion">
  3601. <body>
  3602. <p>This directive specifies the version number of the application being installed. The value of this directive, which may include constants, is used in the default value for the <link topic="setup_appvername">AppVerName</link> directive, and is displayed in the Version field of the application's <i>Add/Remove Programs</i> entry. It is also used to set the <tt>MajorVersion</tt> and <tt>MinorVersion</tt> values in the Uninstall registry key when possible.</p>
  3603. <p>This directive is required and cannot be empty if the <link topic="setup_appvername">AppVerName</link> directive is not set.</p>
  3604. <example><pre>AppVersion=1.5</pre></example>
  3605. </body>
  3606. </setuptopic>
  3607. <setuptopic directive="AppVerName">
  3608. <setupdefault><link topic="setup_appname">AppName</link> version <link topic="setup_appversion">AppVersion</link>, localized according to the active language's <tt>NameAndVersion</tt> <link topic="custommessagessection">custom message</link></setupdefault>
  3609. <body>
  3610. <p>This directive specifies the name of the application plus its version number. The value of this directive is displayed on the <i>Welcome</i> page of Setup's wizard, and is used as the default title of the application's <i>Add/Remove Programs</i> entry (see <link topic="setup_uninstalldisplayname">UninstallDisplayName</link>). The value may include constants.</p>
  3611. <p>If <link topic="setup_disablewelcomepage">DisableWelcomePage</link> is set to <tt>yes</tt> (which it is by default) then <tt>AppVerName</tt> is also displayed in window titles instead of <link topic="setup_appname">AppName</link>.</p>
  3612. <p>This directive is required if the <link topic="setup_appversion">AppVersion</link> directive is not set.</p>
  3613. <examples><pre>
  3614. AppVerName=My Program 1.5
  3615. AppVerName=My Program version 1.5
  3616. AppVerName={cm:NameAndVersion,My Program,1.5}
  3617. </pre></examples>
  3618. <p><b>See also:</b><br/>
  3619. <link topic="setup_appname">AppName</link>
  3620. </p>
  3621. </body>
  3622. </setuptopic>
  3623. <setuptopic directive="AppId">
  3624. <setupdefault><link topic="setup_appname">AppName</link></setupdefault>
  3625. <body>
  3626. <p>The value of <tt>AppId</tt> is stored inside uninstall log files (unins???.dat), and is checked by subsequent installations to determine whether it may <link topic="appendnotes">append to a particular existing uninstall log</link>. Setup will only append to an uninstall log if the <tt>AppId</tt> of the existing uninstall log is the same as the current installation's <tt>AppId</tt>. For a practical example, say you have two installations -- one entitled <i>My Program</i> and the other entitled <i>My Program 1.1 Update.</i> To get My Program 1.1 Update to append to My Program's uninstall log, you would have to set <tt>AppId</tt> to the same value in both installations.</p>
  3627. <p><tt>AppId</tt> also determines the actual name of the Uninstall registry key, to which Inno Setup tacks on "_is1" at the end. (Therefore, if <tt>AppId</tt> is "MyProgram", the key will be named "MyProgram_is1".) Pre-1.3 versions of Inno Setup based the key name on the value of <tt>AppVerName</tt>.</p>
  3628. <p>AppId is a not used for display anywhere, so feel free to make it as cryptic as you desire. The value may include constants.</p>
  3629. <p>If you use a {code:..} constant to allow your user to customize <tt>AppId</tt>, you do not need to return the real value until just before the installation starts: if necessary you may return an empty or generic value at earlier times. If not empty, this value will only be used to attempt to restore previous install settings (like the settings stored by [Setup] section directive <link topic="setup_usepreviousappdir">UsePreviousAppDir</link>). If empty, it isn't used for anything.</p>
  3630. <p>The length of <tt>AppId</tt> with all constants evaluated should never exceed 127 characters.</p>
  3631. <example><pre>AppId=MyProgram</pre></example>
  3632. </body>
  3633. </setuptopic>
  3634. <setuptopic directive="AppMutex">
  3635. <body>
  3636. <p>This directive is used to prevent the user from installing new versions of an application while the application is still running, and to prevent the user from uninstalling a running application. It specifies the names of one or more named mutexes (multiple mutexes are separated by commas), which Setup and Uninstall will check for at startup. If any exist, Setup/Uninstall will display the message: "[Setup or Uninstall] has detected that [AppName] is currently running. Please close all instances of it now, then click OK to continue, or Cancel to exit." The value may include constants.</p>
  3637. <p>Use of this directive requires that you add code to your application which creates a mutex with the name you specify in this directive. Examples of creating a mutex in Delphi, C, and Visual Basic are shown below. The code should be executed during your application's startup.</p>
  3638. <p>Delphi:</p>
  3639. <precode>
  3640. CreateMutex(nil, False, 'MyProgramsMutexName');
  3641. </precode>
  3642. <p>C:</p>
  3643. <precode>
  3644. CreateMutex(NULL, FALSE, "MyProgramsMutexName");
  3645. </precode>
  3646. <p>Visual Basic (submitted by Peter Young):</p>
  3647. <precode>
  3648. 'Place in Declarations section:
  3649. Private Declare Function CreateMutex Lib "kernel32" _
  3650. Alias "CreateMutexA" _
  3651. (ByVal lpMutexAttributes As Long, _
  3652. ByVal bInitialOwner As Long, _
  3653. ByVal lpName As String) As Long
  3654. 'Place in startup code (Form_Load or Sub Main):
  3655. CreateMutex 0&amp;, 0&amp;, "MyProgramsMutexName"
  3656. </precode>
  3657. <p>It is not necessary to explicitly destroy the mutex object upon your application's termination; the system will do this automatically. Nor is it recommended that you do so, because ideally the mutex object should exist until the process completely terminates.</p>
  3658. <p>Note that mutex name comparison in Windows is <i>case sensitive.</i></p>
  3659. <p>To specify a mutex name containing a comma, escape the comma with a backslash.</p>
  3660. <p>See the topic for CreateMutex in the MS SDK help for more information on mutexes.</p>
  3661. <example><pre>AppMutex=MyProgramsMutexName,Global\MyProgramsMutexName</pre></example>
  3662. <p><b>See also:</b><br/>
  3663. <link topic="setup_setupmutex">SetupMutex</link><br/>
  3664. <link topic="setup_closeapplications">CloseApplications</link></p>
  3665. </body>
  3666. </setuptopic>
  3667. <setuptopic directive="SetupMutex">
  3668. <body>
  3669. <p>This directive is used to prevent Setup from running while Setup is already running. It specifies the names of one or more named mutexes (multiple mutexes are separated by commas), which Setup will check for at startup. If any exist, Setup will display the message: "Setup has detected that Setup is currently running. Please close all instances of it now, then click OK to continue, or Cancel to exit." If none exist, Setup will create the mutex(es) and continue normally. The value may include constants.</p>
  3670. <p>To specify a mutex name containing a comma, escape the comma with a backslash.</p>
  3671. <p>See the topic for CreateMutex in the MS SDK help for more information on mutexes.</p>
  3672. <example><pre>SetupMutex=MySetupsMutexName,Global\MySetupsMutexName</pre></example>
  3673. <p><b>See also:</b><br/>
  3674. <link topic="setup_appmutex">AppMutex</link>
  3675. </p>
  3676. </body>
  3677. </setuptopic>
  3678. <setuptopic directive="AppCopyright">
  3679. <body>
  3680. <p>The value of this directive is used as the default value for the <link topic="setup_versioninfocopyright">VersionInfoCopyright</link> directive if it is not specified.</p>
  3681. <example><pre>AppCopyright=Copyright (C) 1997-2005 My Company, Inc.</pre></example>
  3682. </body>
  3683. </setuptopic>
  3684. <setuptopic directive="AppComments">
  3685. <body>
  3686. <p>This string is displayed on the "Support" dialog of the <i>Add/Remove Programs</i> Control Panel applet. The value may include constants.</p>
  3687. <example>
  3688. <pre>
  3689. AppComments=Hello.
  3690. </pre>
  3691. </example>
  3692. </body>
  3693. </setuptopic>
  3694. <setuptopic directive="AppContact">
  3695. <body>
  3696. <p>This string is displayed on the "Support" dialog of the <i>Add/Remove Programs</i> Control Panel applet. The value may include constants.</p>
  3697. <example>
  3698. <pre>
  3699. AppContact=My Company Customer Support
  3700. </pre>
  3701. </example>
  3702. </body>
  3703. </setuptopic>
  3704. <setuptopic directive="AppPublisher">
  3705. <body>
  3706. <p>This string is displayed on the "Support" dialog of the <i>Add/Remove Programs</i> Control Panel applet. The value may include constants.</p>
  3707. <p>The value of this directive is also used as the default value for the <link topic="setup_versioninfocompany">VersionInfoCompany</link> directive if it is not specified.</p>
  3708. <example>
  3709. <pre>
  3710. AppPublisher=My Company, Inc.
  3711. AppPublisherURL=http://www.example.com/
  3712. </pre>
  3713. </example>
  3714. </body>
  3715. </setuptopic>
  3716. <setuptopic directive="AppPublisherURL">
  3717. <body>
  3718. <p>A link to the specified URL is displayed on the "Support" dialog of the <i>Add/Remove Programs</i> Control Panel applet. The value may include constants.</p>
  3719. <example>
  3720. <pre>
  3721. AppPublisher=My Company, Inc.
  3722. AppPublisherURL=http://www.example.com/
  3723. </pre>
  3724. </example>
  3725. </body>
  3726. </setuptopic>
  3727. <setuptopic directive="AppReadmeFile">
  3728. <body>
  3729. <p>This string, which may be a URL, is displayed on the "Support" dialog of the <i>Add/Remove Programs</i> Control Panel applet. The value may include constants.</p>
  3730. <example>
  3731. <pre>
  3732. AppReadmeFile=http://www.example.com/readme.html
  3733. </pre>
  3734. </example>
  3735. </body>
  3736. </setuptopic>
  3737. <setuptopic directive="AppSupportPhone">
  3738. <body>
  3739. <p>This string is displayed on the "Support" dialog of the <i>Add/Remove Programs</i> Control Panel applet. The value may include constants.</p>
  3740. <example>
  3741. <pre>
  3742. AppSupportPhone=1-800-555-1212
  3743. </pre>
  3744. </example>
  3745. </body>
  3746. </setuptopic>
  3747. <setuptopic directive="AppSupportURL">
  3748. <body>
  3749. <p>A link to the specified URL is displayed on the "Support" dialog of the <i>Add/Remove Programs</i> Control Panel applet. The value may include constants.</p>
  3750. <example>
  3751. <pre>
  3752. AppSupportURL=http://www.example.com/support.html
  3753. </pre>
  3754. </example>
  3755. </body>
  3756. </setuptopic>
  3757. <setuptopic directive="AppUpdatesURL">
  3758. <body>
  3759. <p>A link to the specified URL is displayed on the "Support" dialog of the <i>Add/Remove Programs</i> Control Panel applet. The value may include constants.</p>
  3760. <example>
  3761. <pre>
  3762. AppUpdatesURL=http://www.example.com/updates.html
  3763. </pre>
  3764. </example>
  3765. </body>
  3766. </setuptopic>
  3767. <setuptopic directive="DefaultDirName">
  3768. <body>
  3769. <p>The value of this required directive is used for the default directory name, which is used in the <i>Select Destination Location</i> page of the wizard. Normally it is prefixed by a directory constant.</p>
  3770. <p>If <link topic="setup_usepreviousappdir">UsePreviousAppDir</link> is <tt>yes</tt> (the default) and Setup finds a previous version of the <link topic="sameappnotes">same application</link> is already installed, it will substitute the default directory name with the directory selected previously.</p>
  3771. <examples>
  3772. <b>If you used:</b><br/>
  3773. <pre>DefaultDirName={sd}\MYPROG</pre>
  3774. <b>In Setup, this would typically display:</b><br/>
  3775. C:\MYPROG<br/><br/>
  3776. <b>If you used:</b><br/>
  3777. <pre>DefaultDirName={autopf}\My Program</pre>
  3778. <b>In Setup, this would typically display:</b><br/>
  3779. C:\Program Files\My Program
  3780. </examples>
  3781. </body>
  3782. </setuptopic>
  3783. <setuptopic directive="Uninstallable">
  3784. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link>, or a <link topic="scriptexpression">scripted boolean expression</link></setupvalid>
  3785. <setupdefault><tt>yes</tt></setupdefault>
  3786. <body>
  3787. <p>This determines if Inno Setup's automatic uninstaller is to be included in the installation. If this is <tt>yes</tt> or to a <link topic="scriptexpression">scripted boolean expression</link> evaluating to <tt>True</tt> the uninstaller is included. Otherwise, no uninstallation support is included, requiring the end-user to manually remove the files pertaining to your application.</p>
  3788. <p>Setting this to a boolean expression can be useful if you want to offer the user a 'portable mode' option.</p>
  3789. <example><pre>[Setup]
  3790. Uninstallable=not IsTaskSelected('portablemode')
  3791. [Tasks]
  3792. Name: portablemode; Description: "Portable Mode"</pre></example>
  3793. <p><b>See also:</b><br/>
  3794. <link topic="setup_createuninstallregkey">CreateUninstallRegKey</link>
  3795. </p>
  3796. </body>
  3797. </setuptopic>
  3798. <setuptopic directive="MinVersion">
  3799. <setupformat><tt><i>major</i>.<i>minor</i></tt></setupformat>
  3800. <setupvalid><tt>6.1</tt> or higher</setupvalid>
  3801. <setupdefault><tt>6.1sp1</tt> (Windows 7 with Service Pack 1 or Windows Server 2008 R2 with Service Pack 1)</setupdefault>
  3802. <body>
  3803. <p>This directive lets you specify a minimum <link topic="winvernotes">version of Windows</link> that your software runs on. <link topic="buildnumnotes">Build numbers and/or service pack levels</link> may be included.</p>
  3804. <p>If the user's system does not meet the minimum version requirement, Setup will give an error message and exit.</p>
  3805. </body>
  3806. </setuptopic>
  3807. <setuptopic directive="OnlyBelowVersion">
  3808. <setupformat><tt><i>major</i>.<i>minor</i></tt></setupformat>
  3809. <setupvalid><tt>0</tt> or higher than <tt>6.1</tt></setupvalid>
  3810. <setupdefault><tt>0</tt></setupdefault>
  3811. <body>
  3812. <p>This directive lets you specify a minimum <link topic="winvernotes">version of Windows</link> that your software <i>will not</i> run on. Specifying <tt>0</tt> means there is no upper version limit. <link topic="buildnumnotes">Build numbers and/or service pack levels</link> may be included.</p>
  3813. <p>This directive is essentially the opposite of <link topic="setup_minversion">MinVersion</link>.</p>
  3814. </body>
  3815. </setuptopic>
  3816. <setuptopic directive="MissingMessagesWarning">
  3817. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  3818. <setupdefault><tt>yes</tt></setupdefault>
  3819. <body>
  3820. <p>This directive lets you disable warnings about messages missing for a language.</p>
  3821. <p><b>See also:</b><br/>
  3822. <link topic="setup_notrecognizedmessageswarning">NotRecognizedMessagesWarning</link>
  3823. </p>
  3824. </body>
  3825. </setuptopic>
  3826. <setuptopic directive="MissingRunOnceIdsWarning">
  3827. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  3828. <setupdefault><tt>yes</tt></setupdefault>
  3829. <body>
  3830. <p>This directive lets you disable the missing RunOnceIds warning. See <link topic="runsection" anchor="RunOnceId">RunOnceId</link> for more information.</p>
  3831. </body>
  3832. </setuptopic>
  3833. <setuptopic directive="NotRecognizedMessagesWarning">
  3834. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  3835. <setupdefault><tt>yes</tt></setupdefault>
  3836. <body>
  3837. <p>This directive lets you disable warnings about messages not recognized for a language.</p>
  3838. <p><b>See also:</b><br/>
  3839. <link topic="setup_missingmessageswarning">MissingMessagesWarning</link>
  3840. </p>
  3841. </body>
  3842. </setuptopic>
  3843. <setuptopic directive="UsedUserAreasWarning">
  3844. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  3845. <setupdefault><tt>yes</tt></setupdefault>
  3846. <body>
  3847. <p>This directive lets you disable the used user areas warning. See <link topic="admininstallmode">Non Administrative Install Mode</link> for more information.</p>
  3848. </body>
  3849. </setuptopic>
  3850. <setuptopic directive="PrivilegesRequired">
  3851. <setupvalid><tt>admin</tt>, or <tt>lowest</tt></setupvalid>
  3852. <setupdefault><tt>admin</tt></setupdefault>
  3853. <body>
  3854. <p>This directive affects whether elevated rights are requested (via a User Account Control dialog) when the installation is started.</p>
  3855. <p>When set to <tt>admin</tt> (the default), Setup will always run with administrative privileges and in <link topic="admininstallmode">administrative install mode</link>. If Setup was started by an unprivileged user, Windows will ask for the password to an account that has administrative privileges, and Setup will then run under that account.</p>
  3856. <!-- <p>When set to <tt>none</tt>, Setup will only run with administrative privileges if it was started by a member of the Administrators group. Do not use this setting unless you are sure your installation will run successfully on unprivileged accounts.</p> -->
  3857. <p>When set to <tt>lowest</tt>, Setup will not request to be run with administrative privileges even if it was started by a member of the Administrators group and will always run in <link topic="admininstallmode">non administrative install mode</link>. Do not use this setting unless you are sure your installation will run successfully on unprivileged accounts.</p>
  3858. <p><b>See also:</b><br/>
  3859. <link topic="setup_privilegesrequiredoverridesallowed">PrivilegesRequiredOverridesAllowed</link>
  3860. </p>
  3861. </body>
  3862. </setuptopic>
  3863. <setuptopic directive="PrivilegesRequiredOverridesAllowed">
  3864. <keyword value="commandline" />
  3865. <keyword value="dialog" />
  3866. <setupvalid>One or more of the following, separated by spaces: <br/><tt>commandline</tt> <br/><tt>dialog</tt></setupvalid>
  3867. <setupdefault><i>(blank)</i></setupdefault>
  3868. <body>
  3869. <p>Can be set to one or more overrides which allow the end user to override the script's default <link topic="setup_privilegesrequired">PrivilegesRequired</link> setting.</p>
  3870. <p>If override <tt>commandline</tt> is allowed then Setup will support two additional command line parameters to override the script's default <link topic="setup_privilegesrequired">PrivilegesRequired</link> setting: /ALLUSERS and /CURRENTUSER. See <link topic="setupcmdline" anchor="ALLUSERS">Setup Command Line Parameters</link> for more details.</p>
  3871. <p>If override <tt>dialog</tt> is allowed then Setup will ask the user to choose the install mode based on the script's default <link topic="setup_privilegesrequired">PrivilegesRequired</link> setting using a suppressible dialog. Allowing <tt>dialog</tt> automatically allows <tt>commandline</tt> and when one of the command line parameters is used then Setup will not ask the user.</p>
  3872. <p><b>See also:</b><br/>
  3873. <link topic="setup_usepreviousprivileges">UsePreviousPrivileges</link></p>
  3874. </body>
  3875. </setuptopic>
  3876. <setuptopic directive="DisablePrecompiledFileVerifications">
  3877. <setupvalid>One or more of the following, separated by spaces: <br/><tt>setupe32</tt> <br/><tt>setupldre32</tt> <br/><tt>is7zdll</tt> <br/><tt>isbunzipdll</tt> <br/><tt>isunzlibdll</tt> <br/><tt>islzmaexe</tt></setupvalid>
  3878. <setupdefault><i>(blank)</i></setupdefault>
  3879. <body>
  3880. <p>The compiler verifies precompiled files before using them. For certain files, you can disable verification if necessary. Use this directive to specify the list of files that should not be verified.</p>
  3881. <p><tt>islzmaexe</tt> applies to both <i>islzma32.exe</i> and <i>islzma64.exe</i>. Similarly, <tt>is7z.dll</tt> applies not only to <i>isz7.dll</i>, but also to both <i>is7zxr.dll</i> and <i>is7zxa.dll</i>.</p>
  3882. </body>
  3883. </setuptopic>
  3884. <setuptopic directive="DisableAppendDir">
  3885. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  3886. <setupdefault><tt>no</tt></setupdefault>
  3887. <body>
  3888. <p><i>Obsolete in 4.1.2.</i> Pre-4.1.2 versions of Inno Setup had a different directory selection interface, and the <tt>DisableAppendDir</tt> directive was used to control its behaviour.</p>
  3889. </body>
  3890. </setuptopic>
  3891. <setuptopic directive="EnableDirDoesntExistWarning">
  3892. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  3893. <setupdefault><tt>no</tt></setupdefault>
  3894. <body>
  3895. <p>When set to <tt>yes</tt>, Setup will display a message box if the directory the user selects doesn't exist. Usually you will also set <tt>DirExistsWarning=no</tt> when this is <tt>yes</tt>.</p>
  3896. </body>
  3897. </setuptopic>
  3898. <setuptopic directive="AlwaysCreateUninstallIcon">
  3899. <body>
  3900. <p><i>Obsolete in 3.0.</i> This directive is no longer supported. If you wish to create an Uninstall icon, use the new <tt>{uninstallexe}</tt> constant in the <tt>Filename</tt> parameter of an <link topic="iconssection">[Icons]</link> section entry.</p>
  3901. </body>
  3902. </setuptopic>
  3903. <setuptopic directive="ExtraDiskSpaceRequired">
  3904. <setupdefault><tt>0</tt></setupdefault>
  3905. <body>
  3906. <p>Normally, the disk space requirement displayed on the wizard is calculated by adding up the size of all the files in the [Files] section. If you want to increase the disk space display for whatever reason, set <tt>ExtraDiskSpaceRequired</tt> to the amount of bytes you wish to add to this figure. (1048576 bytes = 1 megabyte)</p>
  3907. <p>Supports digit separators and set in bytes. (1048576 bytes = 1 megabyte)</p>
  3908. <example><pre>[Setup]
  3909. ExtraDiskSpaceRequired=1_048_576</pre></example>
  3910. </body>
  3911. </setuptopic>
  3912. <setuptopic directive="ArchiveExtraction">
  3913. <keyword value=".7z" />
  3914. <keyword value=".zip" />
  3915. <setupvalid><tt>basic</tt><br/>
  3916. <tt>enhanced/nopassword</tt><br/>
  3917. <tt>enhanced</tt><br/>
  3918. <tt>full</tt></setupvalid>
  3919. <setupdefault><tt>basic</tt></setupdefault>
  3920. <body>
  3921. <p>This specifies the method of archive extraction used by [Files] section flag <link topic="filessection" anchor="extractarchive">extractarchive</link> and support functions <link topic="isxfunc_ExtractArchive">ExtractArchive</link> and <link topic="isxfunc_CreateExtractionPage">CreateExtractionPage</link>.</p>
  3922. <p><tt>basic</tt> uses an embedded version of the "7z ANSI-C Decoder" from the LZMA SDK by Igor Pavlov, as-is, except that Unicode support and error messages were improved and that it outputs memory requirements. It only supports .7z archives that are not password-protected.</p>
  3923. <p><tt>enhanced/nopassword</tt> internally uses 7zxr.dll from the 7-Zip source code by Igor Pavlov, as-is, except that it was recompiled, code-signed, and renamed to is7zxr.dll. Compared to <tt>basic</tt>, it has lower memory requirements for archives that contain large files but increases the size of the Setup file(s). It still only supports .7z archives that are not password-protected.</p>
  3924. <p><tt>enhanced</tt> uses 7zxa.dll instead of 7zxr.dll, recompiled, code-signed, and renamed to is7zxa.dll. It still only supports .7z archives, but they may be password-protected.</p>
  3925. <p><tt>full</tt> uses 7z.dll instead of 7zxa.dll, recompiled, code-signed, and renamed to is7z.dll. It supports multiple archive formats, although not as many as the original 7z.dll, to reduce its size. Additionally, it supports multi-volume archives.</p>
  3926. <p>The following table summarizes the differences between these methods.</p>
  3927. <indent>
  3928. <table>
  3929. <tr><td></td><td><u>Memory Requirements</u></td><td><u>Password-protected Archives</u></td><td><u>Setup Size Increase</u></td><td><u>Archive Formats</u></td></tr>
  3930. <tr><td><tt>basic</tt> (default)</td><td>High for large files*</td><td>No</td><td>0 KB</td><td>.7z</td></tr>
  3931. <tr><td><tt>enhanced/nopassword</tt></td><td>Normal</td><td>No</td><td>100 KB</td><td>.7z</td></tr>
  3932. <tr><td><tt>enhanced</tt></td><td>Normal</td><td>Yes</td><td>123 KB</td><td>.7z</td></tr>
  3933. <tr><td><tt>full</tt></td><td>Normal</td><td>Yes</td><td>458 KB</td><td>.7z, .zip, .gz, .bz2, .xz, .tar, .rar, .iso, .msi, .cab, .rpm, .vhd, .vhdx, .vdi, .vmdk, .wim, .dmg, .001</td></tr>
  3934. </table>
  3935. <p>* = When extracting a file, at least enough memory will always be allocated to hold the <b>entire</b> file, regardless of the block size. For example, extracting a 1 GB file using the <tt>basic</tt> method requires at least 1 GB of RAM. Consider using a different method for .7z archives that contain large files: their memory requirements depend on the dictionary size only.</p>
  3936. </indent>
  3937. <p>All methods overwrite read-only files which already exist in the destination directory without prompting the user.</p>
  3938. <p>All methods restore the following file properties from the archive, if available: creation time, last modified time, attributes.</p>
  3939. <p>When using the <tt>full</tt> method to extract a compressed archive, such as <i>archive.tar.gz</i>, the output will be the archive file itself (e.g., <i>archive.tar</i>) rather than the individual files contained within it.</p>
  3940. <p>The <tt>basic</tt> method has the following additional limitations, as written by Igor Pavlov in the LZMA SDK:</p>
  3941. <ul>
  3942. <li>It does not support PPMd and BZip2 methods.</li>
  3943. <li>It converts original UTF-16 Unicode file names to UTF-8 Unicode file names.</li>
  3944. <li>It decodes whole solid block from 7z archive to RAM. The RAM consumption can be high.</li>
  3945. </ul>
  3946. <p><b>See also:</b><br/>
  3947. <link topic="isxfunc_ExtractArchive">ExtractArchive</link><br/>
  3948. <link topic="isxfunc_MapArchiveExtensions">MapArchiveExtensions</link><br/>
  3949. <link topic="isxfunc_CreateExtractionPage">CreateExtractionPage</link>
  3950. </p>
  3951. </body>
  3952. </setuptopic>
  3953. <setuptopic directive="Compression">
  3954. <keyword value="zip" />
  3955. <keyword value="bzip" />
  3956. <keyword value="lzma" />
  3957. <keyword value="lzma2" />
  3958. <setupvalid><tt>zip</tt><br/>
  3959. <tt>zip/1</tt> through <tt>zip/9</tt><br/>
  3960. <tt>bzip</tt><br/>
  3961. <tt>bzip/1</tt> through <tt>bzip/9</tt><br/>
  3962. <tt>lzma</tt><br/>
  3963. <tt>lzma/fast</tt><br/>
  3964. <tt>lzma/normal</tt><br/>
  3965. <tt>lzma/max</tt><br/>
  3966. <tt>lzma/ultra</tt> &nbsp;&nbsp;(review memory requirements below before using)<br/>
  3967. <tt>lzma/ultra64</tt> &nbsp;&nbsp;(review memory requirements below before using)<br/>
  3968. <tt>lzma2</tt><br/>
  3969. <tt>lzma2/fast</tt><br/>
  3970. <tt>lzma2/normal</tt><br/>
  3971. <tt>lzma2/max</tt><br/>
  3972. <tt>lzma2/ultra</tt> &nbsp;&nbsp;(review memory requirements below before using)<br/>
  3973. <tt>lzma2/ultra64</tt> &nbsp;&nbsp;(review memory requirements below before using)<br/>
  3974. <tt>none</tt></setupvalid>
  3975. <setupdefault><tt>lzma2/max</tt></setupdefault>
  3976. <body>
  3977. <p>This specifies the method of compression to use on the files, and optionally the level of compression. Higher levels compress better but take longer doing so, and may also require more memory while compressing/decompressing.</p>
  3978. <p><tt>zip</tt> is the method of compression employed by .zip files ("deflate"). It is fast in both compression and decompression, and has very low memory requirements (less than 1 MB for both compression and decompression at level 9), but generally does not compress nearly as well as the other supported methods. <tt>zip</tt>, like <tt>lzma2</tt>, has one special property, though: it will not expand incompressible data (e.g., files that are already compressed). If a compression level isn't specified, it defaults to 7.</p>
  3979. <p><tt>bzip</tt> is the method of compression employed by the <extlink href="http://www.bzip.org/">bzip2</extlink> compressor. It almost always compresses better than <tt>zip</tt> but is usually slower in both compression and decompression. Up to 4 MB of memory is required during decompression, and up to 8 MB during compression. If a compression level isn't specified, it defaults to 9.</p>
  3980. <p><tt>lzma</tt> is the method of compression employed by the <extlink href="http://www.7-zip.org/">7-Zip LZMA</extlink> compressor. It typically compresses significantly better than the <tt>zip</tt> and <tt>bzip</tt> methods. However, depending on the compression level used, it can be significantly slower at compressing, and consume a <i>lot</i> more memory. The following table summarizes the approximate memory requirements for each of the supported <tt>lzma</tt> compression levels. If a compression level isn't specified, it defaults to <tt>max</tt>.</p>
  3981. <indent>
  3982. <table>
  3983. <tr><td></td><td><u>Decompression (dictionary size)</u></td><td><u>Compression (6 MB + 11.5 * dictionary size)</u></td></tr>
  3984. <tr><td><tt>fast</tt> (worst)</td><td>32 KB</td><td>6 MB</td></tr>
  3985. <tr><td><tt>normal</tt></td><td>2 MB</td><td>29 MB</td></tr>
  3986. <tr><td><tt>max</tt> (default)</td><td>8 MB</td><td>98 MB</td></tr>
  3987. <tr><td><tt>ultra</tt></td><td>32 MB</td><td>374 MB</td></tr>
  3988. <tr><td><tt>ultra64</tt> (best)</td><td>64 MB</td><td>742 MB</td></tr>
  3989. <tr><td></td><td>128 MB</td><td>1.44 GB</td></tr>
  3990. <tr><td></td><td>256 MB</td><td>2.88 GB</td></tr>
  3991. <tr><td></td><td>512 MB</td><td>5.76 GB</td></tr>
  3992. <tr><td></td><td>1 GB</td><td>11.51 GB</td></tr>
  3993. </table>
  3994. <p>The compression memory requirements are approximately 60% of the above when <link topic="setup_lzmamatchfinder">LZMAMatchFinder</link> is set to <tt>HC</tt> at the expense of compression ratio.</p>
  3995. </indent>
  3996. <p><tt>lzma2</tt> is the method of compression employed by the <extlink href="http://www.7-zip.org/">7-Zip LZMA2</extlink> compressor. LZMA2 is a modified version of LZMA that offers a better compression ratio for incompressible data (random data expands about 0.005%, compared to 1.35% with original LZMA), and optionally can compress multiple parts of large files in parallel, greatly increasing compression speed but with a possible reduction in compression ratio (see <link topic="setup_lzmanumblockthreads">LZMANumBlockThreads</link>). If a compression level isn't specified, it defaults to <tt>max</tt>. Like LZMA, LZMA2 can consume a <i>lot</i> of memory; see the above table. Do note: LZMA2 only supports a limited number of dictionary sizes and other sizes will be rounded up to the next supported size. Supported sizes are powers of two starting at 4 (4, 8, 16, 32, etc., up to 1048576) and the midway points between them (6, 12, 24, etc., up to 786432). For instance, a dictionary size of 524289 (512 MB + 1 byte) has the same memory requirements as one of 786432 (768 MB).</p>
  3997. <p><tt>none</tt> specifies that no compression be used.</p>
  3998. <p><b>See also:</b><br/>
  3999. <link topic="setup_solidcompression">SolidCompression</link><br/>
  4000. <link topic="setup_lzmaalgorithm">LZMAAlgorithm</link><br/>
  4001. <link topic="setup_lzmablocksize">LZMABlockSize</link><br/>
  4002. <link topic="setup_lzmadictionarysize">LZMADictionarySize</link><br/>
  4003. <link topic="setup_lzmamatchfinder">LZMAMatchFinder</link><br/>
  4004. <link topic="setup_lzmanumblockthreads">LZMANumBlockThreads</link><br/>
  4005. <link topic="setup_lzmanumfastbytes">LZMANumFastBytes</link><br/>
  4006. <link topic="setup_lzmauseseparateprocess">LZMAUseSeparateProcess</link>
  4007. </p>
  4008. </body>
  4009. </setuptopic>
  4010. <setuptopic directive="CompressionThreads">
  4011. <keyword value="threads" />
  4012. <keyword value="multi-threading" />
  4013. <setupvalid><tt>auto</tt><br/>
  4014. <tt>1</tt><br />
  4015. <tt>2</tt> (or higher)</setupvalid>
  4016. <setupdefault><tt>auto</tt></setupdefault>
  4017. <body>
  4018. <p>Controls whether the multi-threaded match finder is enabled on the LZMA and LZMA2 compressors. Enabling the multi-threaded match finder can speed up the compression process by 50% or more on systems with multiple processor cores, and 20% or more on systems with Intel processors featuring Hyper-Threading Technology.</p>
  4019. <p>A value of <tt>auto</tt> (the default) enables the multi-threaded match finder for all compression levels except <tt>fast</tt>, which doesn't support it.</p>
  4020. <p>A value of <tt>1</tt> always disables the multi-threaded match finder.</p>
  4021. <p>Values of <tt>2</tt> or higher are currently equivalent to <tt>auto</tt>.</p>
  4022. <p>Note that for the LZMA2 compressor, this directive only controls whether the multi-threaded match finder is used. To enable support for compressing multiple parts of large files in parallel, set <link topic="setup_lzmanumblockthreads">LZMANumBlockThreads</link>.</p>
  4023. <p><b>See also:</b><br/>
  4024. <link topic="setup_lzmanumblockthreads">LZMANumBlockThreads</link></p></body>
  4025. </setuptopic>
  4026. <setuptopic directive="SolidCompression">
  4027. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4028. <setupdefault><tt>no</tt></setupdefault>
  4029. <body>
  4030. <p>If <tt>yes</tt>, solid compression will be enabled. This causes all files to be compressed at once instead of separately. This can result in a much greater overall compression ratio if your installation contains many files with common content, such as text files, especially if such common content files are grouped together within the [Files] section.</p>
  4031. <p>The disadvantage to using solid compression is that because all files are compressed into a single compressed stream, Setup can no longer randomly access the files. This can decrease performance. If a certain file isn't going to be extracted on the user's system, it has to decompress the data for that file anyway (into memory) before it can decompress the next file. And if, for example, there was an error while extracting a particular file and the user clicks Retry, it can't just seek to the beginning of that file's compressed data; since all files are stored in one stream, it has seek to the very beginning. If disk spanning was enabled, the user would have to re-insert disk 1.</p>
  4032. </body>
  4033. </setuptopic>
  4034. <setuptopic directive="InternalCompressLevel">
  4035. <setupvalid><tt>none</tt>, or one of the <link topic="setup_compression">LZMA compression levels</link></setupvalid>
  4036. <setupdefault><tt>normal</tt></setupdefault>
  4037. <body>
  4038. <p>This specifies the level of LZMA compression to use on Setup's internal structures. Generally, there is little reason to change this from the default setting of <tt>normal</tt>.</p>
  4039. </body>
  4040. </setuptopic>
  4041. <setuptopic directive="CreateAppDir">
  4042. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4043. <setupdefault><tt>yes</tt></setupdefault>
  4044. <body>
  4045. <p>If this is set to <tt>no</tt>, no directory for the application will be created, the <i>Select Destination Location</i> wizard page will not be displayed, and the {app} directory constant is equivalent to the {win} directory constant. If the uninstall feature is enabled when <tt>CreateAppDir</tt> is <tt>no</tt>, the uninstall data files are created in the system's Windows directory.</p>
  4046. </body>
  4047. </setuptopic>
  4048. <setuptopic directive="CreateUninstallRegKey">
  4049. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link>, or a <link topic="scriptexpression">scripted boolean expression</link></setupvalid>
  4050. <setupdefault><tt>yes</tt></setupdefault>
  4051. <body>
  4052. <p>If this is set to <tt>no</tt> or to a <link topic="scriptexpression">scripted boolean expression</link> evaluating to <tt>False</tt>, Setup won't create an entry in the <i>Add/Remove Programs</i> Control Panel applet.</p>
  4053. <p>Setting this to <tt>no</tt> can be useful if your installation is merely an update to an existing application and you don't want another entry created, but don't want to the disable the uninstall features entirely (via <tt>Uninstallable=no</tt>). In this case, <link topic="setup_updateuninstalllogappname">UpdateUninstallLogAppName</link> is usually set to <tt>no</tt> as well.</p>
  4054. <p><b>See also:</b><br/>
  4055. <link topic="setup_uninstallable">Uninstallable</link>
  4056. </p>
  4057. </body>
  4058. </setuptopic>
  4059. <setuptopic directive="DirExistsWarning">
  4060. <setupvalid><tt>auto</tt>, <link topic="yesnonotes"><tt>yes</tt>, or <tt>no</tt></link></setupvalid>
  4061. <setupdefault><tt>auto</tt></setupdefault>
  4062. <body>
  4063. <p>When set to <tt>auto</tt>, the default setting, Setup will show a "The directory ... already exists. Would you like to install to that directory anyway?" message if the user selects a directory that already exists on the <i>Select Destination Location</i> wizard page, except when another version of the <link topic="sameappnotes">same application</link> is already installed and the selected directory is the same as the previous one (only if <tt>UsePreviousAppDir</tt> is <tt>yes</tt>, the default setting).</p>
  4064. <p>When set to <tt>yes</tt>, Setup will always display the "Directory Exists" message when the user selects an existing directory.</p>
  4065. <p>When set to <tt>no</tt>, Setup will never display the "Directory Exists" message.</p>
  4066. </body>
  4067. </setuptopic>
  4068. <setuptopic directive="DisableDirPage">
  4069. <setupvalid><tt>auto</tt>, <link topic="yesnonotes"><tt>yes</tt>, or <tt>no</tt></link></setupvalid>
  4070. <setupdefault><tt>auto</tt></setupdefault>
  4071. <body>
  4072. <p>If this is set to <tt>yes</tt>, Setup will not show the <i>Select Destination Location</i> wizard page.</p>
  4073. <p>If this is set to <tt>auto</tt>, at startup Setup will look in the registry to see if the <link topic="sameappnotes">same application</link> is already installed, and if so, it will not show the <i>Select Destination Location</i> wizard page.</p>
  4074. <p>If the <i>Select Destination Location</i> wizard page is not shown, it will always use the default directory name.</p>
  4075. <p>Also see <link topic="setup_alwaysshowdironreadypage">AlwaysShowDirOnReadyPage</link>.</p>
  4076. </body>
  4077. </setuptopic>
  4078. <setuptopic directive="DisableFinishedPage">
  4079. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4080. <setupdefault><tt>no</tt></setupdefault>
  4081. <body>
  4082. <p>If this is set to <tt>yes</tt>, Setup will not show the <i>Setup Completed</i> wizard page, and instead will immediately close the Setup program once the installation process finishes. This may be useful if you execute a program in the [Run] section using the <tt>nowait</tt> flag, and don't want the <i>Setup Completed</i> window to remain in the background after the other program has started.</p>
  4083. <p>Note that the <tt>DisableFinishedPage</tt> directive is ignored if a restart of the computer is deemed necessary, or if a file is assigned to the <tt>InfoAfterFile</tt> <tt>[Setup]</tt> section directive. In those cases, the <i>Setup Completed</i> wizard page will still be displayed.</p>
  4084. </body>
  4085. </setuptopic>
  4086. <setuptopic directive="DisableProgramGroupPage">
  4087. <setupvalid><tt>auto</tt>, <link topic="yesnonotes"><tt>yes</tt>, or <tt>no</tt></link></setupvalid>
  4088. <setupdefault><tt>auto</tt></setupdefault>
  4089. <body>
  4090. <p>If this is set to <tt>yes</tt>, Setup will not show the <i>Select Start Menu Folder</i> wizard page.</p>
  4091. <p>If this is set to <tt>auto</tt>, at startup Setup will look in the registry to see if the <link topic="sameappnotes">same application</link> is already installed, and if so, it will not show the <i>Select Start Menu Folder</i> wizard page.</p>
  4092. <p>If the <i>Select Start Menu Folder</i> wizard page is not shown, it will always use the default Start Menu folder name.</p>
  4093. <p>Also see <link topic="setup_alwaysshowgrouponreadypage">AlwaysShowGroupOnReadyPage</link>.</p>
  4094. </body>
  4095. </setuptopic>
  4096. <setuptopic directive="DisableReadyMemo">
  4097. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4098. <setupdefault><tt>no</tt></setupdefault>
  4099. <body>
  4100. <p>If this is set to <tt>yes</tt>, Setup will not show a list of settings on the <i>Ready to Install</i> wizard page. Otherwise the list is shown and contains information like the chosen setup type and the chosen components.</p>
  4101. </body>
  4102. </setuptopic>
  4103. <setuptopic directive="DisableReadyPage">
  4104. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4105. <setupdefault><tt>no</tt></setupdefault>
  4106. <body>
  4107. <p>If this is set to <tt>yes</tt>, Setup will not show the <i>Ready to Install</i> wizard page.</p>
  4108. <p>When Setup is not running silently, this directive is ignored if no other wizard page before the <i>Ready to Install</i> wizard page has been shown yet.</p>
  4109. <p>Setting this to <tt>yes</tt> does not automatically change the caption of the <i>Next</i> button on the new last pre-installation wizard page to <i>Install</i>. You must do so manually instead. For example, if the new last pre-installation wizard page is the <i>Select Program Group</i> page:</p>
  4110. <example><pre>[Setup]
  4111. DisableReadyPage=yes
  4112. [Code]
  4113. procedure CurPageChanged(CurPageID: Integer);
  4114. begin
  4115. if CurPageID in [wpSelectProgramGroup, wpReady] then
  4116. WizardForm.NextButton.Caption := SetupMessage(msgButtonInstall)
  4117. else if CurPageID = wpFinished then
  4118. WizardForm.NextButton.Caption := SetupMessage(msgButtonFinish)
  4119. else
  4120. WizardForm.NextButton.Caption := SetupMessage(msgButtonNext);
  4121. end;</pre></example>
  4122. </body>
  4123. </setuptopic>
  4124. <setuptopic directive="DisableWelcomePage">
  4125. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4126. <setupdefault><tt>yes</tt></setupdefault>
  4127. <body>
  4128. <p>If this is set to <tt>yes</tt>, Setup will not show the <i>Welcome</i> wizard page.</p>
  4129. </body>
  4130. </setuptopic>
  4131. <setuptopic directive="UserInfoPage">
  4132. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4133. <setupdefault><tt>no</tt></setupdefault>
  4134. <body>
  4135. <p>If this is set to <tt>yes</tt>, Setup will show a <i>User Information</i> wizard page which asks for the user's name, organization and possibly a serial number. The values the user enters are stored in the <tt>{userinfoname}</tt>, <tt>{userinfoorg}</tt> and <tt>{userinfoserial}</tt> constants. You can use these constants in [Registry] or [INI] entries to save their values for later use.</p>
  4136. <p>For the serial number field to appear, a <link topic="scriptevents" anchor="CheckSerial">CheckSerial</link> event function must be present.</p>
  4137. <p>The <link topic="setup_defaultuserinfoname">DefaultUserInfoName</link>, <link topic="setup_defaultuserinfoorg">DefaultUserInfoOrg</link> and <link topic="setup_defaultuserinfoserial">DefaultUserInfoSerial</link> directives determine the default name, organization and serial number shown. If <link topic="setup_useprevioususerinfo">UsePreviousUserInfo</link> is <tt>yes</tt> (the default) and Setup finds that a previous version of the <link topic="sameappnotes">same application</link> is already installed, it will use the name, organization and serial number entered previously instead.</p>
  4138. <p>On silent installs, the default user name, organization, and serial number values will be assumed. Setup will not check whether the user name is blank (since the user has no way of correcting it), however it will still check the serial number.</p>
  4139. </body>
  4140. </setuptopic>
  4141. <setuptopic directive="DefaultUserInfoName">
  4142. <setupdefault><tt>{sysuserinfoname}</tt></setupdefault>
  4143. <body>
  4144. <p>Specifies the default name shown on the <i>User Information</i> wizard page. This can include constants.</p>
  4145. </body>
  4146. </setuptopic>
  4147. <setuptopic directive="DefaultUserInfoOrg">
  4148. <setupdefault><tt>{sysuserinfoorg}</tt></setupdefault>
  4149. <body>
  4150. <p>Specifies the default organization shown on the <i>User Information</i> wizard page. This can include constants.</p>
  4151. </body>
  4152. </setuptopic>
  4153. <setuptopic directive="DefaultUserInfoSerial">
  4154. <body>
  4155. <p>Specifies the default serial number shown on the <i>User Information</i> wizard page. This can include constants.</p>
  4156. </body>
  4157. </setuptopic>
  4158. <setuptopic directive="AlwaysUsePersonalGroup">
  4159. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4160. <setupdefault><tt>no</tt></setupdefault>
  4161. <body>
  4162. <p>Normally, Inno Setup's <tt>{group}</tt> constant points to the All Users start menu if the user has administrative privileges. If this directive is set to <tt>yes</tt>, it always uses current user's profile.</p>
  4163. <p>You should be careful about using this option: it may not achieve what you are intending. The compiler will warn you about this, which can be disabled using <link topic="setup_useduserareaswarning">UsedUserAreasWarning</link>.</p>
  4164. </body>
  4165. </setuptopic>
  4166. <setuptopic directive="Output">
  4167. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4168. <setupdefault><tt>yes</tt></setupdefault>
  4169. <body>
  4170. <p>If set to <tt>no</tt> the compiler will only check the script for errors and skip creating setup files. Note: it will still clean the output directory and delete the manifest file, unless <tt>OutputDir</tt> and <tt>OutputManifestFile</tt> are set to an empty string.</p>
  4171. </body>
  4172. </setuptopic>
  4173. <setuptopic directive="OutputBaseFilename">
  4174. <setupdefault><tt>mysetup</tt></setupdefault>
  4175. <body>
  4176. <p>This directive allows you to assign a different name for the resulting Setup file(s), so you don't have to manually rename them after running the compiler.</p>
  4177. <p>Setting this to <tt>setup</tt> is not recommended: all executables named "setup.exe" are shimmed by Windows application compatibility to load additional DLLs, such as version.dll. These DLLs are loaded unsafely by Windows and can be hijacked.</p>
  4178. <example><pre>OutputBaseFilename=MyProg100</pre></example>
  4179. </body>
  4180. </setuptopic>
  4181. <setuptopic directive="UninstallFilesDir">
  4182. <setupdefault><tt>{app}</tt></setupdefault>
  4183. <body>
  4184. <p>Specifies the directory where the "unins*.*" files for the uninstaller are stored.</p>
  4185. <p><i>Note:</i> You should not assign a different value here on a new version of an application, or else Setup won't find the uninstall logs from the previous versions and therefore won't be able to <link topic="appendnotes">append to</link> them.</p>
  4186. <example><pre>UninstallFilesDir={app}\uninst</pre></example>
  4187. </body>
  4188. </setuptopic>
  4189. <setuptopic directive="UninstallDisplayIcon">
  4190. <body>
  4191. <p>This lets you specify a particular icon file (either an executable or an .ico file) to display for the Uninstall entry in the <i>Add/Remove Programs</i> Control Panel applet. The filename will normally begin with a directory constant.</p>
  4192. <p>If the file you specify contains multiple icons, you may append the suffix ",<i>n</i>" to specify an icon index, where <i>n</i> is the zero-based numeric index.</p>
  4193. <p>If this directive is not specified or is blank, Windows will select an icon itself, which may not be the one you prefer.</p>
  4194. <examples>
  4195. <pre>
  4196. UninstallDisplayIcon={app}\MyProg.exe
  4197. UninstallDisplayIcon={app}\MyProg.exe,1
  4198. </pre>
  4199. </examples>
  4200. </body>
  4201. </setuptopic>
  4202. <setuptopic directive="UninstallDisplayName">
  4203. <body>
  4204. <p>This lets you specify a custom name for the program's entry in the <i>Add/Remove Programs</i> Control Panel applet. The value may include constants. If this directive is not specified or is blank, Setup will use the value of <tt>[Setup]</tt> section directive <tt>AppVerName</tt> for the name.</p>
  4205. <example><pre>UninstallDisplayName=My Program</pre></example>
  4206. <p><b>See also:</b><br/>
  4207. <link topic="sidebyside">Side-by-side installation</link></p>
  4208. </body>
  4209. </setuptopic>
  4210. <setuptopic directive="UninstallDisplaySize">
  4211. <body>
  4212. <p>On Windows 7 and later, Setup uses this directive to set the <tt>EstimatedSize</tt> value in the Uninstall registry key when possible since the Windows 7 <i>Add/Remove Programs</i> Control Panel (called <i>Program and Features</i>) no longer automatically calculates it. If an <tt>UninstallDisplaySize</tt> is not set, Setup estimates the size itself by taking the size of all files installed and adding any <tt>ExtraDiskSpaceRequired</tt> values set. Note: Windows 7 without any service pack only supports the display of values smaller than 4 GB.</p>
  4213. <p>Supports digit separators and set in bytes. (1048576 bytes = 1 megabyte)</p>
  4214. <example><pre>UninstallDisplaySize=1_073_741_824</pre></example>
  4215. </body>
  4216. </setuptopic>
  4217. <setuptopic directive="UninstallIconName">
  4218. <body>
  4219. <p><i>Obsolete in 3.0.</i> This directive is no longer supported. If you wish to create an Uninstall icon, use the new <tt>{uninstallexe}</tt> constant in the <tt>Filename</tt> parameter of an <link topic="iconssection">[Icons]</link> section entry.</p>
  4220. </body>
  4221. </setuptopic>
  4222. <setuptopic directive="UninstallLogging">
  4223. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4224. <setupdefault><tt>no</tt></setupdefault>
  4225. <body>
  4226. <p>If set to <tt>yes</tt>, the uninstaller will always create a log file if it is launched from the <i>Add/Remove Programs</i> Control Panel applet. Equivalent to passing <link topic="uninstcmdline" anchor="LOG">/LOG</link> on the command line.</p>
  4227. <p>This directive has no effect if <tt>CreateUninstallRegKey</tt> is not set to <tt>yes</tt>.</p>
  4228. <p><b>See also:</b><br/>
  4229. <link topic="setup_setuplogging">SetupLogging</link></p>
  4230. </body>
  4231. </setuptopic>
  4232. <setuptopic directive="UninstallLogMode">
  4233. <setupvalid><tt>append</tt>, <tt>new</tt>, or <tt>overwrite</tt></setupvalid>
  4234. <setupdefault><tt>append</tt></setupdefault>
  4235. <body>
  4236. <p><tt>append</tt>, the default setting, instructs Setup to <link topic="appendnotes">append to an existing uninstall log</link> when possible.</p>
  4237. <p><tt>new</tt>, which corresponds to the behavior in pre-1.3 versions of Inno Setup, instructs Setup to always create a new uninstall log.</p>
  4238. <p><tt>overwrite</tt> instructs Setup to overwrite any existing uninstall logs from the <link topic="sameappnotes">same application</link> instead of appending to them (this is <i>not</i> recommended). The same rules for appending to existing logs apply to overwriting existing logs.</p>
  4239. <example><pre>UninstallLogMode=append</pre></example>
  4240. </body>
  4241. </setuptopic>
  4242. <setuptopic directive="UninstallRestartComputer">
  4243. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4244. <setupdefault><tt>no</tt></setupdefault>
  4245. <body>
  4246. <p>When set to <tt>yes</tt>, the uninstaller will always prompt the user to restart the system at the end of a successful uninstallation, regardless of whether it is necessary (e.g., because of <tt>[Files]</tt> section entries with the <tt>uninsrestartdelete</tt> flag).</p>
  4247. </body>
  4248. </setuptopic>
  4249. <setuptopic directive="UpdateUninstallLogAppName">
  4250. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4251. <setupdefault><tt>yes</tt></setupdefault>
  4252. <body>
  4253. <p>If <tt>yes</tt>, when appending to an existing uninstall log, Setup will replace the <tt>AppName</tt> field in the log with the current installation's <tt>AppName</tt>. The <tt>AppName</tt> field of the uninstall log determines the title displayed in the uninstaller. You may want to set this to <tt>no</tt> if your installation is merely an upgrade or add-on to an existing program, and you don't want the title of the uninstaller changed.</p>
  4254. </body>
  4255. </setuptopic>
  4256. <setuptopic directive="DefaultGroupName">
  4257. <body>
  4258. <p>The value of this directive is used for the default Start Menu folder name on the <i>Select Start Menu Folder</i> page of the wizard. If this directive is blank or isn't specified, it will use "(Default)" for the name.</p>
  4259. <p>Keep in mind that Start Menu folders are stored as literal directories so any characters not allowed in normal directory names can't be used in Start Menu folder names.</p>
  4260. <example><pre>DefaultGroupName=My Program</pre></example>
  4261. </body>
  4262. </setuptopic>
  4263. <setuptopic directive="DisableStartupPrompt">
  4264. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4265. <setupdefault><tt>yes</tt></setupdefault>
  4266. <body>
  4267. <p>When this is set to <tt>yes</tt>, Setup will not show the <i>This will install... Do you wish to continue?</i> prompt.</p>
  4268. <p>This setting has no effect if <tt>UseSetupLdr</tt> is set to <tt>no</tt>.</p>
  4269. </body>
  4270. </setuptopic>
  4271. <setuptopic directive="DiskSpanning">
  4272. <keyword value="disk spanning" />
  4273. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4274. <setupdefault><tt>no</tt></setupdefault>
  4275. <body>
  4276. <p>If set to <tt>yes</tt>, the disk spanning feature will be enabled. Instead of storing all the compressed file data inside SETUP.EXE, the compiler will split it into multiple SETUP-*.BIN files -- known as "slices" -- suitable for copying onto separate floppy disks, CD-ROMs, or DVD-ROMs. Each generated slice contains a number in its name which indicates the disk onto which it should be copied. (For example, SETUP-2.BIN should be placed on disk 2.) The generated SETUP.EXE always goes on disk 1 along with the SETUP-1*.BIN file.</p>
  4277. <p>The size of each slice and the number of slices to create for each disk are determined by the values of the <link topic="setup_diskslicesize">DiskSliceSize</link> and <link topic="setup_slicesperdisk">SlicesPerDisk</link> <tt>[Setup]</tt> section directives, respectively. Other disk spanning-related directives that you may want to tweak include <link topic="setup_diskclustersize">DiskClusterSize</link> and <link topic="setup_reservebytes">ReserveBytes</link>.</p>
  4278. <p>Note that it is required that you set this directive to <tt>yes</tt> if the compressed size of your installation exceeds 2,100,000,000 bytes, even if you don't intend to place the installation onto multiple disks. (The installation will still function correctly if all the SETUP-*.BIN files are placed on the same disk.)</p>
  4279. </body>
  4280. </setuptopic>
  4281. <setuptopic directive="DiskSliceSize">
  4282. <setupvalid><tt>262144</tt> through <tt>2100000000</tt>, or <tt>max</tt></setupvalid>
  4283. <setupdefault><tt>max</tt> (2100000000)</setupdefault>
  4284. <body>
  4285. <p>This specifies the maximum number of bytes per disk slice (SETUP-*.BIN file). Normally, this should be set to the total number of bytes available on the disk media divided by the value of the <tt>SlicesPerDisk</tt> <tt>[Setup]</tt> section directive, which defaults to 1.</p>
  4286. <p>This directive is ignored if disk spanning is not enabled using the <tt>DiskSpanning</tt> <tt>[Setup]</tt> section directive.</p>
  4287. <p>To optimally fill 4.7 GB recordable DVDs, use:</p>
  4288. <precode>
  4289. SlicesPerDisk=3
  4290. DiskSliceSize=1566000000
  4291. </precode>
  4292. <p>To optimally fill 8.5 GB (dual-layer) recordable DVDs, use:</p>
  4293. <precode>
  4294. SlicesPerDisk=5
  4295. DiskSliceSize=1708200000
  4296. </precode>
  4297. <p>To optimally fill 700 MB (80-minute) recordable CDs, use:</p>
  4298. <precode>
  4299. SlicesPerDisk=1
  4300. DiskSliceSize=736000000
  4301. </precode>
  4302. <p>To optimally fill 1.44MB floppy disks, use:</p>
  4303. <precode>
  4304. SlicesPerDisk=1
  4305. DiskSliceSize=1457664
  4306. </precode>
  4307. </body>
  4308. </setuptopic>
  4309. <setuptopic directive="DiskClusterSize">
  4310. <setupdefault><tt>512</tt> (the standard cluster size for floppy disks)</setupdefault>
  4311. <body>
  4312. <p>This specifies the cluster size of the disk media. The compiler needs to know this in order to properly fill each disk to capacity.</p>
  4313. <p>This directive is ignored if disk spanning is not enabled using the <tt>DiskSpanning</tt> <tt>[Setup]</tt> section directive.</p>
  4314. </body>
  4315. </setuptopic>
  4316. <setuptopic directive="SlicesPerDisk">
  4317. <setupvalid><tt>1</tt> through <tt>26</tt></setupvalid>
  4318. <setupdefault><tt>1</tt></setupdefault>
  4319. <body>
  4320. <p>The number of SETUP-*.BIN files to create for each disk. If this is 1 (the default setting), the files will be named SETUP-<i>x</i>.BIN, where <i>x</i> is the disk number. If this is greater than 1, the files will be named SETUP-<i>xy</i>.BIN, where <i>x</i> is the disk number and <i>y</i> is a unique letter.</p>
  4321. <p>One reason why you may need to increase this from the default value of 1 is if the size of your disk media exceeds 2,100,000,000 bytes -- the upper limit of the <tt>DiskSliceSize</tt> <tt>[Setup]</tt> section directive. If, for example, your disk media has a capacity of 3,000,000,000 bytes, you can avoid the 2,100,000,000-byte disk slice size limit by setting <tt>SlicesPerDisk</tt> to <tt>2</tt> and <tt>DiskSliceSize</tt> to <tt>1500000000</tt> (or perhaps slightly less, due to file system overhead).</p>
  4322. </body>
  4323. </setuptopic>
  4324. <setuptopic directive="ReserveBytes">
  4325. <setupdefault><tt>0</tt></setupdefault>
  4326. <body>
  4327. <p>This specifies the minimum number of free bytes to reserve on the first disk. This is useful if you have to copy other files onto the first disk that aren't part of the setup program, such as a Readme file.</p>
  4328. <p>The compiler rounds this number up to the nearest cluster.</p>
  4329. <p>This directive is ignored if disk spanning is not enabled using the <tt>DiskSpanning</tt> <tt>[Setup]</tt> section directive.</p>
  4330. </body>
  4331. </setuptopic>
  4332. <setuptopic directive="MergeDuplicateFiles">
  4333. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4334. <setupdefault><tt>yes</tt></setupdefault>
  4335. <body>
  4336. <p>Normally two file entries referring to the same source file will be compressed and stored only once. If you have a bunch of identical files in your installation, make them point to the same source file in the script, and the size of your installation can drop significantly. If you wish to disable this feature for some reason, set this directive to <tt>no</tt>.</p>
  4337. </body>
  4338. </setuptopic>
  4339. <setuptopic directive="DontMergeDuplicateFiles">
  4340. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4341. <body>
  4342. <p><i>Obsolete in 4.2.5.</i> Use <link topic="setup_mergeduplicatefiles">MergeDuplicateFiles</link> instead.</p>
  4343. <p><tt>MergeDuplicateFiles=no</tt> is equivalent to <tt>DontMergeDuplicateFiles=yes</tt>.</p>
  4344. </body>
  4345. </setuptopic>
  4346. <setuptopic directive="AllowCancelDuringInstall">
  4347. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4348. <setupdefault><tt>yes</tt></setupdefault>
  4349. <body>
  4350. <p>Setting this to <tt>no</tt> prevents the user from cancelling during the actual installation process, by disabling the Cancel button and ignoring clicks on the close button. This has the same effect as passing /NOCANCEL to Setup on the command line.</p>
  4351. </body>
  4352. </setuptopic>
  4353. <setuptopic directive="AllowNoIcons">
  4354. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4355. <setupdefault><tt>no</tt></setupdefault>
  4356. <body>
  4357. <p>When set to <tt>yes</tt>, Setup will display a <i>Don't create a Start Menu folder</i> check box on the <i>Select Start Menu Folder</i> wizard page, which allows the user to skip creation of program shortcuts on the Start Menu.</p>
  4358. <p>Only [Icons] entries that have a <tt>Name</tt> parameter starting with <tt>{group}\</tt> and no <tt>Tasks</tt> parameter are affected by default. To force the check box to have an effect on a particular [Icons] entry, add a <tt>Check: not <link topic="isxfunc_WizardNoIcons">WizardNoIcons</link></tt> parameter.</p>
  4359. </body>
  4360. </setuptopic>
  4361. <setuptopic directive="AllowRootDirectory">
  4362. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4363. <setupdefault><tt>no</tt></setupdefault>
  4364. <body>
  4365. <p>When set to <tt>no</tt>, the default, the user will not be allowed to enter a root directory (such as "C:\") on the <i>Select Destination Location</i> page of the wizard.</p>
  4366. </body>
  4367. </setuptopic>
  4368. <setuptopic directive="AllowUNCPath">
  4369. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4370. <setupdefault><tt>yes</tt></setupdefault>
  4371. <body>
  4372. <p>If set to <tt>no</tt>, the user will not be allowed to enter a UNC path (such as "\\server\share") on the <i>Select Destination Location</i> page of the wizard.</p>
  4373. <p>To fully disallow installation to network locations, you must also set <link topic="setup_allownetworkdrive">AllowNetworkDrive</link> to <tt>no</tt>.</p>
  4374. </body>
  4375. </setuptopic>
  4376. <setuptopic directive="AllowNetworkDrive">
  4377. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4378. <setupdefault><tt>yes</tt></setupdefault>
  4379. <body>
  4380. <p>If set to <tt>no</tt>, the user will not be allowed to enter a network drive on the <i>Select Destination Location</i> page of the wizard.</p>
  4381. <p>To fully disallow installation to network locations, you must also set <link topic="setup_allowuncpath">AllowUNCPath</link> to <tt>no</tt>.</p>
  4382. </body>
  4383. </setuptopic>
  4384. <setuptopic directive="AlwaysRestart">
  4385. <keyword value="restart" />
  4386. <keyword value="reboot" />
  4387. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4388. <setupdefault><tt>no</tt></setupdefault>
  4389. <body>
  4390. <p>When set to <tt>yes</tt>, Setup will always prompt the user to restart the system at the end of a successful installation, regardless of whether this is necessary (for example, because of <tt>[Files]</tt> section entries with the <tt>restartreplace</tt> flag).</p>
  4391. </body>
  4392. </setuptopic>
  4393. <setuptopic directive="RestartIfNeededByRun">
  4394. <keyword value="restart" />
  4395. <keyword value="reboot" />
  4396. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4397. <setupdefault><tt>yes</tt></setupdefault>
  4398. <body>
  4399. <p>When set to <tt>yes</tt>, and a program executed in the [Run] section queues files to be replaced on the next reboot (by calling MoveFileEx or by modifying wininit.ini), Setup will detect this and prompt the user to restart the computer at the end of installation.</p>
  4400. </body>
  4401. </setuptopic>
  4402. <setuptopic directive="MessagesFile">
  4403. <body>
  4404. <p><i>Obsolete in 4.0.</i> This directive is no longer supported. Use the new <link topic="languagessection">[Languages] section</link> to specify a custom messages file.</p>
  4405. </body>
  4406. </setuptopic>
  4407. <setuptopic directive="LicenseFile">
  4408. <body>
  4409. <p>Specifies the name of an optional license agreement file, in .txt or .rtf (rich text) format, which is displayed before the user selects the destination directory for the program. This file must be located in your installation's <link topic="sourcedirectorynotes">source directory</link> when running the compiler, unless a fully qualified pathname is specified or the pathname is prefixed by "compiler:", in which case it looks for the file in the compiler directory.</p>
  4410. <p>If the user selects a language for which the <tt>LicenseFile</tt> parameter is set, this directive is effectively ignored. See the <link topic="languagessection">[Languages] section</link> documentation for more information.</p>
  4411. <p>If an Unicode .txt file is used, it must be UTF-8 (with or without a BOM) or UTF-16LE encoded.</p>
  4412. <example><pre>LicenseFile=license.txt</pre></example>
  4413. </body>
  4414. </setuptopic>
  4415. <setuptopic directive="InfoBeforeFile">
  4416. <body>
  4417. <p>Specifies the name of an optional "readme" file, in .txt or .rtf (rich text) format, which is displayed before the user selects the destination directory for the program. This file must be located in your installation's <link topic="sourcedirectorynotes">source directory</link> when running the compiler, unless a fully qualified pathname is specified or the pathname is prefixed by "compiler:", in which case it looks for the file in the compiler directory.</p>
  4418. <p>If the user selects a language for which the <tt>InfoBeforeFile</tt> parameter is set, this directive is effectively ignored. See the <link topic="languagessection">[Languages] section</link> documentation for more information.</p>
  4419. <p>If an Unicode .txt file is used, it must be UTF-8 (with or without a BOM) or UTF-16LE encoded.</p>
  4420. <example><pre>InfoBeforeFile=infobefore.txt</pre></example>
  4421. </body>
  4422. </setuptopic>
  4423. <setuptopic directive="InfoAfterFile">
  4424. <body>
  4425. <p>Specifies the name of an optional "readme" file, in .txt or .rtf (rich text) format, which is displayed after a successful install. This file must be located in your installation's <link topic="sourcedirectorynotes">source directory</link> when running the compiler, unless a fully qualified pathname is specified or the pathname is prefixed by "compiler:", in which case it looks for the file in the compiler directory.</p>
  4426. <p>This differs from <tt>isreadme</tt> files in that this text is displayed as a page of the wizard, instead of in a separate Notepad window.</p>
  4427. <p>If the user selects a language for which the <tt>InfoAfterFile</tt> parameter is set, this directive is effectively ignored. See the <link topic="languagessection">[Languages] section</link> documentation for more information.</p>
  4428. <p>If an Unicode .txt file is used, it must be UTF-8 (with or without a BOM) or UTF-16LE encoded.</p>
  4429. <example><pre>InfoAfterFile=infoafter.txt</pre></example>
  4430. </body>
  4431. </setuptopic>
  4432. <setuptopic directive="ChangesAssociations">
  4433. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link>, or a <link topic="scriptexpression">scripted boolean expression</link></setupvalid>
  4434. <setupdefault><tt>no</tt></setupdefault>
  4435. <body>
  4436. <p>When set to <tt>yes</tt> or to a <link topic="scriptexpression">scripted boolean expression</link> evaluating to <tt>True</tt>, Setup will tell Explorer to refresh its file associations information at the end of the installation, and Uninstall will do the same at the end of uninstallation.</p>
  4437. <p>If your installation creates a file association but doesn't have <tt>ChangesAssociations</tt> set to <tt>yes</tt>, the correct icon for the file type likely won't be displayed until the user logs off or restarts the computer.</p>
  4438. </body>
  4439. </setuptopic>
  4440. <setuptopic directive="ChangesEnvironment">
  4441. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link>, or a <link topic="scriptexpression">scripted boolean expression</link></setupvalid>
  4442. <setupdefault><tt>no</tt></setupdefault>
  4443. <body>
  4444. <p>When set to <tt>yes</tt> or to a <link topic="scriptexpression">scripted boolean expression</link> evaluating to <tt>True</tt>, at the end of the installation Setup will notify other running applications (notably Windows Explorer) that they should reload their environment variables from the registry.</p>
  4445. <p>If your installation creates or changes an environment variable but doesn't have <tt>ChangesEnvironment</tt> set to <tt>yes</tt>, the new/changed environment variable will not be seen by applications launched from Explorer until the user logs off or restarts the computer.</p>
  4446. </body>
  4447. </setuptopic>
  4448. <setuptopic directive="UsePreviousAppDir">
  4449. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4450. <setupdefault><tt>yes</tt></setupdefault>
  4451. <body>
  4452. <p>When this directive is <tt>yes</tt>, the default, at startup Setup will look in the registry to see if the <link topic="sameappnotes">same application</link> is already installed, and if so, it will use the directory of the previous installation as the default directory presented to the user in the wizard.</p>
  4453. <p>Note that Setup cannot re-use settings from a previous installation that had <tt>Uninstallable</tt> set to <tt>no</tt>, since the registry entries it looks for are not created when <tt>Uninstallable</tt> is <tt>no</tt>.</p>
  4454. </body>
  4455. </setuptopic>
  4456. <setuptopic directive="UsePreviousGroup">
  4457. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4458. <setupdefault><tt>yes</tt></setupdefault>
  4459. <body>
  4460. <p>When this directive is <tt>yes</tt>, the default, at startup Setup will look in the registry to see if the <link topic="sameappnotes">same application</link> is already installed, and if so, it will use the Start Menu folder name of the previous installation as the default Start Menu folder name presented to the user in the wizard. Additionally, if <tt>AllowNoIcons</tt> is set to <tt>yes</tt>, the <i>Don't create a Start Menu folder</i> setting from the previous installation will be restored.</p>
  4461. <p>Note that Setup cannot re-use settings from a previous installation that had <tt>Uninstallable</tt> set to <tt>no</tt>, since the registry entries it looks for are not created when <tt>Uninstallable</tt> is <tt>no</tt>.</p>
  4462. </body>
  4463. </setuptopic>
  4464. <setuptopic directive="UsePreviousLanguage">
  4465. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4466. <setupdefault><tt>yes</tt></setupdefault>
  4467. <body>
  4468. <p>When this directive is <tt>yes</tt>, the default, at startup Setup will look in the registry to see if the <link topic="sameappnotes">same application</link> is already installed, and if so, it will use the language of the previous installation as the default language presented to the user in the wizard.</p>
  4469. <p>Note that this directive does not change the language used by the <i>Select Language</i> dialog itself. See the <link topic="languagessection">[Languages] section</link> help topic for details on which language the <i>Select Language</i> dialog uses by default.</p>
  4470. <p>Also note that Setup cannot re-use settings from a previous installation that had <tt>Uninstallable</tt> set to <tt>no</tt>, since the registry entries it looks for are not created when <tt>Uninstallable</tt> is <tt>no</tt>.</p>
  4471. <p><tt>UsePreviousLanguage</tt> must be set to <tt>no</tt> when <tt>AppId</tt> includes constants.</p>
  4472. </body>
  4473. </setuptopic>
  4474. <setuptopic directive="UsePreviousPrivileges">
  4475. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4476. <setupdefault><tt>yes</tt></setupdefault>
  4477. <body>
  4478. <p>When this directive is <tt>yes</tt>, the default, at startup Setup will look in the registry to see if the <link topic="sameappnotes">same application</link> is already installed in one of the two install modes, and if so, it will use that install mode and not ask the user.</p>
  4479. <p>If <tt>PrivilegesRequiredOverridesAllowed</tt> does not allow <tt>dialog</tt>, this directive is effectively ignored.</p>
  4480. <p><tt>UsePreviousPrivileges</tt> must be set to <tt>no</tt> when <tt>AppId</tt> includes constants and <tt>PrivilegesRequiredOverridesAllowed</tt> allows <tt>dialog</tt>.</p>
  4481. <p><b>See also:</b><br/>
  4482. <link topic="setup_privilegesrequiredoverridesallowed">PrivilegesRequiredOverridesAllowed</link></p>
  4483. </body>
  4484. </setuptopic>
  4485. <setuptopic directive="UsePreviousSetupType">
  4486. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4487. <setupdefault><tt>yes</tt></setupdefault>
  4488. <body>
  4489. <p>When this directive is <tt>yes</tt>, the default, at startup Setup will look in the registry to see if the <link topic="sameappnotes">same application</link> is already installed, and if so, it will use the setup type and component settings of the previous installation as the default settings presented to the user in the wizard.</p>
  4490. <p>Note that Setup cannot re-use settings from a previous installation that had <tt>Uninstallable</tt> set to <tt>no</tt>, since the registry entries it looks for are not created when <tt>Uninstallable</tt> is <tt>no</tt>.</p>
  4491. </body>
  4492. </setuptopic>
  4493. <setuptopic directive="UsePreviousTasks">
  4494. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4495. <setupdefault><tt>yes</tt></setupdefault>
  4496. <body>
  4497. <p>When this directive is <tt>yes</tt>, the default, at startup Setup will look in the registry to see if the <link topic="sameappnotes">same application</link> is already installed, and if so, it will use the task settings of the previous installation as the default settings presented to the user in the wizard.</p>
  4498. <p>Note that Setup cannot re-use settings from a previous installation that had <tt>Uninstallable</tt> set to <tt>no</tt>, since the registry entries it looks for are not created when <tt>Uninstallable</tt> is <tt>no</tt>.</p>
  4499. </body>
  4500. </setuptopic>
  4501. <setuptopic directive="UsePreviousUserInfo">
  4502. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4503. <setupdefault><tt>yes</tt></setupdefault>
  4504. <body>
  4505. <p>When this directive is <tt>yes</tt>, the default, at startup Setup will look in the registry to see if the <link topic="sameappnotes">same application</link> is already installed, and if so, it will use the name, organization and serial number entered previously as the default settings presented to the user on the <i>User Information</i> wizard page.</p>
  4506. <p>Note that Setup cannot re-use settings from a previous installation that had <tt>Uninstallable</tt> set to <tt>no</tt>, since the registry entries it looks for are not created when <tt>Uninstallable</tt> is <tt>no</tt>.</p>
  4507. </body>
  4508. </setuptopic>
  4509. <setuptopic directive="Password">
  4510. <body>
  4511. <p>Specifies a password you want to prompt the user for at the beginning of the installation.</p>
  4512. <p>When using a password, you might consider setting <link topic="setup_encryption">Encryption</link> to <tt>yes</tt> as well, otherwise files will be stored as plain text and it would not be exceedingly difficult for someone to gain access to them through reverse engineering.</p>
  4513. <p>The password itself is not stored (neither as clear text nor as a hash) but you should still use a strong password.</p>
  4514. </body>
  4515. </setuptopic>
  4516. <setuptopic directive="WizardImageFile">
  4517. <setupdefault><i>(blank)</i></setupdefault>
  4518. <body>
  4519. <p>Specifies the name(s) of the bitmap file(s) to display on the left side of the <i>Welcome</i> and <i>Setup Completed</i> wizard pages. Wildcards are supported and the files(s) must be located in your installation's <link topic="sourcedirectorynotes">source directory</link> when running the compiler, unless a fully qualified pathname is specified or the pathname is prefixed by "compiler:", in which case it looks for the file in the compiler directory.</p>
  4520. <p>The size of the area in which the image is displayed depends on the system's DPI setting and whether the default <link topic="langoptionssection">font settings</link> are being used. At standard DPI with the default font settings, the size of the area is 164x314 pixels. At 200% DPI, the width and height will be roughly double that. In all cases, an aspect ratio of 164:314 is maintained. The specified bitmap should have the same aspect ratio.</p>
  4521. <p>Any size of bitmap may be used; by default, bitmaps that are too small or too large to fit in the image area will be stretched or shrunk. Specifying a bitmap larger than 164x314 is recommended to avoid the image looking blurry on higher-DPI systems. The size of the default built-in image is 240x459.</p>
  4522. <p>If a single larger-sized image does not produce a satisfactory result across different DPI settings, multiple files may be specified, separated by commas. In that case, Setup will automatically select the one that best matches the size of the image area. Assuming the default font settings are being used, the size of the image area at various DPI settings is:</p>
  4523. <table>
  4524. <tr><td>100%</td><td>164x314</td></tr>
  4525. <tr><td>125%</td><td>202x386</td></tr>
  4526. <tr><td>150%</td><td>240x459</td></tr>
  4527. <tr><td>175%</td><td>290x556</td></tr>
  4528. <tr><td>200%</td><td>315x604</td></tr>
  4529. <tr><td>225%</td><td>366x700</td></tr>
  4530. <tr><td>250%</td><td>416x797</td></tr>
  4531. </table>
  4532. <p>(You may notice that the size at 200% is not exactly double the 100% size. This is because the scaling factor is based on the dimensions of the font that a DPI setting uses, not the DPI itself.)</p>
  4533. <p>If this directive is not specified or is blank, a single built-in 240x459 wizard image will be used, by default stretched or shrunk if the image is larger or smaller than required.</p>
  4534. <p>To use the old default wizard images set this directive to <tt>compiler:WizClassicImage.bmp</tt>.</p>
  4535. <example><pre>WizardImageFile=myimage.bmp,myimage2.bmp</pre></example>
  4536. <p><b>See also:</b><br/>
  4537. <link topic="setup_wizardsmallimagefile">WizardSmallImageFile</link><br/>
  4538. <link topic="setup_wizardimagealphaformat">WizardImageAlphaFormat</link><br/>
  4539. <link topic="setup_wizardimagestretch">WizardImageStretch</link></p>
  4540. </body>
  4541. </setuptopic>
  4542. <setuptopic directive="WizardSmallImageFile">
  4543. <setupdefault><i>(blank)</i></setupdefault>
  4544. <body>
  4545. <p>Specifies the name(s) of the bitmap file(s) to display in the upper right corner of the wizard. Wildcards are supported and the file(s) must be located in your installation's <link topic="sourcedirectorynotes">source directory</link> when running the compiler, unless a fully qualified pathname is specified or the pathname is prefixed by "compiler:", in which case it looks for the file in the compiler directory.</p>
  4546. <p>The size of the area in which the image is displayed depends on the system's DPI setting and whether the default <link topic="langoptionssection">font settings</link> are being used. At standard DPI with the default font settings, the size of the area is 58x58 pixels. At 200% DPI, the width and height will be roughly double that. In all cases, the area is square; thus, the specified bitmap should be square as well.</p>
  4547. <p>Any size of bitmap may be used; by default, bitmaps that are too small or too large to fit in the image area will be stretched or shrunk. Specifying a bitmap larger than 58x58 is recommended to avoid the image looking blurry on higher-DPI systems. The size of the default built-in image is 147x147.</p>
  4548. <p>If a single larger-sized image does not produce a satisfactory result across different DPI settings, multiple files may be specified, separated by commas. In that case, Setup will automatically select the one that best matches the size of the image area. Assuming the default font settings are being used, the size of the image area at various DPI settings is:</p>
  4549. <table>
  4550. <tr><td>100%</td><td>58x58</td></tr>
  4551. <tr><td>125%</td><td>71x71</td></tr>
  4552. <tr><td>150%</td><td>85x85</td></tr>
  4553. <tr><td>175%</td><td>103x103</td></tr>
  4554. <tr><td>200%</td><td>112x112</td></tr>
  4555. <tr><td>225%</td><td>129x129</td></tr>
  4556. <tr><td>250%</td><td>147x147</td></tr>
  4557. </table>
  4558. <p>(You may notice that the size at 200% is not exactly double the 100% size. This is because the scaling factor is based on the dimensions of the font that a DPI setting uses, not the DPI itself.)</p>
  4559. <p>Backward compatibility note: If a single bitmap smaller than 58x58 is specified, the bitmap will not be stretched to fill the entire image area; instead, it will be centered.</p>
  4560. <p>If this directive is not specified or is blank, a single built-in 147x147 wizard image will be used, by default stretched or shrunk if the image is larger or smaller than required.</p>
  4561. <p>To use the old default wizard images set this directive to <tt>compiler:WizClassicSmallImage.bmp</tt>.</p>
  4562. <example><pre>WizardSmallImageFile=mysmallimage.bmp,mysmallimage2.bmp</pre></example>
  4563. <p><b>See also:</b><br/>
  4564. <link topic="setup_wizardimagefile">WizardImageFile</link><br/>
  4565. <link topic="setup_wizardimagealphaformat">WizardImageAlphaFormat</link><br/>
  4566. <link topic="setup_wizardimagestretch">WizardImageStretch</link></p>
  4567. </body>
  4568. </setuptopic>
  4569. <setuptopic directive="WindowVisible" title="BackColor, BackColor2, BackColorDirection, BackSolid, WindowResizable, WindowShowCaption, WindowStartMaximized, WindowVisible">
  4570. <keyword value="BackColor" />
  4571. <keyword value="BackColor2" />
  4572. <keyword value="BackColorDirection" />
  4573. <keyword value="BackSolid" />
  4574. <keyword value="WindowResizable" />
  4575. <keyword value="WindowShowCaption" />
  4576. <keyword value="WindowStartMaximized" />
  4577. <body>
  4578. <p><i>Feature removed in 6.4.</i> These directives are no longer supported. In past versions, they were used to configure a 1990s-style blue gradient background behind the wizard window.</p>
  4579. </body>
  4580. </setuptopic>
  4581. <setuptopic directive="WizardImageAlphaFormat">
  4582. <setupvalid><tt>none</tt>, <tt>defined</tt>, <tt>premultiplied</tt></setupvalid>
  4583. <setupdefault><tt>none</tt></setupdefault>
  4584. <body>
  4585. <p>If set to <tt>none</tt>, the default, any wizard image which is a 32 bit bitmap file should not have an alpha channel.</p>
  4586. <p>If set to <tt>premultiplied</tt>, any wizard image which is a 32 bit bitmap file should have its red, green and blue channel values premultiplied with the alpha channel value.</p>
  4587. <p>If set to <tt>defined</tt>, any wizard image which is a 32 bit bitmap file should not have its red, green and blue channel values premultiplied with the alpha channel value.</p>
  4588. <p>This directive has no effect for a wizard image which is not a 32 bit bitmap file.</p>
  4589. </body>
  4590. </setuptopic>
  4591. <setuptopic directive="WizardImageBackColor">
  4592. <body>
  4593. <p><i>Obsolete in 5.5.7.</i> This directive formerly specified the background color used to fill any unused space around the wizard bitmap when <link topic="setup_wizardimagestretch">WizardImageStretch</link> was set to <tt>no</tt>. Now any unused space is filled with the standard window color (usually white). If you wish to create a colored border around the image, do so by modifying the bitmap itself.</p>
  4594. </body>
  4595. </setuptopic>
  4596. <setuptopic directive="WizardImageStretch">
  4597. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4598. <setupdefault><tt>yes</tt></setupdefault>
  4599. <body>
  4600. <p>If set to <tt>yes</tt>, the default, the wizard images will be stretched or shrunk if the images are larger or smaller than required.</p>
  4601. <p>If set to <tt>no</tt>, the wizard images will be centered in their respective areas if the images are larger than required, and clipped if the images are smaller than required.</p>
  4602. </body>
  4603. </setuptopic>
  4604. <setuptopic directive="WizardResizable">
  4605. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4606. <setupdefault><tt>yes</tt> if <link topic="setup_wizardstyle">WizardStyle</link> is set to <tt>modern</tt>, <tt>no</tt> otherwise</setupdefault>
  4607. <body>
  4608. <p>If set to <tt>yes</tt>, the user will be able to resize the main Setup wizard window.</p>
  4609. <p>Use <tt>Anchors</tt> and <tt>KeepSizeY</tt> properties to add full support for <tt>WizardResizable</tt> and <tt>WizardSizePercent</tt> to all your custom controls, custom wizard pages and <tt>TSetupForm</tt> forms if you have any. See the <i>CodeClasses.iss</i> example script for an example.</p>
  4610. <p><b>See also:</b><br/>
  4611. <link topic="setup_wizardsizepercent">WizardSizePercent</link></p>
  4612. </body>
  4613. </setuptopic>
  4614. <setuptopic directive="WizardSizePercent">
  4615. <setupformat><tt><i>a</i>,<i>b</i></tt>, where <tt><i>a</i></tt> is the horizontal size, and <tt><i>b</i></tt> is the vertical size.</setupformat>
  4616. <setupvalid>each size: <tt>100</tt> through <tt>150</tt></setupvalid>
  4617. <setupdefault><tt>120,120</tt> if <link topic="setup_wizardstyle">WizardStyle</link> is set to <tt>modern</tt>, <tt>100,100</tt> otherwise</setupdefault>
  4618. <body>
  4619. <p>Lets you increase the default size of all Setup wizard windows without increasing the font size. A size of for example 120 means a 20% size increase.</p>
  4620. <p>If you specify only one size it will be used as both the horizontal and the vertical size.</p>
  4621. <example><pre>WizardSizePercent=120</pre></example>
  4622. <p>Use <tt>Anchors</tt> and <tt>KeepSizeY</tt> properties to add full support for <tt>WizardResizable</tt> and <tt>WizardSizePercent</tt> to all your custom controls and wizard pages if you have any. See the <i>CodeClasses.iss</i> example script for an example.</p>
  4623. <p>Note: Some of the wizard windows such as the <i>Select Language</i> dialog will only increase in size horizontally.</p>
  4624. <p><b>See also:</b><br/>
  4625. <link topic="setup_wizardresizable">WizardResizable</link><br/>
  4626. <link topic="langoptionssection" anchor="DialogFontSize">DialogFontSize</link></p>
  4627. </body>
  4628. </setuptopic>
  4629. <setuptopic directive="WizardSmallImageBackColor">
  4630. <body>
  4631. <p><i>Obsolete in 5.0.4.</i> This directive formerly specified the background color used to fill any unused space around the small wizard bitmap when <link topic="setup_wizardimagestretch">WizardImageStretch</link> was set to <tt>no</tt>. Now any unused space is filled with the standard window color (usually white). If you wish to create a colored border around the image, do so by modifying the bitmap itself.</p>
  4632. </body>
  4633. </setuptopic>
  4634. <setuptopic directive="SourceDir">
  4635. <body>
  4636. <p>Specifies a new <link topic="sourcedirectorynotes">source directory</link> for the script.</p>
  4637. <example><pre>SourceDir=c:\files</pre></example>
  4638. </body>
  4639. </setuptopic>
  4640. <setuptopic directive="OutputDir">
  4641. <setupdefault><tt>Output</tt></setupdefault>
  4642. <body>
  4643. <p>Specifies the "output" directory for the script, which is where the compiler will place the resulting SETUP.* files. By default, it creates a directory named "Output" under the directory containing the script for this.</p>
  4644. <p>If <tt>OutputDir</tt> is not a fully-qualified pathname, it will be treated as being relative to <tt>SourceDir</tt>, unless the pathname is prefixed by "userdocs:", in which case it will be treated as being relative to the My Documents folder of the currently logged-in user. Setting <tt>OutputDir</tt> to <tt>.</tt> will result in the files being placed in the source directory.</p>
  4645. <example><pre>OutputDir=c:\output</pre></example>
  4646. </body>
  4647. </setuptopic>
  4648. <setuptopic directive="WizardStyle">
  4649. <setupvalid><tt>classic</tt> or <tt>modern</tt></setupvalid>
  4650. <setupdefault><tt>classic</tt></setupdefault>
  4651. <body>
  4652. <p>If this directive is set to <tt>modern</tt>, Setup and Uninstall will show a more modern look. For Setup this also changes the defaults for <link topic="setup_wizardresizable">WizardResizable</link> and <link topic="setup_wizardsizepercent">WizardSizePercent</link> to respectively <tt>yes</tt> and <tt>120,120</tt>.</p>
  4653. <p>Use <tt>Anchors</tt> and <tt>KeepSizeY</tt> properties to add full support for <tt>WizardResizable</tt> and <tt>WizardSizePercent</tt> to all your custom controls and wizard pages if you have any. See the <i>CodeClasses.iss</i> example script for an example.</p>
  4654. </body>
  4655. </setuptopic>
  4656. <setuptopic directive="UninstallStyle">
  4657. <body>
  4658. <p><i>Obsolete in 5.0.0.</i></p>
  4659. </body>
  4660. </setuptopic>
  4661. <setuptopic directive="AlwaysShowComponentsList">
  4662. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4663. <setupdefault><tt>yes</tt></setupdefault>
  4664. <body>
  4665. <p>If this directive is set to <tt>yes</tt>, Setup will always show the components list for customizable setups. If this is set to <tt>no</tt> Setup will only show the components list if the user selected a custom type from the type list.</p>
  4666. </body>
  4667. </setuptopic>
  4668. <setuptopic directive="AlwaysShowDirOnReadyPage">
  4669. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4670. <setupdefault><tt>no</tt></setupdefault>
  4671. <body>
  4672. <p>If this directive is set to <tt>yes</tt>, Setup will always show the selected directory in the list of settings on the <i>Ready to Install</i> wizard page. If this is set to <tt>no</tt>, Setup will not show the selected directory if <tt>DisableDirPage</tt> is <tt>yes</tt>.</p>
  4673. </body>
  4674. </setuptopic>
  4675. <setuptopic directive="AlwaysShowGroupOnReadyPage">
  4676. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4677. <setupdefault><tt>no</tt></setupdefault>
  4678. <body>
  4679. <p>If this directive is set to <tt>yes</tt>, Setup will always show the selected Start Menu folder name in the list of settings on the <i>Ready to Install</i> wizard page. If this is set to <tt>no</tt>, Setup will not show the selected Start Menu folder name if <tt>DisableProgramGroupPage</tt> is <tt>yes</tt>.</p>
  4680. <p>If no Start Menu folder is going to be created by Setup, this directive is effectively ignored.</p>
  4681. </body>
  4682. </setuptopic>
  4683. <setuptopic directive="FlatComponentsList">
  4684. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4685. <setupdefault><tt>yes</tt></setupdefault>
  4686. <body>
  4687. <p>When this directive is set to <tt>yes</tt>, Setup will use 'flat' checkboxes for the components list. Otherwise Setup will use '3D' checkboxes.</p>
  4688. </body>
  4689. </setuptopic>
  4690. <setuptopic directive="ShowComponentSizes">
  4691. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4692. <setupdefault><tt>yes</tt></setupdefault>
  4693. <body>
  4694. <p>When this directive is set to <tt>yes</tt>, Setup will show the size of a component in the components list. Depending on the largest component, Setup will display sizes in kilobytes or in megabytes.</p>
  4695. </body>
  4696. </setuptopic>
  4697. <setuptopic directive="ShowTasksTreeLines">
  4698. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4699. <setupdefault><tt>no</tt></setupdefault>
  4700. <body>
  4701. <p>When this directive is set to <tt>yes</tt>, Setup will show 'tree lines' between parent and sub tasks.</p>
  4702. </body>
  4703. </setuptopic>
  4704. <setuptopic directive="DefaultDialogFontName">
  4705. <setupdefault><tt>Tahoma</tt></setupdefault>
  4706. <body>
  4707. <p>Specifies the name of the font that should be used in dialogs on languages that do not set <tt>DialogFontName</tt> in their <link topic="langoptionssection">[LangOptions] section</link>.</p>
  4708. <p>If the specified font name does not exist on the user's system or is an empty string, 8-point Microsoft Sans Serif or MS Sans Serif will be substituted.</p>
  4709. </body>
  4710. </setuptopic>
  4711. <setuptopic directive="ShowLanguageDialog">
  4712. <setupvalid><link topic="yesnonotes"><tt>yes</tt>, <tt>no</tt></link>, or <tt>auto</tt></setupvalid>
  4713. <setupdefault><tt>yes</tt></setupdefault>
  4714. <body>
  4715. <p>When set to <tt>yes</tt> and there are multiple <link topic="languagessection">[Languages] section</link> entries, a <i>Select Language</i> dialog will be displayed to give the user an opportunity to override the language Setup chose by default. See the [Languages] section documentation for more information.</p>
  4716. <p>When set to <tt>no</tt>, the dialog will never be displayed.</p>
  4717. <p>When set to <tt>auto</tt>, the dialog will only be displayed if Setup does not find a language identifier match.</p>
  4718. <p><b>See also:</b><br/>
  4719. <link topic="setup_usepreviouslanguage">UsePreviousLanguage</link></p>
  4720. </body>
  4721. </setuptopic>
  4722. <setuptopic directive="LanguageDetectionMethod">
  4723. <setupvalid><tt>uilanguage</tt>, <tt>locale</tt>, <tt>none</tt></setupvalid>
  4724. <setupdefault><tt>uilanguage</tt></setupdefault>
  4725. <body>
  4726. <p>When set to <tt>uilanguage</tt>, Setup will determine the default language to use by checking the user's "UI language" (by calling GetUserDefaultUILanguage(), or on Windows versions where that function is unsupported, by reading the registry). This is the method that Microsoft recommends. The "UI language" is the language used in Windows' own dialogs. Thus, on an English edition of Windows, English will be the default, while on a Dutch edition of Windows, Dutch will be the default. On the MUI edition of Windows, the default will be the currently selected UI language.</p>
  4727. <p>When set to <tt>locale</tt>, Setup will determine the default language to use by calling GetUserDefaultLangID(). This function returns the setting of "Your locale" in Control Panel's Regional Options. It should however be noted that the "Your locale" option is not intended to affect languages; it is only documented to affect "numbers, currencies, times, and dates".</p>
  4728. <p>When set to <tt>none</tt>, Setup will use the first language specified in the [Languages] section as the default language.</p>
  4729. </body>
  4730. </setuptopic>
  4731. <setuptopic directive="TimeStampRounding">
  4732. <setupvalid><tt>0</tt> through <tt>60</tt></setupvalid>
  4733. <setupdefault><tt>2</tt></setupdefault>
  4734. <body>
  4735. <p>By default, time stamps on files referenced by non <tt>external</tt> [Files] section entries are rounded down to the nearest 2-second boundary. FAT partitions have only a 2-second time stamp resolution, so this ensures that time stamps are set the same way on both FAT and NTFS partitions.</p>
  4736. <p>The rounding can be altered or disabled by setting the <tt>TimeStampRounding</tt> directive. Setting it to <tt>0</tt> will disable the rounding. Setting it to a number between <tt>1</tt> and <tt>60</tt> will cause time stamps to be rounded down to the nearest <tt>TimeStampRounding</tt>-second boundary.</p>
  4737. </body>
  4738. </setuptopic>
  4739. <setuptopic directive="TimeStampsInUTC">
  4740. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4741. <setupdefault><tt>no</tt></setupdefault>
  4742. <body>
  4743. <p>By default, time stamps on files referenced by non <tt>external</tt> [Files] section entries are saved and restored as local times. This means that if a particular file has a time stamp of 01:00 local time at compile time, Setup will extract the file with a time stamp of 01:00 local time, regardless of the user's time zone setting or whether DST is in effect.</p>
  4744. <p>If <tt>TimeStampsInUTC</tt> is set to <tt>yes</tt>, time stamps will be saved and restored in UTC -- the native time format of Win32 and NTFS. In this mode, a file with a time stamp of 01:00 local time in New York will have a time stamp of 06:00 local time when installed in London.</p>
  4745. </body>
  4746. </setuptopic>
  4747. <setuptopic directive="SetupIconFile">
  4748. <setupdefault><i>(blank)</i></setupdefault>
  4749. <body>
  4750. <p>Specifies a custom program icon to use for Setup/Uninstall. The file must be located in your installation's <link topic="sourcedirectorynotes">source directory</link> when running the compiler, unless a fully qualified pathname is specified or the pathname is prefixed by "compiler:", in which case it looks for the file in the compiler directory.</p>
  4751. <p>It is recommended to include at least the following sizes in your icon: 16x16, 32x32, 48x48, 64x64, and 256x256.</p>
  4752. <p>If this directive is not specified or is blank, a built-in icon supporting the above sizes will be used.</p>
  4753. <p>To use the old default icon set this directive to <tt>compiler:SetupClassicIcon.ico</tt>.</p>
  4754. <example><pre>SetupIconFile=MyProgSetup.ico</pre></example>
  4755. </body>
  4756. </setuptopic>
  4757. <setuptopic directive="VersionInfoCompany">
  4758. <setupdefault><link topic="setup_apppublisher">AppPublisher</link> if <link topic="setup_apppublisher">AppPublisher</link> doesn't include constants, an empty string otherwise</setupdefault>
  4759. <body>
  4760. <p>Specifies the company name value for the Setup version info.</p>
  4761. </body>
  4762. </setuptopic>
  4763. <setuptopic directive="VersionInfoCopyright">
  4764. <setupdefault><link topic="setup_appcopyright">AppCopyright</link> if <link topic="setup_appcopyright">AppCopyright</link> doesn't include constants, an empty string otherwise</setupdefault>
  4765. <body>
  4766. <p>Specifies the copyright value for the Setup version info.</p>
  4767. </body>
  4768. </setuptopic>
  4769. <setuptopic directive="VersionInfoDescription">
  4770. <setupdefault>"<link topic="setup_appname">AppName</link> Setup" if <link topic="setup_appname">AppName</link> doesn't include constants, an empty string otherwise</setupdefault>
  4771. <body>
  4772. <p>Specifies the file description value for the Setup version info.</p>
  4773. <p>This setting has no effect if <tt>UseSetupLdr</tt> is set to <tt>no</tt>.</p>
  4774. </body>
  4775. </setuptopic>
  4776. <setuptopic directive="VersionInfoOriginalFileName">
  4777. <body>
  4778. <p>Specifies the original file name value for the Setup version info.</p>
  4779. </body>
  4780. </setuptopic>
  4781. <setuptopic directive="VersionInfoProductName">
  4782. <setupdefault><link topic="setup_appname">AppName</link> if <link topic="setup_appname">AppName</link> doesn't include constants, an empty string otherwise</setupdefault>
  4783. <body>
  4784. <p>Specifies the product name value for the Setup version info.</p>
  4785. </body>
  4786. </setuptopic>
  4787. <setuptopic directive="VersionInfoProductTextVersion">
  4788. <setupdefault><link topic="setup_versioninfoproductversion">VersionInfoProductVersion</link> if set, else <link topic="setup_appversion">AppVersion</link> if set and does not include constants, else <link topic="setup_versioninfotextversion">VersionInfoTextVersion</link></setupdefault>
  4789. <body>
  4790. <p>Specifies the textual product version value for the Setup version info.</p>
  4791. </body>
  4792. </setuptopic>
  4793. <setuptopic directive="VersionInfoProductVersion">
  4794. <setupvalid>A value in the form of up to 4 numbers separated by dots</setupvalid>
  4795. <setupdefault><link topic="setup_versioninfoversion">VersionInfoVersion</link></setupdefault>
  4796. <body>
  4797. <p>Specifies the binary product version value for the Setup version info.</p>
  4798. <p>Partial version numbers are allowed. Missing numbers will be appended as zero's.</p>
  4799. <p>Note that this value is only known to be displayed by Explorer on Windows Vista SP2. Other versions display the textual product version value (<link topic="setup_versioninfoproducttextversion">VersionInfoProductTextVersion</link>) instead.</p>
  4800. </body>
  4801. </setuptopic>
  4802. <setuptopic directive="VersionInfoTextVersion">
  4803. <setupdefault><link topic="setup_versioninfoversion">VersionInfoVersion</link></setupdefault>
  4804. <body>
  4805. <p>Specifies the textual file version value for the Setup version info.</p>
  4806. <p>Note that this value was only displayed on Explorer's Version tab on Windows 98 and earlier. Later versions display the binary version value (<link topic="setup_versioninfoversion">VersionInfoVersion</link>) instead.</p>
  4807. <p>This setting has no effect if <tt>UseSetupLdr</tt> is set to <tt>no</tt>.</p>
  4808. </body>
  4809. </setuptopic>
  4810. <setuptopic directive="VersionInfoVersion">
  4811. <setupvalid>A value in the form of up to 4 numbers separated by dots</setupvalid>
  4812. <setupdefault>0.0.0.0</setupdefault>
  4813. <body>
  4814. <p>Specifies the binary file version value for the Setup version info.</p>
  4815. <p>Partial version numbers are allowed. Missing numbers will be appended as zero's.</p>
  4816. <p>This setting has no effect if <tt>UseSetupLdr</tt> is set to <tt>no</tt>.</p>
  4817. </body>
  4818. </setuptopic>
  4819. <setuptopic directive="UninstallIconFile">
  4820. <body>
  4821. <p><i>Obsolete in 5.0.0.</i> As Setup and Uninstall have been merged into a single executable, setting a custom icon for Uninstall is no longer possible.</p>
  4822. </body>
  4823. </setuptopic>
  4824. <setuptopic directive="AppendDefaultDirName">
  4825. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4826. <setupdefault><tt>yes</tt></setupdefault>
  4827. <body>
  4828. <p>By default, when a folder in the dialog displayed by the <i>Browse...</i> button on the <i>Select Destination Location</i> wizard page is clicked, Setup automatically appends the last component of <tt>DefaultDirName</tt> onto the new path. For example, if <tt>DefaultDirName</tt> is <tt>{autopf}\My Program</tt> and "Z:\" is clicked, the new path will become "Z:\My Program".</p>
  4829. <p>Setting this directive to <tt>no</tt> disables the aforementioned behavior. In addition, it causes a <i>Make New Folder</i> button to appear on the dialog.</p>
  4830. </body>
  4831. </setuptopic>
  4832. <setuptopic directive="AppendDefaultGroupName">
  4833. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4834. <setupdefault><tt>yes</tt></setupdefault>
  4835. <body>
  4836. <p>By default, when a folder in the dialog displayed by the <i>Browse...</i> button on the <i>Select Start Menu Folder</i> wizard page is clicked, Setup automatically appends the last component of <tt>DefaultGroupName</tt> onto the new path. For example, if <tt>DefaultGroupName</tt> is <tt>My Program</tt> and "Accessories" is clicked, the new path will become "Accessories\My Program".</p>
  4837. <p>Setting this directive to <tt>no</tt> disables the aforementioned behavior. In addition, it causes a <i>Make New Folder</i> button to appear on the dialog.</p>
  4838. </body>
  4839. </setuptopic>
  4840. <setuptopic directive="TouchDate">
  4841. <setupvalid><tt>current</tt>, <tt>none</tt>, or <tt><i>YYYY</i>-<i>MM</i>-<i>DD</i></tt></setupvalid>
  4842. <setupdefault><tt>current</tt></setupdefault>
  4843. <body>
  4844. <p>The date used in the time/date stamp of files referenced by [Files] section entries that include the <tt>touch</tt> flag.</p>
  4845. <p>A value of <tt>current</tt> causes the current system date (at compile time) to be used. A value of <tt>none</tt> leaves the date as-is. Otherwise, <tt>TouchDate</tt> is interpreted as an explicit date in <tt><i>YYYY</i>-<i>MM</i>-<i>DD</i></tt> (ISO 8601) format. If <link topic="setup_timestampsinutc">TimeStampsInUTC</link> is set to <tt>yes</tt>, the date is assumed to be a UTC date.</p>
  4846. <example><pre>TouchDate=2004-01-31</pre></example>
  4847. </body>
  4848. </setuptopic>
  4849. <setuptopic directive="TouchTime">
  4850. <setupvalid><tt>current</tt>, <tt>none</tt>, <tt><i>HH</i>:<i>MM</i></tt>, or <tt><i>HH</i>:<i>MM</i>:<i>SS</i></tt></setupvalid>
  4851. <setupdefault><tt>current</tt></setupdefault>
  4852. <body>
  4853. <p>The time used in the time/date stamp of files referenced by [Files] section entries that include the <tt>touch</tt> flag.</p>
  4854. <p>A value of <tt>current</tt> causes the current system time (at compile time) to be used. A value of <tt>none</tt> leaves the time as-is. Otherwise, <tt>TouchTime</tt> is interpreted as an explicit time in <tt><i>HH</i>:<i>MM</i></tt> or <tt><i>HH</i>:<i>MM</i>:<i>SS</i></tt> format. If <link topic="setup_timestampsinutc">TimeStampsInUTC</link> is set to <tt>yes</tt>, the time is assumed to be a UTC time.</p>
  4855. <example><pre>TouchTime=13:00</pre></example>
  4856. </body>
  4857. </setuptopic>
  4858. <setuptopic directive="Encryption">
  4859. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  4860. <setupdefault><tt>no</tt></setupdefault>
  4861. <body>
  4862. <p>If set to <tt>yes</tt>, files that are compiled into the installation (via [Files] section entries) will be encrypted using XChaCha20 encryption.</p>
  4863. <p>If encryption is enabled and you call the <link topic="isxfunc_ExtractTemporaryFile">ExtractTemporaryFile</link> function from the [Code] section prior to the user entering the correct password, the function will fail unless the <tt>noencryption</tt> flag is used on the [Files] section entry for the file.</p>
  4864. <p>The 256-bit XChaCha20 encryption key is derived from the value of <link topic="setup_password">Password</link> using the function specified by <link topic="setup_encryptionkeyderivation">EncryptionKeyDerivation</link>, and the 192-bit XChaCha20 encryption nonce is a random base nonce, appending the index of the first file in the chunk for unique encryption nonces.</p>
  4865. </body>
  4866. </setuptopic>
  4867. <setuptopic directive="EncryptionKeyDerivation">
  4868. <keyword value="pbkdf2" />
  4869. <setupvalid><tt>pbkdf2</tt><br/>
  4870. <tt>pbkdf2/1</tt> through <tt>pbkdf2/2147483647</tt></setupvalid>
  4871. <setupdefault><tt>pbkdf2/220000</tt></setupdefault>
  4872. <body>
  4873. <p>This specifies the key derivation function to use to derive the encryption key from the value of <link topic="setup_password">Password</link>, and optionally its parameters.</p>
  4874. <p><tt>pbkdf2</tt> is the PBKDF2-HMAC-SHA256 function with a 128-bit random salt, and optionally allows to increase its number of iterations for extra security. If the number of iterations isn't specified, it defaults to 220000.</p>
  4875. <p><b>See also:</b><br/>
  4876. <link topic="setup_encryption">Encryption</link>
  4877. </p>
  4878. </body>
  4879. </setuptopic>
  4880. <setuptopic directive="AppModifyPath">
  4881. <body>
  4882. <p>When this directive is set, a separate "Modify" button in the Add/Remove Programs Control Panel applet will be displayed. Setting it is optional. The value may include constants.</p>
  4883. <example><pre>AppModifyPath="{app}\Setup.exe" /modify=1</pre></example>
  4884. </body>
  4885. </setuptopic>
  4886. <setuptopic directive="OutputManifestFile">
  4887. <body>
  4888. <p>When this directive is set, the compiler will create a manifest file detailing information about the files compiled into Setup. The file will be created in the <link topic="setup_outputdir">output directory</link> unless a path is included.</p>
  4889. <example><pre>OutputManifestFile=Setup-Manifest.txt</pre></example>
  4890. </body>
  4891. </setuptopic>
  4892. <topic name="archidentifiers" title="Architecture Identifiers">
  4893. <keyword value="Architecture Identifiers" />
  4894. <body>
  4895. <p>These are used in the values of <link topic="setup_architecturesallowed">ArchitecturesAllowed</link> and <link topic="setup_architecturesinstallin64bitmode">ArchitecturesInstallIn64BitMode</link>.</p>
  4896. <dl>
  4897. <dt><b>arm32compatible</b></dt>
  4898. <dd>
  4899. <p>Matches systems capable of running 32-bit Arm binaries. Arm64 Windows previously included such support, but Microsoft removed it in Windows 11 24H2.</p>
  4900. </dd>
  4901. <dt><b>arm64</b></dt>
  4902. <dd>
  4903. <p>Matches systems running Arm64 Windows.</p>
  4904. </dd>
  4905. <dt><b>win64</b></dt>
  4906. <dd>
  4907. <p>Matches systems running 64-bit Windows, regardless of OS architecture.</p>
  4908. <p>This may be useful in an installer that doesn't ship any architecture-specific binaries, but requires access to something 64-bit, like <tt>HKLM64</tt> in the [Registry] section, or the native 64-bit Program Files directory.</p>
  4909. </dd>
  4910. <dt><b>x64compatible</b></dt>
  4911. <dd>
  4912. <p>Matches systems capable of running x64 binaries. This includes systems running x64 Windows, and also Arm64-based Windows 11 systems, which have the ability to run x64 binaries via emulation.</p>
  4913. </dd>
  4914. <dt><b>x64os</b></dt>
  4915. <dd>
  4916. <p>Matches systems running x64 Windows only — not any other systems that have the ability to run x64 binaries via emulation.</p>
  4917. <p>In most cases, <tt>x64compatible</tt> should be used instead of <tt>x64os</tt>, because <tt>x64compatible</tt> allows x64 apps to be installed on Arm64 Windows 11 systems as well.</p>
  4918. <p>However, <tt>x64os</tt> is appropriate in unusual cases where an x64 app/binary is known to require true x64 Windows and cannot function under emulation. x64 device drivers are one example; x64 emulation isn't supported in kernel mode.</p>
  4919. <p>Before Inno Setup 6.3, <tt>x64os</tt> was named <tt>x64</tt>. The compiler still accepts <tt>x64</tt> as an alias for <tt>x64os</tt>, but will emit a deprecation warning when used.</p>
  4920. </dd>
  4921. <dt><b>x86compatible</b></dt>
  4922. <dd>
  4923. <p>Matches systems capable of running 32-bit x86 binaries. This includes systems running x86 Windows, x64 Windows, and also Arm64 Windows 10 and 11 systems, which have the ability to run x86 binaries via emulation.</p>
  4924. <p>Given that Setup itself is currently always built as a 32-bit x86 binary, this always matches.</p>
  4925. </dd>
  4926. <dt><b>x86os</b></dt>
  4927. <dd>
  4928. <p>Matches systems running 32-bit x86 Windows only.</p>
  4929. <p><tt>x86os</tt> usually only makes sense when installing 32-bit x86 device drivers. When installing a regular 32-bit app, <tt>x86compatible</tt> should be used instead (or just leave <tt>ArchitecturesAllowed</tt> unset).</p>
  4930. <p>Before Inno Setup 6.3, <tt>x86os</tt> was named <tt>x86</tt>. The compiler still accepts <tt>x86</tt> as an alias for <tt>x86os</tt>.</p>
  4931. </dd>
  4932. </dl>
  4933. <p><b>See also:</b><br/>
  4934. <link topic="isarchidentifier">Architecture Identifier Matchers like IsX64Compatible</link><br />
  4935. <link topic="isxfunc_ProcessorArchitecture">ProcessorArchitecture</link></p>
  4936. </body>
  4937. </topic>
  4938. <setuptopic directive="ArchitecturesAllowed">
  4939. <keyword value="x86" />
  4940. <keyword value="AMD64" />
  4941. <keyword value="x64" />
  4942. <keyword value="Arm64" />
  4943. <setupvalid>A space separated list of <link topic="archidentifiers">architecture identifiers</link>.<br />
  4944. Or, a boolean expression containing <link topic="archidentifiers">architecture identifiers</link>. See <link topic="componentstasksparams">Components and Tasks parameters</link> for examples of boolean expressions.</setupvalid>
  4945. <!-- The default is actually an empty string, but in a 32-bit x86 build that's equivalent to x86compatible -->
  4946. <setupdefault><tt>x86compatible</tt></setupdefault>
  4947. <body>
  4948. <p>Specifies which architectures Setup is allowed to run on. If none of the specified architecture identifiers match the current system, Setup will display an error message (<tt>WindowsVersionNotSupported</tt>) and exit.</p>
  4949. <p>If your application's binaries are all 32-bit, then there is normally no need to set this directive; the default value of <tt>x86compatible</tt> is correct. If your application's binaries are built for the x64 or Arm64 architectures, you should set this directive to either <tt>x64compatible</tt> or <tt>arm64</tt> respectively.</p>
  4950. <p>If you are installing device drivers, then the proper setting is <tt>x86os</tt>, <tt>x64os</tt>, or <tt>arm64</tt>, depending on the architecture of the drivers.</p>
  4951. <examples>
  4952. <pre>
  4953. ; Require two architecture identifier matches at the same time.
  4954. ; - An x64 app installer that includes some 32-bit x86 binaries:
  4955. ArchitecturesAllowed=x64compatible and x86compatible
  4956. ; - An Arm64 app installer that includes some x64 binaries:
  4957. ArchitecturesAllowed=arm64 and x64compatible
  4958. ; Only allow installation on systems that <i>aren't</i> x64-compatible.
  4959. ; Useful in a situation where you have separate x86 &amp; x64 installers,
  4960. ; and don't want users of x64-compatible OSes (x64 + Arm64 Win11)
  4961. ; erroneously running the x86 installer.
  4962. ArchitecturesAllowed=x86compatible and not x64compatible
  4963. ; Allow installation on x64-compatible systems, but deny Arm64.
  4964. ; Useful if you provide a separate installer for Arm64 systems.
  4965. ArchitecturesAllowed=x64compatible and not arm64
  4966. ; The "os" variant is appropriate when installing something that
  4967. ; cannot operate in an emulated environment, such as a device driver.
  4968. ArchitecturesAllowed=x64os
  4969. ; Allow installation only on 64-bit Windows, but don't check the
  4970. ; architecture.
  4971. ; (Don't use this if installing any architecture-specific binaries.)
  4972. ArchitecturesAllowed=win64
  4973. </pre>
  4974. </examples>
  4975. <p><b>See also:</b><br/>
  4976. <link topic="setup_architecturesinstallin64bitmode">ArchitecturesInstallIn64BitMode</link></p>
  4977. </body>
  4978. </setuptopic>
  4979. <setuptopic directive="ArchitecturesInstallIn64BitMode">
  4980. <keyword value="32-bit install mode" />
  4981. <keyword value="64-bit install mode" />
  4982. <keyword value="AMD64" />
  4983. <keyword value="x64" />
  4984. <keyword value="Arm64" />
  4985. <setupvalid>A space separated list of <link topic="archidentifiers">architecture identifiers</link>.<br />
  4986. Or, a boolean expression containing <link topic="archidentifiers">architecture identifiers</link>. See <link topic="componentstasksparams">Components and Tasks parameters</link> for examples of boolean expressions.</setupvalid>
  4987. <setupdefault><i>(blank)</i></setupdefault>
  4988. <body>
  4989. <p>Specifies the architectures on which Setup should enable <link topic="32vs64bitinstalls">64-bit install mode</link>. If this directive is not specified or is blank, Setup will always use <link topic="32vs64bitinstalls">32-bit install mode</link>.</p>
  4990. <p>Generally, 64-bit install mode should only be enabled on installers that ship 64-bit binaries (x64 or Arm64).</p>
  4991. <p>Since 64-bit install mode is only supported on systems running 64-bit Windows, the specified expression must never match systems running 32-bit Windows. So, for example, don't set this directive to a value like <tt>x86compatible</tt>, since that <i>will</i> match systems running 32-bit Windows. If the expression does indeed match a system running 32-bit Windows, Setup will display an error message and exit.</p>
  4992. <p>Be sure you have read the <link topic="64bitlimitations">64-bit Installation Limitations</link> topic before setting this directive.</p>
  4993. <p>If your application runs only on 64-bit architectures, you should set <link topic="setup_architecturesallowed">ArchitecturesAllowed</link> to the same value as this directive to prevent Setup from running on 32-bit Windows.</p>
  4994. <example>
  4995. <pre>
  4996. ; Only allow the installer to run on x64-compatible systems,
  4997. ; and enable 64-bit install mode.
  4998. ArchitecturesAllowed=x64compatible
  4999. ArchitecturesInstallIn64BitMode=x64compatible
  5000. </pre>
  5001. </example>
  5002. <p><b>See also:</b><br/>
  5003. <link topic="setup_architecturesallowed">ArchitecturesAllowed</link></p>
  5004. </body>
  5005. </setuptopic>
  5006. <setuptopic directive="TerminalServicesAware">
  5007. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  5008. <setupdefault><tt>yes</tt></setupdefault>
  5009. <body>
  5010. <p>Specifies whether the compiler should set the "Terminal Services aware" flag in the headers of the Setup and Uninstall programs.</p>
  5011. <p>Most importantly, the "Terminal Services aware" flag affects the behavior of the {win} constant (and <link topic="isxfunc_GetWinDir">GetWinDir</link> support function) on servers with Terminal Services installed in application mode.</p>
  5012. <p>When the flag is set, {win} will consistently return the system's real Windows directory, typically "C:\WINDOWS", just as on systems that do not have Terminal Services installed.</p>
  5013. <p>When the flag is not set, Windows runs the program in compatibility mode, where {win} may return either the real Windows directory or a user-specific Windows directory, such as "C:\Documents and Settings\&lt;user name&gt;\WINDOWS". Which one you get depends on the name of the program's EXE file and how it is launched. If the program is named setup.exe or install.exe, or if it is launched from the <i>Add/Remove Programs</i> Control Panel applet, then Windows will put the system in "install mode", which effectively makes the program (and all other programs running in the session) behave as if the "Terminal Services aware" flag were set. Otherwise, the program is treated as a legacy application and is given a private Windows directory. (This is true even if the user running the program has full administrative privileges.)</p>
  5014. <p>Because the behavior that results from setting <tt>TerminalServicesAware</tt> to <tt>no</tt> is inconsistent and hard to predict, it is recommended that you use the default setting of <tt>yes</tt>. Only use <tt>no</tt> as a temporary fix if you encounter troubles on systems with Terminal Services after upgrading from a previous Inno Setup version.</p>
  5015. </body>
  5016. </setuptopic>
  5017. <setuptopic directive="DEPCompatible">
  5018. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  5019. <setupdefault><tt>yes</tt></setupdefault>
  5020. <body>
  5021. <p>Specifies whether the compiler should set the "NX Compatible" flag in the headers of the Setup and Uninstall programs to mark them compatible with data execution prevention (DEP).</p>
  5022. <p>Setting this to <tt>no</tt> might be needed if you're using a buggy third-party DLL from [Code].</p>
  5023. </body>
  5024. </setuptopic>
  5025. <setuptopic directive="ASLRCompatible">
  5026. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  5027. <setupdefault><tt>yes</tt></setupdefault>
  5028. <body>
  5029. <p>Specifies whether the compiler should set the "Dynamic Base" flag in the headers of the Setup and Uninstall programs.</p>
  5030. </body>
  5031. </setuptopic>
  5032. <setuptopic directive="SetupLogging">
  5033. <keyword value="logging" />
  5034. <keyword value="/LOG" />
  5035. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  5036. <setupdefault><tt>no</tt></setupdefault>
  5037. <body>
  5038. <p>If set to <tt>yes</tt>, Setup will always create a log file. Equivalent to passing <link topic="setupcmdline" anchor="LOG">/LOG</link> on the command line.</p>
  5039. <p><b>See also:</b><br/>
  5040. <link topic="setup_uninstalllogging">UninstallLogging</link></p>
  5041. </body>
  5042. </setuptopic>
  5043. <setuptopic directive="SignedUninstaller">
  5044. <keyword value="signature" />
  5045. <keyword value="digital signature" />
  5046. <keyword value="code signing" />
  5047. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  5048. <setupdefault><tt>yes</tt> if a <link topic="setup_signtool">SignTool</link> is set, <tt>no</tt> otherwise</setupdefault>
  5049. <body>
  5050. <p>Specifies whether the uninstaller program (unins???.exe) should be deployed with a digital signature attached. When the uninstaller has a valid digital signature, users will not see an "unknown publisher" warning when launching it.</p>
  5051. <p>When set to <tt>yes</tt>, any temporary self-copies used by Setup are digitally signed too.</p>
  5052. <p>If the <link topic="setup_signtool">SignTool</link> directive is set, the file will be signed automatically on the fly. Otherwise:</p>
  5053. <ul>
  5054. <li>The first time you compile a script with <tt>SignedUninstaller</tt> set to <tt>yes</tt>, a uniquely-named non-temporary copy of the uninstaller EXE file will be created in the directory specified by the <link topic="setup_signeduninstallerdir">SignedUninstallerDir</link> directive (which defaults to the <link topic="setup_outputdir">output directory</link>).</li>
  5055. <li>You will then be prompted to attach a digital signature to this file using an external code-signing tool (such as Microsoft's <tt>signtool.exe</tt>).</li>
  5056. <li>On subsequent compiles, the signature from the file will be embedded into the compiled installations' uninstallers, without prompting you.</li>
  5057. <li>If you delete the file, you will be prompted again if necessary on the next compile.</li>
  5058. <li>Upgrading to a newer version of Inno Setup, or changing certain [Setup] section directives that affect the contents of the uninstaller EXE file (such as <link topic="setup_setupiconfile">SetupIconFile</link> and VersionInfo directives), will cause a new file to be created under a different name.</li>
  5059. </ul>
  5060. <p>When the uninstaller has a digital signature, Setup will write the messages from the active language into a separate file (unins???.msg). It cannot embed the messages into the EXE file because doing so would invalidate the digital signature.</p>
  5061. <p>Details on obtaining signing certificates and using code-signing tools are beyond the scope of this documentation.</p>
  5062. </body>
  5063. </setuptopic>
  5064. <setuptopic directive="SignedUninstallerDir">
  5065. <setupdefault><link topic="setup_outputdir">OutputDir</link></setupdefault>
  5066. <body>
  5067. <p>Specifies the directory in which <link topic="setup_signeduninstaller">signed uninstaller</link> files should be stored. By default, such files are stored in the <link topic="setup_outputdir">output directory</link>.</p>
  5068. <p>Separate script files may share the same <tt>SignedUninstallerDir</tt> setting. By setting up a common directory to hold signed uninstaller files, you won't have to re-sign the uninstaller each time you compile a new script file with a distinct <tt>OutputDir</tt> setting.</p>
  5069. <p>If <tt>SignedUninstallerDir</tt> is not a fully-qualified pathname, it will be treated as being relative to <tt>SourceDir</tt>. Setting <tt>SignedUninstallerDir</tt> to <tt>.</tt> will result in the files being placed in the source directory.</p>
  5070. <example><pre>SignedUninstallerDir=c:\signeduninstallers</pre></example>
  5071. </body>
  5072. </setuptopic>
  5073. <setuptopic directive="SignTool">
  5074. <keyword value="signature" />
  5075. <keyword value="digital signature" />
  5076. <keyword value="code signing" />
  5077. <setupvalid>A name followed by zero or more parameters, space separated</setupvalid>
  5078. <body>
  5079. <p>Specifies the name and parameters of the Sign Tool to be used to digitally sign:</p>
  5080. <ul appearance="compact">
  5081. <li>Setup</li>
  5082. <li>Uninstall if <link topic="setup_signeduninstaller">SignedUninstaller</link> is set to <tt>yes</tt></li>
  5083. <li>Original source files if the <link topic="filessection">[Files]</link> section's <tt>sign</tt> or <tt>signonce</tt> flag is used</li>
  5084. </ul>
  5085. <p>When Setup has a valid digital signature, users will not see an "unidentified program" warning when launching it.</p>
  5086. <p>The specified Sign Tool name and its command have to be defined in the Compiler IDE (via the <i>Tools | Configure Sign Tools...</i> menu) or on the <link topic="compilercmdline">compiler command line</link> (via the "/S" parameter), else an error will occur.</p>
  5087. <p>The following special sequences may be used in Sign Tool parameters and commands:</p>
  5088. <p><tt>$f</tt>, replaced by the quoted file name of the file to be signed. (required)</p>
  5089. <p><tt>$p</tt>, replaced by the Sign Tool parameters.</p>
  5090. <p><tt>$q</tt>, replaced by a quote, useful for defining a Sign Tool which contains quotes from the command line.</p>
  5091. <p><tt>$$</tt>, replaced by a single <tt>$</tt> character.</p>
  5092. <example>
  5093. <p>Assume the following Sign Tools have been defined in the Compiler IDE:</p>
  5094. <pre>
  5095. mystandard=signtool.exe sign /a /n $qMy Common Name$q /t http://timestamp.comodoca.com/authenticode /d $qMy Program$q $f
  5096. mycustom=signtool.exe $p
  5097. byparam=$p
  5098. </pre>
  5099. <p>then some examples would be:</p>
  5100. <pre>
  5101. [Setup]
  5102. SignTool=mystandard
  5103. [Setup]
  5104. SignTool=mycustom sign /a /n $qMy Common Name$q /t http://timestamp.comodoca.com/authenticode /d $qMy Program$q $f
  5105. [Setup]
  5106. SignTool=byparam signtool.exe sign /a /n $qMy Common Name$q /t http://timestamp.comodoca.com/authenticode /d $qMy Program$q $f
  5107. </pre>
  5108. <p>The Setup section may also list multiple SignTool directives which will be executed in order of appearance. This can be used to dual sign (SHA1 &amp; SHA256) Setup and Uninstall:</p>
  5109. <pre>
  5110. [Setup]
  5111. SignTool=mycustom sign /a /n $qMy Common Name$q /fd sha1 /t http://timestamp.comodoca.com/authenticode /d $qMy Program$q $f
  5112. ;the /as parameter in the following SignTool requires a recent signtool.exe version and a SHA256 (SHA-2) certificate
  5113. SignTool=mycustom sign /a /n $qMy Common Name$q /as /fd sha256 /td sha256 /tr http://timestamp.comodoca.com/rfc3161 /d $qMy Program$q $f
  5114. </pre>
  5115. <p>Note: for security reasons you should give a unique name to any Sign Tool set to <tt>$p</tt>, and not use a <tt>byparam</tt> name copied from this example. Consider what happens if you #include a third-party file that says:</p>
  5116. <pre>
  5117. [Setup]
  5118. SignTool=byparam format c:
  5119. </pre>
  5120. </example>
  5121. <p>Further details on obtaining signing certificates and using code-signing tools are beyond the scope of this documentation.</p>
  5122. <p><i>Note:</i> If you use a Sign Tool and your Setup contains a large amount of data, it is recommended that you enable <link topic="setup_diskspanning">Disk spanning</link> with <link topic="setup_diskslicesize">DiskSliceSize</link> set to <tt>max</tt>. If you don't do this, the user might experience a long delay after starting Setup caused by Windows verifying the digital signature against all your data. There should be no security reduction from using disk spanning in practice: all files extracted from the unsigned .bin files undergo SHA-1 verification (provided <tt>dontverifychecksum</tt> isn't used). The SHA-1 hashes for this (along with all other metadata) are kept inside Setup's EXE, which is protected by the digital signature.</p>
  5123. <p><b>See also:</b><br/>
  5124. <link topic="setup_signtoolminimumtimebetween">SignToolMinimumTimeBetween</link><br/>
  5125. <link topic="setup_signtoolretrycount">SignToolRetryCount</link><br/>
  5126. <link topic="setup_signtoolrunminimized">SignToolRunMinimized</link></p>
  5127. </body>
  5128. </setuptopic>
  5129. <setuptopic directive="SignToolMinimumTimeBetween">
  5130. <keyword value="signature" />
  5131. <keyword value="digital signature" />
  5132. <keyword value="code signing" />
  5133. <setupdefault><tt>0</tt></setupdefault>
  5134. <body>
  5135. <p>If not set to 0, specifies the minimum number of milliseconds that should have elapsed between consecutive digital signing actions by the compiler. For example, if set to 5000 then the compiler will perform 1 digital signing per 5 seconds at most. Can be used to avoid being rejected by rate limiting timestamp services.</p>
  5136. <p><b>See also:</b><br/>
  5137. <link topic="setup_signtool">SignTool</link></p>
  5138. </body>
  5139. </setuptopic>
  5140. <setuptopic directive="SignToolRetryCount">
  5141. <keyword value="signature" />
  5142. <keyword value="digital signature" />
  5143. <keyword value="code signing" />
  5144. <setupdefault><tt>2</tt></setupdefault>
  5145. <body>
  5146. <p>Specifies the number of times the compiler should automatically retry digital signing on any errors.</p>
  5147. <p><b>See also:</b><br/>
  5148. <link topic="setup_signtool">SignTool</link><br/>
  5149. <link topic="setup_signtoolretrydelay">SignToolRetryDelay</link></p>
  5150. </body>
  5151. </setuptopic>
  5152. <setuptopic directive="SignToolRetryDelay">
  5153. <keyword value="signature" />
  5154. <keyword value="digital signature" />
  5155. <keyword value="code signing" />
  5156. <setupdefault><tt>500</tt></setupdefault>
  5157. <body>
  5158. <p>Specifies the number of milliseconds the compiler should wait before any automatic digital signing retries specified by <link topic="setup_signtoolretrycount">SignToolRetryCount</link>.</p>
  5159. <p><b>See also:</b><br/>
  5160. <link topic="setup_signtool">SignTool</link><br/>
  5161. <link topic="setup_signtoolretrycount">SignToolRetryCount</link></p>
  5162. </body>
  5163. </setuptopic>
  5164. <setuptopic directive="SignToolRunMinimized">
  5165. <keyword value="signature" />
  5166. <keyword value="digital signature" />
  5167. <keyword value="code signing" />
  5168. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  5169. <setupdefault><tt>no</tt></setupdefault>
  5170. <body>
  5171. <p>When set to <tt>yes</tt>, the compiler will run Sign Tools in a minimized window. Has no effect if the sign tool is a console program.</p>
  5172. <p><b>See also:</b><br/>
  5173. <link topic="setup_signtool">SignTool</link></p>
  5174. </body>
  5175. </setuptopic>
  5176. <setuptopic directive="LZMAAlgorithm">
  5177. <setupvalid><tt>0</tt> or <tt>1</tt></setupvalid>
  5178. <setupdefault><tt>0</tt> if the <link topic="setup_compression">LZMA compression level</link> is set to <tt>fast</tt><br />
  5179. <tt>1</tt> otherwise</setupdefault>
  5180. <body>
  5181. <p>Controls the algorithm used by the LZMA and LZMA2 compressors.</p>
  5182. <p>A value of <tt>0</tt> enables the fast algorithm.</p>
  5183. <p>A value of <tt>1</tt> enables the normal algorithm.</p>
  5184. </body>
  5185. </setuptopic>
  5186. <setuptopic directive="LZMABlockSize">
  5187. <setupvalid><tt>1024</tt> through <tt>262144</tt></setupvalid>
  5188. <setupdefault>4 * <link topic="setup_lzmadictionarysize">LZMADictionarySize</link> with a minimum of 1024 and a maximum of 262144</setupdefault>
  5189. <body>
  5190. <p>Controls the block size used by the LZMA2 compressor, in kilobytes, when <link topic="setup_lzmanumblockthreads">LZMANumBlockThreads</link> is set to <tt>2</tt> or higher.</p>
  5191. <p>Note that setting this too high can negate the benefits of using multiple block threads. Typically, the block size should be no more than the total size of your data divided by the number of block threads.</p>
  5192. <p><b>See also:</b><br/>
  5193. <link topic="setup_lzmadictionarysize">LZMADictionarySize</link><br/>
  5194. <link topic="setup_lzmanumblockthreads">LZMANumBlockThreads</link></p>
  5195. </body>
  5196. </setuptopic>
  5197. <setuptopic directive="LZMADictionarySize">
  5198. <setupvalid><tt>4</tt> through <tt>131072</tt> (by default)<br />
  5199. <tt>4</tt> through <tt>1048576</tt> if <link topic="setup_lzmauseseparateprocess">LZMAUseSeparateProcess</link> is set to <tt>yes</tt> and running on 64-bit Windows (x64)</setupvalid>
  5200. <setupdefault><tt>32</tt> if the <link topic="setup_compression">LZMA compression level</link> is set to <tt>fast</tt><br />
  5201. <tt>2048</tt> if the LZMA compression level is set to <tt>normal</tt><br />
  5202. <tt>8192</tt> if the LZMA compression level is set to <tt>max</tt><br />
  5203. <tt>32768</tt> if the LZMA compression level is set to <tt>ultra</tt><br />
  5204. <tt>65536</tt> if the LZMA compression level is set to <tt>ultra64</tt></setupdefault>
  5205. <body>
  5206. <p>Controls the dictionary size used by the LZMA and LZMA2 compressors, in kilobytes. A larger dictionary size can provide a better compression ratio at the expense of compression speed and memory requirements.</p>
  5207. <p>Review the memory requirements listed in the <link topic="setup_compression">Compression</link> topic before using.</p>
  5208. <p>If an "Out of memory" error is seen after increasing the dictionary size, <link topic="setup_lzmauseseparateprocess">LZMAUseSeparateProcess</link> may need to be set.</p>
  5209. <p><b>See also:</b><br/>
  5210. <link topic="setup_lzmablocksize">LZMABlockSize</link></p>
  5211. </body>
  5212. </setuptopic>
  5213. <setuptopic directive="LZMAMatchFinder">
  5214. <setupvalid><tt>HC</tt> or <tt>BT</tt></setupvalid>
  5215. <setupdefault><tt>HC</tt> if the <link topic="setup_compression">LZMA compression level</link> is set to <tt>fast</tt><br />
  5216. <tt>BT</tt> otherwise</setupdefault>
  5217. <body>
  5218. <p>Controls the match finder method used by the LZMA and LZMA2 compressors.</p>
  5219. <p>A value of <tt>HC</tt> enables the Hash Chain method with 5 hash bytes.</p>
  5220. <p>A value of <tt>BT</tt> enables the Binary Tree method with 4 hash bytes.</p>
  5221. <p>The Binary Tree method can provide a better compression ratio at the expense of compression speed.</p>
  5222. </body>
  5223. </setuptopic>
  5224. <setuptopic directive="LZMANumBlockThreads">
  5225. <setupvalid><tt>1</tt> through <tt>256</tt></setupvalid>
  5226. <setupdefault><tt>1</tt></setupdefault>
  5227. <body>
  5228. <p>When compressing a large amount of data, the LZMA2 compressor has the ability to divide the data into "blocks" and compress two or more of these blocks in parallel through the use of additional threads (provided sufficient processor power is available). This directive specifies the number of threads to use -- that is, the maximum number of blocks that the LZMA2 compressor may compress in parallel.</p>
  5229. <p>The memory required during compression when multiple block threads are used is roughly:</p>
  5230. <indent><p>LZMANumBlockThreads * (<link topic="setup_compression">Normal memory usage</link> + (<link topic="setup_lzmablocksize">LZMABlockSize</link> * 2))</p></indent>
  5231. <p>Since LZMA2 (and LZMA) uses two threads for match-finding by default (see <link topic="setup_compressionthreads">CompressionThreads</link>), there ideally should be two processor cores available for each block thread. Thus, to see the maximum benefit from a value of <tt>2</tt>, four cores are needed.</p>
  5232. <p>Dividing the data into multiple blocks can reduce the compression ratio, as the compressor cannot find matches across blocks. Using a large <link topic="setup_lzmablocksize">block size</link> can help to mitigate this.</p>
  5233. <p>If an "Out of memory" error is seen when multiple block threads are enabled in combination with a compression level that uses a large dictionary size (such as <tt>ultra64</tt>), <link topic="setup_lzmauseseparateprocess">LZMAUseSeparateProcess</link> may need to be set.</p>
  5234. <p><b>See also:</b><br/>
  5235. <link topic="setup_lzmablocksize">LZMABlockSize</link></p>
  5236. </body>
  5237. </setuptopic>
  5238. <setuptopic directive="LZMANumFastBytes">
  5239. <setupvalid><tt>5</tt> through <tt>273</tt></setupvalid>
  5240. <setupdefault><tt>64</tt> if the <link topic="setup_compression">LZMA compression level</link> is set to <tt>max</tt>, <tt>ultra</tt>, or <tt>ultra64</tt><br />
  5241. <tt>32</tt> otherwise</setupdefault>
  5242. <body>
  5243. <p>Controls number of fast bytes used by the LZMA and LZMA2 compressors. A larger number of fast bytes can provide a better compression ratio at the expense of compression speed.</p>
  5244. </body>
  5245. </setuptopic>
  5246. <setuptopic directive="CloseApplications">
  5247. <setupvalid><tt>force</tt>, <link topic="yesnonotes"><tt>yes</tt>, or <tt>no</tt></link></setupvalid>
  5248. <setupdefault><tt>yes</tt></setupdefault>
  5249. <body>
  5250. <p>If set to <tt>yes</tt> or <tt>force</tt> and Setup is not running silently, Setup will pause on the <i>Preparing to Install</i> wizard page if it detects applications using files that need to be updated by the [Files] or [InstallDelete] section, showing the applications and asking the user if Setup should automatically close the applications and restart them after the installation has completed.</p>
  5251. <p>If set to <tt>yes</tt> or <tt>force</tt> and Setup is running silently, Setup will always close and restart such applications, unless told not to via the command line.</p>
  5252. <p>If set to <tt>force</tt> Setup will force close when closing applications, unless told not to via the command line. Use with care since this may cause the user to lose unsaved work.</p>
  5253. <p>Note: Setup uses Windows <extlink href="https://docs.microsoft.com/en-us/windows/win32/rstmgr/about-restart-manager">Restart Manager</extlink> to detect, close, and restart applications.</p>
  5254. <p><b>See also:</b><br/>
  5255. <link topic="setup_closeapplicationsfilter">CloseApplicationsFilter</link><br/>
  5256. <link topic="scriptevents" anchor="RegisterExtraCloseApplicationsResources">RegisterExtraCloseApplicationsResources</link><br/>
  5257. <link topic="setup_restartapplications">RestartApplications</link><br/>
  5258. <link topic="setup_appmutex">AppMutex</link></p>
  5259. </body>
  5260. </setuptopic>
  5261. <setuptopic directive="CloseApplicationsFilter">
  5262. <setupvalid>A list of file name wildcards, separated by commas</setupvalid>
  5263. <setupdefault><tt>*.exe,*.dll,*.chm</tt></setupdefault>
  5264. <body>
  5265. <p>Limits which [Files] and [InstallDelete] entries Setup will check for being in use. Only files matching one of the wildcards will be checked.</p>
  5266. <p>Setting this to <tt>*.*</tt> can provide better checking at the expense of speed.</p>
  5267. <p><b>See also:</b><br/>
  5268. <link topic="setup_closeapplications">CloseApplications</link><br/>
  5269. <link topic="setup_closeapplicationsfilterexcludes">CloseApplicationsFilterExcludes</link><br/>
  5270. <link topic="setup_restartapplications">RestartApplications</link></p>
  5271. </body>
  5272. </setuptopic>
  5273. <setuptopic directive="CloseApplicationsFilterExcludes">
  5274. <setupvalid>A list of file name wildcards, separated by commas</setupvalid>
  5275. <body>
  5276. <p>Limits which [Files] and [InstallDelete] entries Setup will check for being in use. Files matching one of the wildcards will not be checked even if they match <link topic="setup_closeapplicationsfilter">CloseApplicationsFilter</link>.</p>
  5277. <p>For example, to check all files except MyProg.exe:</p>
  5278. <example><pre>[Setup]
  5279. CloseApplicationsFilter=*.*
  5280. CloseApplicationsFilterExcludes=MyProg.exe</pre></example>
  5281. <p><b>See also:</b><br/>
  5282. <link topic="setup_closeapplications">CloseApplications</link><br/>
  5283. <link topic="setup_closeapplicationsfilter">CloseApplicationsFilter</link><br/>
  5284. <link topic="setup_restartapplications">RestartApplications</link></p>
  5285. </body>
  5286. </setuptopic>
  5287. <setuptopic directive="RestartApplications">
  5288. <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
  5289. <setupdefault><tt>yes</tt></setupdefault>
  5290. <body>
  5291. <p>When set to <tt>yes</tt> and <link topic="setup_closeapplications">CloseApplications</link> is also set to <tt>yes</tt>, Setup restarts the closed applications after the installation has completed.</p>
  5292. <p>Note: For Setup to be able to restart an application after the installation has completed, the application needs to be using the Windows <tt>RegisterApplicationRestart</tt> API function.</p>
  5293. <p><b>See also:</b><br/>
  5294. <link topic="setup_closeapplications">CloseApplications</link><br/>
  5295. <link topic="setup_closeapplicationsfilter">CloseApplicationsFilter</link></p>
  5296. </body>
  5297. </setuptopic>
  5298. <topic name="yesnonotes" title="Notes on &quot;yes&quot; and &quot;no&quot;">
  5299. <keyword value="Notes on &quot;yes&quot; and &quot;no&quot;" />
  5300. <body>
  5301. <p>For compatibility with previous Inno Setup versions, <tt>1</tt> and <tt>0</tt> may be used in place of <tt>yes</tt> and <tt>no</tt>, respectively.</p>
  5302. <p>Additionally, it allows <tt>true</tt> and <tt>false</tt> to be used in place of <tt>yes</tt> and <tt>no</tt>.</p>
  5303. </body>
  5304. </topic>
  5305. <setuptopic directive="LZMAUseSeparateProcess">
  5306. <setupvalid><link topic="yesnonotes"><tt>yes</tt>, <tt>no</tt></link>, or <tt>x86</tt></setupvalid>
  5307. <setupdefault><tt>no</tt></setupdefault>
  5308. <body>
  5309. <p>Controls whether LZMA compression is performed inside the main compiler process or in a separate process.</p>
  5310. <p>Using a separate process for LZMA compression allows the compressor to allocate larger amounts of memory, which makes it possible for higher <link topic="setup_lzmadictionarysize">LZMADictionarySize</link> and <link topic="setup_lzmanumblockthreads">LZMANumBlockThreads</link> settings to be used. Additionally, on 64-bit Windows (x64), a small increase in compression speed may be observed.</p>
  5311. <p>On 64-bit Windows (x64), there are no limitations on the amount of memory the compressor may use, as it runs inside a native 64-bit process. On 32-bit Windows, however, due to address space constraints, typically only about 1.5 GB is available for use by the compressor.</p>
  5312. <p>A value of <tt>yes</tt> enables the use of a 64-bit process on 64-bit Windows (x64), and a 32-bit process on 32-bit Windows.</p>
  5313. <p>A value of <tt>x86</tt> enables the use of a 32-bit process only (normally only useful for debugging purposes).</p>
  5314. <p>A value of <tt>no</tt> disables the use of a separate process for LZMA compression.</p>
  5315. <p>Note that this directive only affects the compression of files specified in the [Files] section; compression of Setup's internal structures is always performed inside the main compiler process.</p>
  5316. </body>
  5317. </setuptopic>
  5318. <topic name="appendnotes" title="Appending to Existing Uninstall Logs">
  5319. <keyword value="Appending to Existing Uninstall Logs" />
  5320. <body>
  5321. <p>When a new version of an application is installed over an existing version, instead of creating a new uninstall log file (unins???.dat), Setup will by default look for and append to an existing uninstall log file that belongs to the <link topic="sameappnotes">same application</link> and is in the same directory. This way, when the application is uninstalled, changes made by all the different installations will be undone (starting with the most recent installation).</p>
  5322. <p>The uninstaller will use the <link topic="messagessection">messages</link> from the most recent installation of the application. However, there is an exception: if an installation was built with an older version of Inno Setup that included an older version of the uninstaller than the existing one on the user's system, neither the existing uninstaller nor its messages will be replaced. In this case the uninstall log will still be appended to, though, since the file format is backward compatible.</p>
  5323. <p>The application name displayed in the uninstaller will be the same as the value of the <tt>[Setup]</tt> section directive <link topic="setup_appname">AppName</link> from the most recent installation, unless <link topic="setup_updateuninstalllogappname">UpdateUninstallLogAppName</link> is set to <tt>no</tt>.</p>
  5324. <p>To disable the uninstall log-appending feature set the <tt>[Setup]</tt> section directive <link topic="setup_uninstalllogmode">UninstallLogMode</link>.</p>
  5325. </body>
  5326. </topic>
  5327. <topic name="sameappnotes" title="Same Application">
  5328. <keyword value="Same Application" />
  5329. <body>
  5330. <p>"Same application" refers to two separate installation runs that share the same <link topic="setup_appid">AppId</link> setting (or if <tt>AppId</tt> is not set, the same <link topic="setup_appname">AppName</link> setting), and the same <link topic="admininstallmode">administrative or non administrative install mode</link>, and the same <link topic="32vs64bitinstalls">32-bit or 64-bit install mode</link>*. Two of such installation runs will usually lead to only one actual installation of the files.</p>
  5331. <p>(* = This requirement does not apply to any same application information retrieved from the registry in non administrative install mode since the HKEY_CURRENT_USER key is shared between the 32-bit and 64-bit registry. It does however always apply to the uninstall log since the 32-bit and 64-bit uninstall logs are kept separate, even in non administrative install mode. In practice this means you should avoid offering both a 32-bit and a 64-bit non administrative installer to your users without giving these installers different <tt>AppId</tt>, <tt>DefaultDirName</tt>, <tt>DefaultGroupName</tt>, and <tt>UninstallDisplayName</tt> settings.)</p>
  5332. <p><b>See also:</b><br/>
  5333. <link topic="sidebyside">Side-by-side installation</link></p>
  5334. </body>
  5335. </topic>
  5336. <topic name="sidebyside" title="Side-by-side installation">
  5337. <keyword value="Side-by-side installation" />
  5338. <body>
  5339. <p>"Side-by-side installation" refers to two separate installation runs that share the same <link topic="setup_appid">AppId</link> setting (or if <tt>AppId</tt> is not set, the same <link topic="setup_appname">AppName</link> setting) but not the other <link topic="sameappnotes">"Same application"</link> requirements. Two of such installation runs will usually lead to two actual installations of the files. To avoid entries with identical names in the <i>Add/Remove Programs</i> Control Panel applet Setup will automatically mark the new entry with a text like "Current user" or "64-bit" when necessary during a side-by-side installation.</p>
  5340. </body>
  5341. </topic>
  5342. <topic name="sourcedirectorynotes" title="Source Directory">
  5343. <keyword value="Source Directory" />
  5344. <body>
  5345. <p>By default, the compiler expects to find files referenced in the script's <tt>[Files]</tt> section <tt>Source</tt> parameters, and files referenced in the <tt>[Setup]</tt> section, under the same directory the script file is located if they do not contain fully qualified pathnames. To specify a different source directory, create a <link topic="setup_sourcedir">SourceDir</link> directive in the script's <tt>[Setup]</tt> section.</p>
  5346. </body>
  5347. </topic>
  5348. <topic name="buildnumnotes" title="Using Build Number and/or Service Pack Levels">
  5349. <keyword value="Using Build Number and/or Service Pack Levels" />
  5350. <body>
  5351. <p>The versions specified in <tt>MinVersion</tt> and <tt>OnlyBelowVersion</tt> can optionally include build numbers and/or service pack levels.</p>
  5352. <examples>
  5353. <pre>
  5354. 6.1sp1
  5355. 10.0.22000
  5356. </pre>
  5357. </examples>
  5358. <p>If a build number is not specified or is zero, Setup will not check the system's build number.</p>
  5359. <p>If a service pack level is not specified or is zero, Setup will not check the system's service pack level.</p>
  5360. <p>When a service pack level is specified, Setup will only compare it against the system's service pack level if the specified major and minor versions match the system's version. For example, if <tt>MinVersion</tt> specifies <tt>6.1sp1</tt>, Setup will only check for SP1 on Windows 7 and Windows Server 2008 R2 (6.1) systems.</p>
  5361. <p>In an <tt>OnlyBelowVersion</tt> parameter, if the specified version matches the system's version, then Setup will normally consider the system's version to be too high. However, when a service pack level is specified, the specified version is allowed to match the system's version.<!-- For example, on Windows 2000 SP4, values of <tt>5.0</tt> and <tt>5.0.2195</tt> will fail the <tt>OnlyBelowVersion</tt> test, but <tt>5.0sp5</tt> and <tt>5.0.2195sp5</tt> will pass (as SP4 &lt; <tt>sp5</tt>). --></p>
  5362. </body>
  5363. </topic>
  5364. <topic name="winvernotes" title="Windows Versions">
  5365. <keyword value="Windows Versions" />
  5366. <body>
  5367. <table>
  5368. <tr><td>6.1.7600</td><td>Windows 7<br/>or Windows Server 2008 R2</td></tr>
  5369. <tr><td>6.1.7601</td><td>Windows 7 with Service Pack 1<br/>or Windows Server 2008 R2 with Service Pack 1</td></tr>
  5370. <tr><td>6.2.9200</td><td>Windows 8<br/>or Windows Server 2012</td></tr>
  5371. <tr><td>6.3.9200</td><td>Windows 8.1<br/>or Windows Server 2012 R2</td></tr>
  5372. <tr><td>6.3.9600</td><td>Windows 8.1 with Update 1</td></tr>
  5373. <tr><td>10.0.10240</td><td>Windows 10 Version 1507</td></tr>
  5374. <tr><td>10.0.10586</td><td>Windows 10 Version 1511 (November Update)</td></tr>
  5375. <tr><td>10.0.14393</td><td>Windows 10 Version 1607 (Anniversary Update)<br/>or Windows Server 2016</td></tr>
  5376. <tr><td>10.0.15063</td><td>Windows 10 Version 1703 (Creators Update)</td></tr>
  5377. <tr><td>10.0.16299</td><td>Windows 10 Version 1709 (Fall Creators Update)</td></tr>
  5378. <tr><td>10.0.17134</td><td>Windows 10 Version 1803 (April 2018 Update)</td></tr>
  5379. <tr><td>10.0.17763</td><td>Windows 10 Version 1809 (October 2018 Update)<br/>or Windows Server 2019</td></tr>
  5380. <tr><td>10.0.18362</td><td>Windows 10 Version 1903 (May 2019 Update)</td></tr>
  5381. <tr><td>10.0.18363</td><td>Windows 10 Version 1909 (November 2019 Update)</td></tr>
  5382. <tr><td>10.0.19041</td><td>Windows 10 Version 2004 (May 2020 Update)</td></tr>
  5383. <tr><td>10.0.19042</td><td>Windows 10 Version 20H2 (October 2020 Update)</td></tr>
  5384. <tr><td>10.0.19043</td><td>Windows 10 Version 21H1 (May 2021 Update)</td></tr>
  5385. <tr><td>10.0.19044</td><td>Windows 10 Version 21H2 (November 2021 Update)</td></tr>
  5386. <tr><td>10.0.19045</td><td>Windows 10 Version 22H2 (2022 Update)</td></tr>
  5387. <tr><td>10.0.20348</td><td>Windows Server 2022 Version 21H2</td></tr>
  5388. <tr><td>10.0.22000</td><td>Windows 11 Version 21H2 (original release)</td></tr>
  5389. <tr><td>10.0.22621</td><td>Windows 11 Version 22H2 (2022 Update)</td></tr>
  5390. <tr><td>10.0.22631</td><td>Windows 11 Version 23H2 (2023 Update)</td></tr>
  5391. <tr><td>10.0.26100</td><td>Windows 11 Version 24H2 (2024 Update)</td></tr>
  5392. </table>
  5393. <p>Note that except for Windows 11 there is normally no need to specify the build numbers (i.e., you may simply use "6.2" for Windows 8).</p>
  5394. </body>
  5395. </topic>
  5396. <topic name="usergroupids" title="User &amp; Group Identifiers">
  5397. <keyword value="User &amp; Group Identifiers" />
  5398. <body>
  5399. <table>
  5400. <tr><td><tt>admins</tt></td><td>Administrators group</td></tr>
  5401. <tr><td><tt>authusers</tt></td><td>Authenticated Users group</td></tr>
  5402. <tr><td><tt>creatorowner</tt></td><td>Creator Owner</td></tr>
  5403. <tr><td><tt>everyone</tt></td><td>Everyone group</td></tr>
  5404. <tr><td><tt>guests</tt></td><td>Guests group</td></tr>
  5405. <tr><td><tt>iisiusrs</tt></td><td>IIS users group</td></tr>
  5406. <tr><td><tt>networkservice</tt></td><td>Network service account</td></tr>
  5407. <tr><td><tt>service</tt></td><td>Local service account</td></tr>
  5408. <tr><td><tt>system</tt></td><td>Local system account</td></tr>
  5409. <tr><td><tt>users</tt></td><td>Users group</td></tr>
  5410. </table>
  5411. </body>
  5412. </topic>
  5413. </ishelp>