+ All Categories
Home > Documents > Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and...

Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and...

Date post: 15-Jul-2020
Category:
Upload: others
View: 3 times
Download: 0 times
Share this document with a friend
629
Introduction to WiX What is WiX? The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database files (MSI and MSM). The WiX tools model the traditional compile and link model used to create executables from source code. For WiX, source code is written in xml files. These files are validated against a schema, wix.xsd, then processed by a preprocessor, compiler, and linker to create the desired result. The WiX platform has been designed to allow for the easy creation of multiple Windows Installer databases from a small set of source files. Schema Overview Authoring Tools WiX Files Building WiX Blogs Getting Help
Transcript
Page 1: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

IntroductiontoWiX

WhatisWiX?TheWindowsInstallerXML(WiX)platformisasetoftoolsandspecificationsthatallowyoutoeasilycreateWindowsInstallerdatabasefiles(MSIandMSM).TheWiXtoolsmodelthetraditionalcompileandlinkmodelusedtocreateexecutablesfromsourcecode.ForWiX,sourcecodeiswritteninxmlfiles.Thesefilesarevalidatedagainstaschema,wix.xsd,thenprocessedbyapreprocessor,compiler,andlinkertocreatethedesiredresult.TheWiXplatformhasbeendesignedtoallowfortheeasycreationofmultipleWindowsInstallerdatabasesfromasmallsetofsourcefiles.

SchemaOverviewAuthoringToolsWiXFilesBuildingWiXBlogsGettingHelp

Page 2: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WindowsInstallerXMLOverview

IntroductionWindowsInstallerXML,orWiX,providesaschemathatdescribesaWindowsInstallerdatabase(MSIorMSM),aswellastoolstoconverttheXMLdescriptionfilesintoausabledatabase.Thesecondversionoftheschema,wix.xsd,addsextracontenttoeasethecreationofmultipleWindowsInstallerdatabasesfromasinglesetofXMLdocuments.TheWiXtoolsmodelthetraditionalcompileandlinkmodelusedtocreateexecutablesfromsourcecode.ThisdocumentprovidesabriefintroductionhowtousethetoolstocompileandlinkWiXsourcecodeintoWindowsInstallerdatabases.

Note:ThisdocumentassumesyouhaveaworkingknowledgeoftheWindowsInstallerdatabaseformat.

Page 3: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

.wxs&.wixobj–WindowsInstallerXmlFilesA.wxsfileistheextensionusedbyallsourcefilesintheWindowsInstallerXMLsystem.These.wxsfilesareanalogousto.cppfilesforC++or.csfilesforC#.The.wxsfilesarepreprocessedthencompiledintoWiXobjectfileswhichusetheextension.wixobj.Whenallofthesourcefileshavebeencompiledintoobjectfiles,thelinkerisusedtocollecttheobjectfilestogetherandcreateaWindowsInstallerdatabase.Moredetailsonthecompilerandlinkerareprovidedlaterinthisdocument.

Page 4: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Structureof.wxsfilesAll.wxsfilesarewell-formedXMLdocumentsthatcontainasinglerootelementnamed<Wix/>.TherestofthesourcefilemayormaynotadheretotheWiXschemabeforepreprocessing.However,afterbeingpreprocessedallsourcefilesmustconformtotheWiXschemaortheywillfailtocompile.

Theroot<Wix/>elementcancontainatmostoneofthefollowingtwoelementsaschildren:<Product/>,<Module/>.However,therecanbeanunboundednumber<Fragment/>elementsaschildrenoftheroot<Wix/>element.Whenasourcefileiscompiledintoanobjectfile,eachinstanceoftheseelementscreatesanewsectionintheobjectfile.Therefore,thesethreeelementsareoftenreferredtoassectionelements.

Itisimportanttonote,thattherecanbeonlyone<Product/>or<Module/>sectionelementpersourcefilebecausetheyarecompiledintospecialsectionscalledentrysections.Entrysectionsareusedasstartingpointsinthelinkingprocess.Sections,entrysections,andtheentirelinkingprocessaredescribedingreaterdetaillaterinthisdocument.

ThechildrenofthesectionelementsdefinethecontentsoftheWindowsInstallerdatabase.You’llrecognize<Property/>elementsthatmaptoentriesinthePropertytableandahierarchyof<Directory/>elementsthatbuilduptheDirectorytable.Mostelementscontainan“Id”attributethatwillactastheprimarykeyfortheresultingrowintheWindowsInstallerdatabase.Note,inthefirstreleaseoftheWiXschematheprimarykeywasrepresentedbythetextoftheelement.Thislocationfortheprimarykeywasundesirableforseveralreasonsandhasbeenmovedtothe“Id”attribute.Inmostcases,the“Id”attributealsodefinesasymbolwhenthesourcefileiscompiledintoanobjectfile.

Page 5: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

SymbolsandreferencesEverysymbolinanobjectfileiscomposedoftheelementnameplustheuniqueidentifierfromthe“Id”attribute.Symbolsareimportantbecausetheycanbereferencedbyothersectionsfromanysourcefile.Forexample,a<Directory/>structurecanbedefinedina<Fragment/>inonesourcefileanda<Component/>canbedefinedunderadifferentsourcefile’s<Fragment/>.Bymakingthe<DirectoryRef/>elementaparentofthe<Component/>anexplicitreferenceiscreatedthatreferencesthesymboldefinedbya<Directory/>inthefirstsourcefile.ThelinkeristhenresponsibleforstitchingthesymbolandthereferencetogetherinasingleWindowsInstallerdatabase.Insomecases,implicitreferencesaregeneratedbythecompilerwhileprocessingasourcefile.Theseimplicitreferencesbehaveidenticallytoexplicitreferences.

Inadditiontothesimplereferencesdescribedabove,WiXsupportsspecificcomplexreferences.Complexreferencesareusedincaseswherethelinkermustgenerateextrainformationtolinkthesymbolandreferencetogether.TheperfectexampleofacomplexreferenceisintheWindowsInstaller’sFeature/Componentrelationship.Whena<Component/>isreferencedexplicitlybya<Feature/>througha<ComponentRef/>element,thelinkermusttakethe<Feature/>’ssymbolandthe<Component/>’ssymbolandaddanentrytotheFeatureComponentstable.

ThisFeature/Componentrelationshipisevenmorecomplexbecausecertainelementsina<Component/>,forexample<Shortcut/>,havereferencesbacktotheprimaryFeatureassociatedwiththeComponent.Thesereferencesfromachildelementofa<Component/>arecalledreversereferencesorsometimesfeaturebacklinks.Processingcomplexreferencesandreversereferencesisprobablythemostdifficultworkthelinkerhastodo.

NotetheprocessofdefiningandreferencingsymbolsisnewtothesecondversionoftheWiXtoolset.Previously,itwasnecessarytopackageComponentsintoMergeModulesandusethemergeprocesstodorudimentarysymbollinking.Thisnewsystemfordefiningsymbolsismoreflexible,andavoidstheoverheadofensuringeachMergeModule’s

Page 6: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

tokensareunique.

Page 7: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Structureofthe.wixobjfileA.wixobjfileiscreatedbythecompilerforeachsourcefilecompiled.The.wixobjfileisanXMLdocumentthatfollowstheobjects.xsdschemadefinedintheWiXproject.Asstatedabovethe.wixobjfilecontainsoneormoresectionsthat,inturn,containsymbolsandreferencestoothersymbols.

Whilethesymbolsandreferencesarearguablythemostimportantpiecesofdatainthe.wixobjfile,theyarerarelythebulkoftheinformation.Instead,themajorityofmost.wixobjfilesarecomposedof<table/>,<row/>and<field/>elementsthatprovidetherawdatatobeplacedintheWindowsInstallerdatabase.Inmanycases,thelinkerwillnotonlyprocessthesymbolsandreferencesbutalsouseandupdatetherawdatafromthe.wixobjfile.

Itisinterestingtonotethattheobjectfileschema,objects.xsd,usescamelcasingwherethesourcefileschema,wix.xsd,usesPascalcasing.Thiswasaconsciouschoicetoindicatethattheobjectfilesarenotintendedtobeeditedbytheuser.Infact,allschemasthatdefinesdatatobeprocessedonlybytheWiXtoolsusecamelcasing.

Page 8: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

candle–WindowsInstallerXMLCompilerWindowsInstallerXMLcompilerisexposedbycandle.exe.candleisresponsibleforpreprocessingtheinput.wxsfilesintovalidwell-formedXMLdocumentsagainsttheWiXschema,wix.xsd.Then,eachpost-processedsourcefileiscompiledintoa.wixobjfile.

Thecompilationprocessisrelativelystraightforward.TheWiXschemalendsitselftoasimplerecursivedescentparser.Thecompilerprocesseseachelementinturncreatingnewsymbols,calculatingthenecessaryreferencesandgeneratingtherawdataforthe.wixobjfile.

Thesecondversionofcandleisnotsignificantlydifferentfromthefirstimplementation.Anychangeswereeithermadetoenablethenewsymbol/referencelinkingorbasedonfeedbackfromcustomers.Someofthedifferencesbetweenversionsinclude:thenewobjectfileformatisXMLinsteadofMSI,modularizationofprimarykeysnowhappensatlinktime,andbinarystreamsareimportedatlinktime.

Page 9: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

light–WindowsInstallerXMLLinkerTheWindowsInstallerXMLlinkerisexposedbylight.exe.lightisresponsibleforprocessingoneormore.wixobjfiles,retrievingmetadatafromvariousexternalfilesandcreatingaWindowsInstallerdatabase(MSIorMSM).Whennecessary,lightwillalsocreatecabinetsandembedstreamsinthecreatedWindowsInstallerdatabase.

Thelinkerbeginsbysearchingthesetofobjectfilesprovidedonthecommandlinetofindtheentrysection.Ifmorethanoneentrysectionisfound,lightfailswithanerror.ThisfailureisnecessarybecausetheentrysectiondefineswhattypeofWindowsInstallerdatabaseisbeingcreated,aMSI(<Product/>)orMSM(<Module/>).Itisnotpossibletocreatetwodatabasesfromasinglelinkoperation.

Whilethelinkerwasdeterminingtheentrysection,thesymbolsdefinedineachobjectfilearestoredinasymboltable.Aftertheentrysectionisfound,thelinkerattemptstoresolveallofthereferencesinthesectionbyfindingsymbolsinthesymboltable.Whenasymbolisfoundinadifferentsection,thelinkerrecursivelyattemptstoresolvereferencesinthenewsection.Thisprocessofgatheringthesectionsnecessarytoresolveallofthereferencescontinuesuntilallreferencesaresatisfied.Ifasymbolcannotbefoundinanyoftheprovidedobjectfiles,thelinkerabortsprocessingwithanerrorindicatingtheundefinedsymbol.

Afterallofthesectionshavebeenfound,complexandreversereferencesareprocessed.ThisprocessingiswhereComponentsandMergeModulesarehookedtotheirparentFeaturesor,inthecaseofMergeModules,ComponentsareaddedtotheModuleComponentstable.ThereversereferenceprocessingaddstheappropriateFeatureidentifiertothenecessaryfieldsforelementslike,Shortcut,Class,andTypeLib.

Onceallofthereferencesareresolved,thelinkerprocessesalloftherowsretrievingthelanguage,version,andhashforreferencedfiles,calculatingthemedialayout,andincludingthenecessarystandardactionstoensureasuccessfulinstallationsequence.Thispartoftheprocessingtypicallyendsupgeneratingadditionalrowsthatgetadded

Page 10: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

associatedwiththeentrysectiontoensuretheyareincludedinthefinalWindowsInstallerdatabase.

Finally,lightworksthroughthemechanicsofgeneratingIDTfilesandimportingthemintotheWindowsInstallerdatabase.Afterthedatabaseisfullycreated,thefinalpostprocessingisdonetomergeinanyMergeModulesandcreateacabinetifnecessary.TheresultisafullyfunctionalWindowsInstallerdatabase.

Page 11: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

AuthoringAuthoringistheprocessofwritingtheWiXsourcefilesnecessarytocreateaWindowsInstallerdatabase.Thesourcefiles,whichusuallyhavetheextension.wxs,areXMLdocumentsthatmustconformtotheWiXschema(foundinwix.xsd).

GettingStartedWiXStandardCustomActionsWiXOnlineTutorialExtensionsPatchBuildingUsingtheWixUIdialoglibraryWiXSchemaReferencePubCASchemaReference

Page 12: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

GettingStartedWiXcancreateWindowsInstallerdatabaseswhichinclude:WindowsInstallerpackages,MSIfiles,andMergeModules,MSMfiles.We’llstartbycreatingaWindowsInstallerpackagesothatyou’llhavesomethingthatyoucaninstallanduninstallquickly.Then,we’llcreateaMergeModuleandmergeitintoourexampleWindowsInstallerpackage.Finally,I’llcoverafewmoreadvancedtopicssuchashowtodefineCustomActionsandadeeperlookintosymbolsandreferences.

Topics:1. Yourfirst.wxsfile2. CreatingMergeModules3. AddingCustomActions4. MsiTablestoWiXSchemaTranslationGuide

Page 13: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

AuthoringYourFirst.wxsFilePickyourfavoriteXMLeditor—foralloftheexamples,I’llusenotepad--andcreateanewfilecalled“product.wxs”.Nothingaboutthatnameisspecial,butthe.wxsextensionletsusknowthatthisisaWindowsInstallerXmlSourceFile.Now,let’saddthethreelinesoftextall.wxsfileshave:

<?xmlversion='1.0'?>

<Wixxmlns='http://schemas.microsoft.com/wix/2003/01/wi'>

</Wix>

Thatformstheouterskeletonforoursourcefileand,honestly,anyothersourcefileweeverwanttogetcompiled.Youcanfeedthisemptysourcefiletocandle.exeandgetoutanemptyobjectfile.Tellyouwhat,let'sdothat.Followthefollowingstepsandyoushouldseeverysimilaroutput:

C:\test>candleproduct.wxs

Microsoft(R)WindowsInstallerXmlCompilerversion1.0.1220.15022

Copyright(C)MicrosoftCorporation2003.Allrightsreserved

C:\test>typeproduct.wixobj

<?xmlversion="1.0"encoding="utf-8"?><wixObject

xmlns="http://schemas.microsoft.com/wix/2003/04/objects"

src="C:\test\product.wxs"/>

C:\test>

Let'snoticeacouplethingsbeforecontinuing.First,noticethatwhenthereisnoerrorcandledoesn'tprintanytextotherthanitsheader.Infact,youcanevensuppresstheheaderoutputbyspecifying"-nologo"onthecommandline.Inthatcase,candlewillprintnothingunlessthereisafailure.Second,noticethatthepathtotheoriginalsourcefileisstoredinthe.wixobjfile.Thiscanbeusefulwhentrackingdownwhereanerroriscomingfrom.Infact,thelinkerusesthat"src"attributetoprintmoreinformativeerrormessageswhenitencountersaproblem.

Okay,nowthatwe'veseenanemptysourcefilecreateanemptyobjectfile,let'screateaninstallableWindowsInstallerpackage.Addthefollowingcontenttoyourproduct.wxsfile:

Page 14: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

<?xmlversion='1.0'?>

<Wixxmlns='http://schemas.microsoft.com/wix/2003/01/wi'>

<ProductId='12345678-1234-1234-1234-123456789012'Name='TestPackage'Language='1033'

Version='1.0.0.0'Manufacturer='MicrosoftCorporation'>

<PackageId='12345678-1234-1234-1234-123456789012'

Description='MyfirstWindowsInstallerpackage'

Comments='ThisismyfirstattemptatcreatingaWindowsInstallerdatabase'

Manufacturer='MicrosoftCorporation'InstallerVersion='200'Compressed='yes'/>

<DirectoryId='TARGETDIR'Name='SourceDir'>

<ComponentId='MyComponent'Guid='12345678-1234-1234-1234-123456789012'/>

</Directory>

<FeatureId='MyFeature'Title='My1stFeature'Level='1'>

<ComponentRefId='MyComponent'/>

</Feature>

</Product>

</Wix>

ThisshouldallowustocreateaMSIwithaProductCodeof"{12345678-1234-1234-1234-123456789012}"withProductLanguageof"1033"andaProductVersionof"1.0.0.0".Allofthatinformationistakenfromthe<Product/>element.The<Package/>elementdefinesalloftheinformationthatgoesinourMSI'ssummaryinformationstream.Finally,asimple<Directory/>and<Feature/>treeiscreatedwithasingle<Component/>.ThisisenoughtogetourMSIregisteredonthemachine.

Solet'scompile,link,andinstallthentakealookattheregisteredpackagesforourMSI.Followtheinstructions:

Note:ThisMSIrequiresadminprivilegesandwillsilentlyfailifyouarenotinstallingasanAdministrator.

C:\test>candleproduct.wxs

Microsoft(R)WindowsInstallerXmlCompilerversion1.0.1220.15022

Copyright(C)MicrosoftCorporation2003.Allrightsreserved

product.wxs

C:\test>lightproduct.wixobj

Microsoft(R)WindowsInstallerXmlLinkerversion1.0.1220.15022

Copyright(C)MicrosoftCorporation2003.Allrightsreserved

C:\test>msiexec/iproduct.msi

Page 15: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

C:\test>\\delivery\tools\msiconfig.exe

.

.

.

{12345678-1234-1234-1234-123456789012}TestPackage

.

.

.

Youshouldseeyour"TestPackage"listedwithalltheotherWindowsInstallerpackagesinstalledonyourmachine.YoucanalsogotoAdd/RemoveProgramsintheControlPanelandsee"TestPackage"registeredthere.Goaheadandremovethepackagenow,sowedon'tforgetitlater.

Great!Nowthatwehaveapackagethatinstallsanduninstallsproperly,let'sactuallyinstallsomething.So,createanewtextfilecalled"readme.txt"nexttoyour"product.wxs"fileandtypeamessagetoyourselfinthere."Hello,World!"isafavorite.Then,weneedtomodifytheproduct.wxstotellitaboutthefile:

<?xmlversion='1.0'?>

<Wixxmlns='http://schemas.microsoft.com/wix/2003/01/wi'>

<ProductId='12345678-1234-1234-1234-123456789012'Name='TestPackage'Language='1033'

Version='1.0.0.0'Manufacturer='MicrosoftCorporation'>

<PackageId='12345678-1234-1234-1234-123456789012'

Description='MyfirstWindowsInstallerpackage'

Comments='ThisismyfirstattemptatcreatingaWindowsInstallerdatabase'

Manufacturer='MicrosoftCorporation'InstallerVersion='200'Compressed='yes'/>

<MediaId='1'Cabinet='product.cab'EmbedCab='yes'/>

<DirectoryId='TARGETDIR'Name='SourceDir'>

<DirectoryId='ProgramFilesFolder'Name='PFiles'>

<DirectoryId='MyDir'Name='TestProg'LongName='TestProgram'>

<ComponentId='MyComponent'Guid='12345678-1234-1234-1234-123456789012'>

<FileId='readme'Name='readme.txt'DiskId='1'src='readme.txt'/>

</Component>

</Directory>

</Directory>

</Directory>

<FeatureId='MyFeature'Title='My1stFeature'Level='1'>

<ComponentRefId='MyComponent'/>

</Feature>

</Product>

</Wix>

Page 16: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Youshouldbeabletocompile,link,andinstallthatMSIandseethatyoudogetadirectorycalled"TestProgram"inyoursystem's"ProgramFiles"folder.Inthat"TestProgram"directoryshouldbethe"readme.txt"fileyoucreatedwiththemessagetoyourself.Spiffy,eh?Again,remembertouninstalltheMSIsoyoucanrebuildandinstallitagainlater.

Believeitornot,that'sallthereistocreatingaWindowsInstallerpackage.Sure,youcanaddUIandthingslikethatnow,butwe'vecoveredthebasics.EverythingjustcomesdowntofillingintherightXMLelements.So,let'smoveonandlookatcreatingaMergeModulewecanincorporateintoourspiffynewpackage.

Page 17: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

CreatingMergeModulesCreatingaMergeModuleisverymuchlikecreatingaWindowsInstallerpackage.So,let'screateanewtextfilecalled"module.wxs"andputthestandardskeletoninit,asso:

<?xmlversion='1.0'?>

<Wixxmlns='http://schemas.microsoft.com/wix/2003/01/wi'>

</Wix>

ThentocreateaMergeModule,weaddthe<Module/>elementandaddtherequiredattributes:

<?xmlversion='1.0'?>

<Wixxmlns='http://schemas.microsoft.com/wix/2003/01/wi'>

<ModuleId='TestModule'Guid='87654321-4321-4321-4321-210987654321'Language='1033'Version='1.0.0.0'>

<PackageId='87654321-4321-4321-4321-210987654321'Description='MyfirstMergeModule'

Comments='ThisismyfirstattemptatcreatingaWindowsInstallerMergeModule'

Manufacturer='MicrosoftCorporation'InstallerVersion='200'Compressed='yes'/>

</Module>

</Wix>

Youcan,ifyouwish,compileandlinkthatcode.You'llgetaverysmallandnotveryinteresting.msmfilefromlight.So,let'saddatextfiletothisMergeModulelikewedidtotheWindowsInstallerpackageabove.First,createatextfilecalled"readme2.txt"andputadifferentmessagetoyourselfinthere.Then,updatethesourcecodetoincludethenewfile:

<?xmlversion='1.0'?>

<Wixxmlns='http://schemas.microsoft.com/wix/2003/01/wi'>

<ModuleId='TestModule'Guid='87654321-4321-4321-4321-210987654321'Language='1033'Version='1.0.0.0'>

<PackageId='87654321-4321-4321-4321-210987654321'Description='MyfirstMergeModule'

Comments='ThisismyfirstattemptatcreatingaWindowsInstallerMergeModule'

Manufacturer='MicrosoftCorporation'InstallerVersion='200'Compressed='yes'/>

<DirectoryId='TARGETDIR'Name='SourceDir'>

<DirectoryId='MyModuleDirectory'Name='.'>

<ComponentId='MyModuleComponent'Guid='87654321-4321-4321-4321-110987654321'>

<FileId='readme2'Name='readme2.txt'src='readme2.txt'/>

</Component>

</Directory>

</Directory>

</Module>

Page 18: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

</Wix>

That'sit!YounowhaveaMergeModulethatcanbesharedwithotherteamstoinstallyour"readme2.txt"file.NowthatwehaveaMergeModule,let'sactuallyuseitinaWindowsInstallerpackage.

Page 19: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

IncorporatingaMergeModuleintoa.wxsfileMergeModulescanonlybemergedintoWindowsInstallerpackage.Fortunately,wehavea.wxsfilethatcreatesaWindowsInstallerpackagefromourfirstexperimentswithWiX.So,let'saddthetwolines(yes,onlytwolinesarenecessary)tomergeinyournewModule.Openyour"product.wxs"sourcefileagain,andadd:

<?xmlversion='1.0'?>

<Wixxmlns='http://schemas.microsoft.com/wix/2003/01/wi'>

<ProductId='12345678-1234-1234-1234-123456789012'Name='TestPackage'Language='1033'

Version='1.0.0.0'Manufacturer='MicrosoftCorporation'>

<PackageId='12345678-1234-1234-1234-123456789012'Description='MyfirstWindowsInstallerpackage'

Comments='ThisismyfirstattemptatcreatingaWindowsInstallerdatabase'

Manufacturer='MicrosoftCorporation'InstallerVersion='200'Compressed='yes'/>

<MediaId='1'Cabinet='product.cab'EmbedCab='yes'/>

<DirectoryId='TARGETDIR'Name='SourceDir'>

<DirectoryId='ProgramFilesFolder'Name='PFiles'>

<DirectoryId='MyDir'Name='TestProg'LongName='TestProgram'>

<ComponentId='MyComponent'Guid='12345678-1234-1234-1234-123456789012'>

<FileId='readme'Name='readme.txt'DiskId='1'src='readme.txt'/>

</Component>

<MergeId='MyModule'Language='1033'src='module.msm'DiskId='1'/>

</Directory>

</Directory>

</Directory>

<FeatureId='MyFeature'Title='My1stFeature'Level='1'>

<ComponentRefId='MyComponent'/>

<MergeRefId='MyModule'/>

</Feature>

</Product>

</Wix>

NowwhenyoucompileyourWindowsInstallerpackagesourcefile,itwillincludetheinstallationlogicandfilesfromtheMergeModule.Thenexttimeyouinstallthe"product.msi",youshouldseetwotextfilesinthe"TestProgram"directoryinsteadofone.

Page 20: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

AddingCustomActionsNowthatyou’recomfortablewiththebasicsforcreatingWindowsInstallerpackages,let’stakeittothenextlevelandaddaCustomAction.SinceeveryreleaseoftheWindowsInstallerXMLtoolsetcomeswithadropoftheWiXServerCustomActions,we’llusethoseforourexample.Sogonowtothewix\bin\cadirectoryandcopythe"sca*.dll"tothesamedirectoryasyour"product.wxs"and“readme.txt”files.Youshouldhave"scasched.dll"and"scaexec.dll".

RatherthanputtheCustomActiondefinitionsinthesamesourcefileasourproductdefinition,let'sexercisealittlemodularityandcreateanewsourcefiletodefinetheCustomActionscalled"sca.wxs".Let'sbeginbyaddingtheimmediateCustomActionthatreadsthecustomservertablesandschedulesthedeferredactions.

<?xmlversion='1.0'?>

<Wixxmlns='http://schemas.microsoft.com/wix/2003/01/wi'>

<FragmentId="ServerCustomActions">

<CustomActionId='ConfigureIIs'BinaryKey='ScaSchedule'DllEntry='ConfigureIIs'Execute='immediate'

Return='check'/>

<CustomActionId='ConfigureSql'BinaryKey='ScaSchedule'DllEntry='ConfigureSql'Execute='immediate'

Return='check'/>

<BinaryId='ScaSchedule'src='scasched.dll'/>

</Fragment>

</Wix>

Thatlittlebitofcodeshouldcompilebutitwillnotlink.Rememberlinkingrequiresthatyouhaveanentrysectionanda<Fragment/>aloneisnotanentrysection.Wewouldneedtolinkthissourcefilealongwithasourcefilethatcontained<Product/>or<Module/>tosuccessfullycomplete.Beforewebothergettingeverythingtolinkproperly,let'saddthedeferredCustomActionstothissourcefilesincetheyareasimportantastheimmediateCustomActionsyoualreadyadded.

<?xmlversion='1.0'?>

<Wixxmlns='http://schemas.microsoft.com/wix/2003/01/wi'>

<FragmentId="ServerCustomActions">

<CustomActionId='ConfigureIIs'BinaryKey='ScaSchedule'DllEntry='ConfigureIIs'Execute='immediate'

Return='check'/>

<CustomActionId='ConfigureSql'BinaryKey='ScaSchedule'DllEntry='ConfigureSql'Execute='immediate'

Page 21: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Return='check'/>

<CustomActionId='ErrorOut'BinaryKey='ScaExecute'DllEntry='ErrorOut'Execute='deferred'

Return='check'/>

<CustomActionId='StartMetabaseTransaction'BinaryKey='ScaExecute'

DllEntry='StartMetabaseTransaction'Execute='deferred'Return='check'/>

<CustomActionId='RollbackMetabaseTransaction'BinaryKey='ScaExecute'

DllEntry='RollbackMetabaseTransaction'Execute='rollback'Return='check'/>

<CustomActionId='CommitMetabaseTransaction'BinaryKey='ScaExecute'

DllEntry='CommitMetabaseTransaction'Execute='commit'Return='check'/>

<CustomActionId='CreateMetabaseKey'BinaryKey='ScaExecute'

DllEntry='CreateMetabaseKey'Execute='deferred'Return='check'/>

<CustomActionId='DeleteMetabaseKey'BinaryKey='ScaExecute'

DllEntry='DeleteMetabaseKey'Execute='deferred'Return='check'/>

<CustomActionId='CreateAspApp'BinaryKey='ScaExecute'

DllEntry='CreateAspApp'Execute='deferred'Return='check'/>

<CustomActionId='WriteMetabaseValue'BinaryKey='ScaExecute'

DllEntry='WriteMetabaseValue'Execute='deferred'Return='check'/>

<CustomActionId='WriteMetabaseMultiString'BinaryKey='ScaExecute'

DllEntry='WriteMetabaseMultiString'Execute='deferred'Return='check'/>

<CustomActionId='DeleteMetabaseMultiString'BinaryKey='ScaExecute'

DllEntry='DeleteMetabaseMultiString'Execute='deferred'Return='check'/>

<CustomActionId='CreateDatabase'BinaryKey='ScaExecute'

DllEntry='CreateDatabase'Execute='deferred'Return='check'/>

<CustomActionId='DropDatabase'BinaryKey='ScaExecute'

DllEntry='DropDatabase'Execute='deferred'Return='check'/>

<CustomActionId='ExecuteSqlStrings'BinaryKey='ScaExecute'

DllEntry='ExecuteSqlStrings'Execute='deferred'Return='check'/>

<CustomActionId='RollbackExecuteSqlStrings'BinaryKey='ScaExecute'

DllEntry='ExecuteSqlStrings'Execute='rollback'Return='check'/>

<BinaryId='ScaSchedule'src='scasched.dll'/>

<BinaryId='ScaExecute'src='scaexec.dll'/>

</Fragment>

</Wix>

Okay,that'sit.We'redonewitheditingthe"sca.wxs"sourcefile.YouhavesuccessfullydefinedalloftheentrypointsintotheWiXServerCustomActions.Now,howaboutweaddacalltotheWiXServerCustomActionstotheexampleproduct.wxssourcefileyou'vebeenworkingwithsofar.InsteadofconfiguringIISorSQLServer(andrequiringyoutohaveoneoftheminstalled),let'sjustaddacalltotheCustomActionIusetoinjecterrorsintotheinstallationprocessfortestingpurposes.That'sthe"ErrorOut"CustomAction.

Page 22: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

<?xmlversion='1.0'?>

<Wixxmlns='http://schemas.microsoft.com/wix/2003/01/wi'>

<ProductId='12345678-1234-1234-1234-123456789012'Name='TestPackage'Language='1033'

Version='1.0.0.0'Manufacturer='MicrosoftCorporation'>

<PackageId='12345678-1234-1234-1234-123456789012'

Description='MyfirstWindowsInstallerpackage'

Comments='ThisismyfirstattemptatcreatingaWindowsInstallerdatabase'

Manufacturer='MicrosoftCorporation'InstallerVersion='200'Compressed='yes'/>

<MediaId='1'Cabinet='product.cab'EmbedCab='yes'/>

<DirectoryId='TARGETDIR'Name='SourceDir'>

<DirectoryId='ProgramFilesFolder'Name='PFiles'>

<DirectoryId='MyDir'Name='TestProg'LongName='TestProgram'>

<ComponentId='MyComponent'Guid='12345678-1234-1234-1234-123456789012'>

<FileId='readme'Name='readme.txt'DiskId='1'src='readme.txt'/>

</Component>

<MergeId='MyModule'Language='1033'src='module.msm'DiskId='1'/>

</Directory>

</Directory>

</Directory>

<FeatureId='MyFeature'Title='My1stFeature'Level='1'>

<ComponentRefId='MyComponent'/>

<MergeRefId='MyModule'/>

</Feature>

<InstallExecuteSequence>

<CustomAction='ErrorOut'After='InstallFiles'/>

</InstallExecuteSequence>

</Product>

</Wix>

ThosethreelinesareallyouneedtoaddtoyourWindowsInstallerpackagesourcefiletocallthe"ErrorOut"CustomAction.Nowthatwehavetwofilestolinktogetherourcalltolight.exegetsalittlemorecomplicated.Herearethecompile,link,andinstallationsteps.

C:\test>candleproduct.wxsmodule.wxssca.wxs

Microsoft(R)WindowsInstallerXmlCompilerversion1.0.1256.19889

Copyright(C)MicrosoftCorporation2003.Allrightsreserved.

product.wxs

module.wxs

sca.wxs

Page 23: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

C:\test>lightmodule.wixobj

Microsoft(R)WindowsInstallerXmlLinkerversion1.0.1256.19889

Copyright(C)MicrosoftCorporation2003.Allrightsreserved.

C:\test>lightproduct.wixobjsca.wixobj–outproduct.msi

Microsoft(R)WindowsInstallerXmlLinkerversion1.0.1220.15022

Copyright(C)MicrosoftCorporation2003.Allrightsreserved

C:\test>msiexec/iproduct.msi

Don'tbealarmedwhentheMSImysteriouslystartsrollingbacktheinstallation.Rememberafterinstallingthefilesthe"ErrorOut"CustomActioniscalledandthatforcestheinstallationtofail.MSIthenrollsbackthefilesandsilentlyreturns.Addingasuccessandanerrordialogareexcerciseslefttotheinterestedreader.

Page 24: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

MsiTablestoWiXSchemaIntheWiXschema,itsnotalwaysentirelyobvioushowthetablesfromtheWindowsInstallerschemamaptotheWiXschema.Belowaresomehelpfulhintsonhowtofigureouttherelationshipsbetweenthetwoschemas.

Page 25: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

DuplicateFileTableThisisauthoredusingaCopyFilenodenestedunderaFilenode.YouonlyneedtosettheId,DestinationFolder,andDestinationNameattributes.

Page 26: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

LaunchConditionTableThisisauthoredusingaConditionnodeauthoredunderFragmentorProduct.YouonlyneedtosettheMessageattribute.

Page 27: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

LockPermissionsTableThisisauthoredusingPermission.

Page 28: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

MoveFileTableThisisauthoredusingaCopyFilenodenestedunderaComponentnode.YouwillneedtosetallattributesexceptDelete.SetDeleteto'yes'inordertousethemsidbMoveFileOptionsMoveoption.

Page 29: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

PublishComponentTableThePublishComponentfunctionalityisavailableinWiXbyusingaCategory.HereisasmallsampleofwhataPublishComponentrecordwouldlooklikeinMSI,theninWiXnotation.

MSI

ComponentId Qualifier Component_ AppData Feature_{11111111-2222-3333-4444-5555555555555}

1033 MyComponent RandomData

MyFeature

WiX

<ComponentId='MyComponent'Guid='87654321-4321-4321-4321-110987654321'>

<CategoryId='11111111-2222-3333-4444-5555555555555'AppData='RandomData'

Qualifier='1033'/>

</Component>

.

.

.

<FeatureId='MyFeature'Level='1'>

<ComponentRefId='MyComponent'/>

</Feature>

Page 30: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RemoveIniFileThisisauthoredusingIniFile.JustsettheActionattributeto'removeLine'or'removeTag'asappropriate.

Page 31: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RemoveRegistryTableThisisauthoredusingRegistry.SimplysettheActionattributeto'remove'or'removeKey'(asappropriate)inordertogetanentryintheRemoveRegistrytable.

Page 32: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WindowsInstallerXMLOnlineTutorialsGaborDeakJahnmaintainsanimpressiveonlinetutorialabouttheWindowsInstallerXMLtoolset.ThattutorialisgreatwaytorampupontheWiXtoolsetifyouareneworlookingforanswerstocommonauthoringtask.

Page 33: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

AdditionalResourcesRobMenschinghaswrittenanexcellentMSDNarticleonusingVotivetogetstartedinWiX.

Page 34: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WindowsInstallerXMLStandardCustomActionsTheWiXtoolsetcontainsseveralCustomActionstohandleconfiguringresourcessuchasInternetInformationServiceswebsitesandvirtualdirectories,SQLServerdatabasesandscripts,useraccounts,fileshares,andmore.TheseCustomActionsareprovidedintwoseparate.wixlibs:sca.wixlibandwixca.wixlib.Theformercontain"ServerCustomActions"whilethelatterhasmoregeneralinstallationCustomActions.Inthefuture,these.wixlib'smaymergetogetherbutfornow(formostlyhistoricalreasons)theyareseparate.

Page 35: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

sca.wixlib-ServerCustomActionsInternetInformationServices(IIS)CustomAction-createandconfigurewebsites,virtualdirectories,webapplications,etc.SQLServerCustomAction-createdatabasesandexecuteSQLscriptsandstatements.UserCustomAction-createandconfigurenewusers.FileShareCustomAction-createandconfigurefileshares(SMB).PerformanceCounterCustomAction-installanduninstallperformancecounters.

Page 36: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

wixca.wixlib-GeneralCustomActionsSecureObjectsCustomAction-secure(usingACLs)objectsthatstandardLockPermissiontablecannot.ForfurtherinformationseetheExtendedattributin<Permission/>.ServiceConfigurationCustomAction-configureattributesofaWindowsServicethattheServiceInstalltablecannot.QuietExecutionCustomAction-launchconsoleexecutableswithoutdisplayingawindow.XmlFileCustomAction-allowsyoutoconfigureXMLfilesaspartofyourinstallationpackage.Forfurtherinformationsee<XmlFile/>.

NewCustomActionsarealwaysunderdevelopment.OurgoalistoonedayhavestandardCustomActionsforjustaboutanyneed.FeelfreetoopenaFeatureRequestifyouhaveaCustomActionneed.

Page 37: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

UsingtheServerCustomActionsThewixtoolsetcontainsalibraryofcustomactions.Thecenterpieceofthislibraryistheservercustomactionset.TheservercustomactionsextendthesetofresourcesthatanMSIcaninstalltoincludethingssuchaswebsites,fileshares,useraccounts,andmanyothers.Thesecustomactionsproperlyassociatetheseresourceswithcomponents,andfollowalltherulestoproperlyinstall,uninstallandrollbacktheinstallationoruninstallationoftheseresourcesaspartoftheirassociatedcomponents.Thisdocumentwilloutlinetheirusewithsomeexamples.

ThisdocumentassumesthatthereaderhasanunderstandingofMSIcustomactiontypes,andhasread"WiXOverview"and"WritinginWiX".

Page 38: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ServerCustomActionbuildingblocks

Witheachreleaseofthewixtoolset,thefilesscasched.dll,scaexec.dllandsca.wixlibarereleased.Thetwodllfilesarethecustomactiondllswhichexportthecustomactionentrypointsforalloftheservercustomactions.WhenyoubuildanMSIthatmakesuseoftheservercustomactions,theyendupintheBinarytableoftheMSI.Thesca.wixlibcontainsasystemofwixfragmentsthatyoucanlinkagainsttoensurethatallofthepropererrormessages,customactionrecords,andbinaryrecordsgetlinkedintoyourfinalMSI.

ThesimplestwaytoincorporatetheservercustomactionsintoyourMSIsistocopythesca.wixlibandthetwocustomactiondlls(scasched.dllandscaexec.dll)intoafolderinyourbuildenvironment.Itisnotimportantwherethisdirectoryis,itisonlyimportantthatthewixlibandthedllsareinthesamedirectory.WhenyoulinkyourMSIusinglight.exe,yousimplyneedtoincludethefullpathtosca.wixlibinthelistofwixobjsandwixlibsyou'relinking.

Page 39: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

BasicExample

FirstletstryanexamplethatcreatesauseraccountwhentheMSIisinstalled.

<Wixxmlns='http://schemas.microsoft.com/wix/2003/01/wi'>

<ProductId='PutGuidHere'Name='TestUserProduct'Language='1033'Version='0.0.0.0'>

<PackageId='PUT-GUID-HERE'Description='TestUserPackage'InstallerVersion='200'Compressed='yes'/>

<DirectoryId='TARGETDIR'Name='SourceDir'>

<ComponentId='TestUserProductComponent'Guid='PutGuidHere'>

<UserId='TEST_USER1'Name='testName1'Password='pa$$word'/>

</Component>

</Directory>

<FeatureId='TestUserProductFeature'Title='TestUserProductFeature'Level='1'>

<ComponentRefId='TestUserProductComponent'/>

</Feature>

</Product>

</Wix>

Thisisasimpleexamplethatwillcreateanewuseronthemachinecalled"testName1"withthepassword"pa$$word".TobuildtheMSIfromthiswixauthoringfirstputtheabovecodeinafile(remembertoreplacethe"PUT-GUID-HERE"attributeswithrealGUIDs),run'candle.exeyourfile.wxs',andthenrun'light.exe–outyourfile.msiyourfile.wixoutsca.wixlib'(replacingsca.wixlibwiththefullpathtosca.wixlib).NowuseOrcatoopenuptheresultingmsiandtakealookattheErrortable,theCustomActiontable,andtheBinarytable.Youwillnoticethatalloftherelevantdataformanagingusershasbeen"linked"intotheMSI.Thishappenedbecauseyouhavedonetwokeythings.First,youmadeuseofa<User/>elementundera<Component/>elementwhichindicatesthatauseristobeinstalledaspartoftheMSIpackage,andsecond,youlinkedwiththesca.wixlib.Compilersupport,alongwiththesystemoffragmentsthatexistinthesca.wixlibensurethatonlythedataassociatedwiththeelementsyou

Page 40: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

usedinyourwxsfileare"linked"intotheMSI.

Page 41: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Theservercustomactionelements

Inthepreviousexampleyoulearnedthatbyusingthe<User/>elementinyourWiXauthoringandthenlinkingwiththesca.wixlibthatalloftherelevantcustomactions,errormessages,andbinarytablerowswerebroughtinautomatically.Thewixcompilercontainssupportforautomaticallyreferencingtheappropriatesymbolsinthesca.wixlibwhenyoumakeuseofspecificelementssuchas<User/>.Asstatedintheintroductiontheservercustomactionsaddtheabilitytoinstallmanynewtypesofresources.EachoftheseresourcetypeshasoneormoreelementsthatallowyoutoinstallthemwithyourMSIpackage.Ifyou'reusingthesca.wixlib,theonlythingsyouneedtoknowaretheappropriateelementsfortheresourcesyouwanttoinstall.Hereisalistingofthedifferentresourcetypesthattheservercustomactionsareabletoinstallandtheelementsthatcontroltheirinstallation:

WebSites-<WebSite/>WebApplications-<WebApplication/>Certificates-<Certificate/>SQLdatabases-<SqlDatabase/>SQLscripts-<SqlScript/>SQLstrings-<SqlString/>Users-<User/>FileShares-<FileShare/>PerfmonCounterregistration-<PerfCounter/>

Byusingtheappropriateelementsfromthistableinyourwixauthoringandbylinkingwithsca.wixlib,youwillensurethatyouareproperlyusingthewixservercustomactions.

Page 42: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

PerformanceCounterCustomActionsThePerfCounterelementallowsyoutoregisteryourperformancecounterswiththeWindowsAPI.Thereareseveralpiecesthatallworktogethertosuccessfullyregister:

YourperformanceDLL-TheDLLmustexportOpen,Collect,andClosemethods.SeeMSDNformoredetail.Performanceregistryvalues-TheregistrymustcontainkeyspointingtoyourDLLanditsOpen,Collect,andClosemethods.ThesearecreatedusingtheRegistryelement.PerfmonINIandHtextfiles-ThesecontainthetextdescriptionstodisplayintheUI.SeeMSDNforlodctrdocumentation.ThisMSDNdocumentationisagoodplacetostart.Seebelowforsamplesre-purposedfromMSDN.TheRegisterPerfmoncustomaction-Youcanlinkwithsca.wixlibtoensurethatthecustomactionsareincludedinyourfinalMSI.Seeservercustomactiondocumentation.Thecustomactioncalls(Un)LoadPerfCounterTextStringstoregisteryourcounterswithWindows’PerfmonAPI.Toinvokethecustomaction,youcreateaPerfCounterelementnestedwithintheFileelementforthePerfmon.INIfile.ThePerfCounterelementcontainsasingleattribute:Name.TheNameattributeshouldmatchthenameintheRegistryandinthe.INIfile.SeebelowforsampleWIXusageofthe<PerfCounter>element.

Page 43: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

SampleWIXsourcefragmentandPerfCounter.ini<?xmlversion="1.0"?>

<Wixxmlns="http://schemas.microsoft.com/wix/2003/01/wi">

<Fragment>

<DirectoryRefId="BinDir">

<ComponentId="SharedNative"DiskId="1">

<RegistryId="Shared_r1"Root="HKLM"Key="SYSTEM\CurrentControlSet\Services\MyApplication\Performance"Name="Open"Value="OpenPerformanceData"Type="string"/>

<RegistryId="Shared_r2"Root="HKLM"Key="SYSTEM\CurrentControlSet\Services\MyApplication\Performance"Name="Collect"Value="CollectPerformanceData"Type="string"/>

<RegistryId="Shared_r3"Root="HKLM"Key="SYSTEM\CurrentControlSet\Services\MyApplication\Performance"Name="Close"Value="ClosePerformanceData"Type="string"/>

<RegistryId="Shared_r4"Root="HKLM"Key="SYSTEM\CurrentControlSet\Services\MyApplication\Performance"Name="Library"Value="[!PERFDLL.DLL]"Type="string"/>

<FileId="PERFDLL.DLL"Name="MYPERFDLL.DLL"LongName="MyPerfDll.dll"src="x86\debug\0\myperfdll.dll"/>

<FileId="PERFCOUNTERS.H"Name="PERF.H"LongName="PerfCounters.h"src="x86\debug\0\perfcounters.h"/>

<FileId="PERFCOUNTERS.INI"Name="PERF.INI"LongName="PerfCounters.ini"src="x86\debug\0\perfcounters.ini">

<PerfCounterName="MyApplication"/>

</File>

</Component>

</DirectoryRef>

</Fragment>

</Wix>

SamplePerfCounters.ini:

[info]

drivername=MyApplication

symbolfile=PerfCounters.h

[languages]

009=English

004=Chinese

[objects]

PERF_OBJECT_1_009_NAME=Performanceobjectname

PERF_OBJECT_1_004_NAME=PerformanceobjectnameinChinese

[text]

OBJECT_1_009_NAME=Nameofthedevice

OBJECT_1_009_HELP=Displaysperformancestatisticsofthedevice

OBJECT_1_004_NAME=NameofthedeviceinChinese

Page 44: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

OBJECT_1_004_HELP=DisplaysperformancestatisticsofthedeviceinChinese

DEVICE_COUNTER_1_009_NAME=Nameoffirstcounter

DEVICE_COUNTER_1_009_HELP=Displaysthecurrentvalueofthefirstcounter

DEVICE_COUNTER_1_004_NAME=NameofthefirstcounterinChinese

DEVICE_COUNTER_1_004_HELP=DisplaysthevalueofthefirstcounterinChinese

DEVICE_COUNTER_2_009_NAME=Nameofthesecondcounter

DEVICE_COUNTER_2_009_HELP=Displaysthecurrentrateofthesecondcounter

DEVICE_COUNTER_2_004_NAME=NameofthesecondcounterinChinese

DEVICE_COUNTER_2_004_HELP=DisplaystherateofthesecondcounterinChinese

PERF_OBJECT_1_009_NAME=Nameofthethirdcounter

PERF_OBJECT_1_009_HELP=Displaysthecurrentrateofthethirdcounter

PERF_OBJECT_1_004_NAME=NameofthethirdcounterinChinese

PERF_OBJECT_1_004_HELP=DisplaystherateofthethirdcounterinChinese

SamplePerfCounters.h:

#defineOBJECT_10

#defineDEVICE_COUNTER_12

#defineDEVICE_COUNTER_24

#definePERF_OBJECT_18

Page 45: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

QuietExecutionCustomActionThereisaqtexeccustomactionthatispartofthewixcathatcanrunarbitrarycommandlines.

Page 46: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Immediateexecution<PropertyId="QtExecCmdLine"Value="commandlinetorun"/>

<CustomActionId="QtExec"BinaryKey="wixca"DllEntry="CAQuietExec"Execute="immediate"Return="check"/>

<BinaryId="wixca"src="wixca.dll"/>

.

.

.

<InstallExecuteSequence>

<CustomAction="QtExec"After="TheActionYouWantItAfter"/>

</InstallExecuteSequence>

Thiswillresultinrunningthecommandlineintheimmediatesequence.Iftheexitcodeofthecommandlineisanerror(not0)thenbecauseReturnissetto“check"itwillcausetheinstalltofail.Youcanchangethisvalueto“ignore"ifyoudon’twantittocauseaninstallfailure(itwillbeloggedstill).

Ifyouwanttorunmorethanonecommandlineintheimmediatesequencethenyou’llneedscheduleQtExecmultipletimesandsettheQtExecCmdLineproperty(usingatype51customaction)rightbeforeyouwanteachofthemexecuted.

Page 47: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

DeferredexecutionYoucanalsoruncommandlinesinthedifferedscriptusingthistoolbysettingthecustomactiondataproperty.IfthecodeisrunninginimmediatemodeitwilltrytoexecutethevalueoftheQtExecCmdLineifitisrunningindeferred(orrollback)modeitwilltrytoexecutethevalueofthecustomactiondata.Thecustomactiondataisapropertythatisnamedthesameasthecustomaction.Here’sanexampleofauthoringdeferredcommandlineexecution:

<PropertyId="QtExecDeferred"Value="commandlinetorun"/>

<CustomActionId="QtExecDeferred"BinaryKey="wixca"DllEntry="CAQuietExec"Execute="deferred"Return="check"/>

<BinaryId="wixca"src="wixca.dll"/>

.

.

.

<InstallExecuteSequence>

<CustomAction="QtExecDeferred"After="TheActionYouWantItAfter"/>

</InstallExecuteSequence>

Page 48: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ExtensionsWiXhassupportforthreeclassesofextensions

Page 49: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

IntroductionPreprocessorExtensionsallowclientstomodifyauthoringfilesbeforetheyareprocessedbythecompiler.CompilerExtensionsallowclientstocustomcompileauthoredXMLintointernaltablerepresentationbeforeit'swrittentobinaryform.BinderExtensionsallowclientstothefeedtheinterlaceimageprocessinganddatafinalization.ThroughtheseextensionsonecanextendWiXtosupportcustompreprocessing,XMLsyntaxcompilation,orbindingsemanticsforonesparticularlayoutgenerationprocess.

Page 50: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

CommonRequirementsHowtouseeachshouldstartinthesourcecodebuttheyallhaveafewthingsincommonImplementedinsameversionof.NET1.1astherestofWiXBuildasubclassoftheappropriateextensionobjectgivingitaeasilydistinguishablename.Buildaschemaoftheappropriatesyntaxtoprovidevalidationcheckingwherepossible.Buildinternaltabledefinitionsandregisterthemwiththecompiler.Buildoverridesforextendablemethodsandvirtualmemberswhichwillgetinvokedattheapproriatelocationduringthesinglepasscompile.BuildextensionintoaDLL.PlaceextensionDLLnexttoWiXEXEs.RegisteredwithWiXviacommandlineargumenttothecompiler

Page 51: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ConsiderationsBeforeinvestinginanextension,oneshouldevaluatewhetheranexternaltoolandthe?includesyntax(fromthepreprocessor)willprovidetheneededflexabilityforyourtechnicalneeds.Multipleextensionsandextensiontypesaresupportedbutthereisnoguarenteeoftheorderaparticularclassofextensionswillbeprocessessothereshouldbenosequencingdependenciesbetweenextensionswithinthesameextensionclass.

Page 52: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

PatchBuildingCreatingaPatchwithWixNote:YoumusthaveWindowsInstaller3.0installed\

1. DoanadministrativeinstalloftheRTMversion(TargetImage).2. UpdatePackageIdinMain.wxs.3. MakenewInstaller.msi4. Doanadministrativeinstallofthelatestversion(UpdateImage

withnewfilesyouwanttopatch).5. Createapatchcreationproperties(.pcp)file.6. Createthepatch.7. Runthepatch

Page 53: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

1.AdministrativeinstallofRTMversionWiththeRTMinstaller.msi,run

mdc:\patchdir

mdc:\patchdir\rtm

msiexec/ainstaller.msiTARGETDIR=c:\patchdir\rtm

Page 54: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

2.UpdatePackageIdinsource.wxsfile.MakeanewGuidfortheId=attributeunderthe%lt;Package>taginthewxsfiles.

Page 55: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

3.Makenewinstaller.msi

4.AdministrativeinstalloflatestversionWiththenewinstaller.msi,run

mdc:\patchdir\latest

msiexec/ainstaller.msiTARGETDIR=c:\patchdir\latest

Page 56: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

5.CreateaPatchCreationProperties(.pcp)file<?xmlversion="1.0"encoding="utf-8"?>

<Wixxmlns="http://schemas.microsoft.com/wix/2003/01/wi">

<?defineWixDir=.?>

<?defineProj1="rtm"?>

<?defineProj2="latest"?>

<PatchCreation

Id="put-guid-here"

CleanWorkingFolder="yes"

OutputPath="patch.pcp"

WholeFilesOnly="yes"

>

<PatchInformation

Description="Patchestheandmagichappens.cmdfile"

Comments="Patchfornewdll"

ShortNames="no"

Languages="1033"

Compressed="yes"

Manufacturer="insert-organization-name-here"/>

<PatchMetadata

AllowRemoval="yes"

Description="Patchestheandmagichappens.cmdfile"

ManufacturerName="insert-organization-name-here"

TargetProductName="insert-product-name-here"

MoreInfoURL="insert-info-url-here"

Classification="Hotfix"

DisplayName="insert-product-abbreviaiton-herePatch1.

<FamilyDiskId="2"MediaSrcProp="insert-product-abbreviaiton-here

Name="insert-organization-name-hereandinsert-product-abbreviaiton-here

<UpgradeImagesrc="$(var.Proj2)\Installer.msi"Id="insert-product-abbreviaiton-here

<TargetImagesrc="$(var.Proj1)\Installer.msi"Order="2"

Id="insert-product-abbreviaiton-here

</UpgradeImage>

</Family>

<PatchSequence

PatchFamily="insert-organization-name-hereandinsert-product-abbreviaiton-here

Target="insert-product-abbreviaiton-hereTarget"/>

Page 57: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

</PatchCreation>

</Wix>

Notes:

The01inredintheabovefileisapatchid.Itshouldbeincrementedby1witheachpatch.Also,theId=under<PatchCreation>shouldbesettoanewGuidforeachpatchcreated.TheSequenceStartvalueisinfluencedbythenumberoffilesthatthepreviouspatchdelivered,aswellasthenumberoffilesthatthispatchwilldeliver.ThistellsPatchWiz.dlltostartassigningFilesequencenumbersfromthisnumber.Soifthispatchships11files,andthenextpatchusesaSequenceStartof1020,itwillsteponthe11thfile’sassignedsequencenumber.InthiscasethenextpatchwoulduseaSequenceStartof1030,and03asthepatchidtoavoidconflictswiththispatch.ThisschemehelpspreventthisbycoordinatingtheSequenceStart(filesequencenumbers)withthepatchsequencenumber.Also,notethattheSequenceStartofthefirstpatchmustbegreaterthanthenumberoffilesintheoriginalinstallation.Iftheoriginalinstallationcontainedmorethan1000files(rare),thentheSequenceStartforthefirstpatchmustbesettoahighervalue(e.g2010.)

Page 58: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

6.Createthepatchmspfilecandlepatch.wxs

lightpatch.wixobj-outpatch.pcp

msimsp-spatch.pcp-ppatch.msp-lmsimsp.log

Page 59: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

7.Runthepatchmsiexec/updatepatch.mspREINSTALL=ALL/L*vpatch.log

Page 60: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

UsingtheWixUIdialoglibraryTheWixUIdialoglibrarycontainsasetof"stock"dialogsprovidingthefamiliarwizard-stylesetupuserinterface.Severalstockdialogsetsaresupported--useoneUIReftoaddauserinterfacetoyoursetup.WixUIisalsocustomizable,fromthebitmapsshownintheUItoaddingandremovingcustomdialogs.

Note:TheWixUIdialoglibraryiscurrentlyattechnicalpreviewstatus.PleaseprovidefeedbackontheWiX-devsmailinglist.Aretheprovidedstockdialogsetsuseful?Doyouhavesuggestionsforothers?HatetheUI?Needanotherdialog?Basedonfeedback,theWixUIlibrarymightchangeinincompatibleways.

Page 61: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

UsingthestockdialogsetsTheWixUIstockdialogsetssupportseveralcommondialogsequences:

WixUI_Mondoincludesthefullsetofdialogs(hence"Mondo"):welcome,licenseagreement,setuptype(typical,custom,andcomplete),featurecustomization,directorybrowse,anddiskcost.Maintenance-modedialogsarealsoincluded.UseWixUI_Mondowhenyouhavesomeofyourproduct'sfeaturesaren'tinstalledbydefaultandthere'sameaningfuldifferencebetweentypicalandcompleteinstalls.

Note:WixUI_MondousesSetInstallLevelcontroleventstosettheinstalllevelwhentheuserchoosesTypicalorComplete.ForTypical,theinstalllevelissetto3;forComplete,1000.Fordetailsaboutfeaturelevelsandinstalllevels,seeINSTALLLEVELProperty.

WixUI_FeatureTreeisasimplerversionofWixUI_Mondothatomitsthesetuptypedialog.Instead,theusergoesdirectlyfromthelicenseagreementdialogtothefeaturecustomizationdialog.WixUI_FeatureTreeismoreappropriatethanWixUI_Mondowhenyourproductinstallsallfeaturesbydefault.WixUI_InstallDirdoesn'tallowtheusertochoosefeaturesbutaddsadialogtolettheuserchooseadirectorywheretheproductwillbeinstalled.

Note:TouseWixUI_InstallDir,youmustsetapropertynamedWIXUI_INSTALLDIRwithavalueoftheIDofthedirectoryyouwanttheusertobeabletospecifythelocationof.Forexample:

<DirectoryId="TARGETDIR"Name="SourceDir">

<DirectoryId="ProgramFilesFolder"Name="PFiles">

<DirectoryId="TESTFILEPRODUCTDIR"ShortName="WIXTEST"Name="TestFile">

...

</Directory>

</Directory>

</Directory>

...

<PropertyId="WIXUI_INSTALLDIR"Value="TESTFILEPRODUCTDIR"/>

<UIRefId="WixUI_InstallDir"/>

Page 62: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WixUI_MinimalisthemostspartanoftheWixUIstockdialogsets.Itssoledialogcombinesthewelcomeandlicense-agreementdialogsandomitsthefeaturecustomizationdialog.WixUI_Minimalisappropriatewhenyourproducthasnooptionalfeatures.

HowtoaddaWixUIstockdialogsettoaproductinstaller

Assumingyouhaveanexistinginstallerthat'sfunctionalbutjustlackingauserinterface,herearethestepsyouneedtofollowtouseaWixUIstockdialogset:

1. AddaUIRefelementtoyourinstallersourcecode,usinganIdattributeofoneoftheabovedialogsets.Forexample:

<Product...>

<UIRefId="WixUI_InstallDir"/>

</Product>

2. Addwixui.wixlibandtheappropriateWixUIlocalizationfiletoyourlightcommandline.Forexample:

lightMondo.wixobj%WIXUI_PATH%\WixUI.wixlib-loc%WIXUI_PATH%\WixUI_en-us.wxl-outMondo.msi

Forexamples,seethe.wxsfilesinthedoc/examples/wixuidirectory.

Page 63: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

SpecifyingalicensefileThestockdialogsetshaveadialogthatdisplaysanend-userlicenseagreement(EULA).Tospecifyyourproduct'slicense,includeaLicense.rtffileinthecurrentdirectorywhenyourunlight.Ifthereisn'tsuchafile,lightusestheLicense.rtffileintheuidirectory.

Page 64: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

UsingtranslatederrorandprogresstextBydefault,WixUIdoesn'tincludeanytranslatedErrororProgressTextelementsbydefault.YoucanincludethembyreferencingtheWixUI_ErrorProgressTextUIelement:

<UIRefId="WixUI_Minimal"/>

<UIRefId="WixUI_ErrorProgressText"/>

Page 65: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

CustomizingdialogsetsYoucanmosteasilyaddandremovedialogsfromthestockdialogsetsbycopyingoneoftheexistingsetsandmodifyingit.Foranexample,seetheprojectinthedoc/examples/wixui/customdirectory.Thefollowingtabledescribesthefiles:

Filename DescriptionCustomDialogSet.build NAntbuildfiletobuildthecustomdialogset.

BuildstheWixUIcommondialogelementsifneeded,thenbuildsCustomDialogSet.wxsandCustomDlg.wxstocreateCustomDialogSet.wixlib.

CustomDialogSet.wxs Customdialogsetdefinition.CopiedfromWixUI_FeatureTreesetandmodifiedtoaddCustomDlgaftertheinitialWelcomeDlg.

CustomDlg.wxs Simplecustomdialog.TestCustom.wxs WiXsourcecodethatconsumes

CustomDialogSet.wixlib.

Page 66: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ReplacingthestockbitmapsTheWixUIdialoglibraryincludesstockbitmapsforthebackgroundofthewelcomeandinstallation-completedialogsandthetopbanneroftheotherdialogs.Youcan"override"thosegraphicswithyourownforproduct-brandingpurposes.Toreplacestockbitmaps,addthefilesfromthetablebelowtoasubdirectorynamedBitmapsunderyourWiXsourcefile.

Filename Description Dimensionsbannrbmp.bmp Topbanner 500×63dlgbmp.bmp Backgroundbitmapusedonwelcomeand

install-completedialogs503×314

exclamic.ico Exclamationicononthewait-for-costingdialog

32×32

info.ico Informationicononthecancelanderrordialogs

32×32

New.ico Buttonglyphondirectory-browsedialog 16×16Up.ico Buttonglyphondirectory-browsedialog 16×16

Page 67: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WixSchema

Copyright(c)MicrosoftCorporation.Allrightsreserved.TheuseanddistributiontermsforthissoftwarearecoveredbytheCommonPublicLicense1.0(http://opensource.org/licenses/cpl.php)whichcanbefoundinthefileCPL.TXTattherootofthisdistribution.Byusingthissoftwareinanyfashion,youareagreeingtobeboundbythetermsofthislicense.Youmustnotremovethisnotice,oranyother,fromthissoftware.

SchemafordescribingWindowsInstallerdatabasefiles(.msi/.msm/.pcp).

RootElementsIncludeWix

TargetNamespacehttp://schemas.microsoft.com/wix/2003/01/wi

DocumentShouldLookLike<?xmlversion="1.0"?><Includexmlns="http://schemas.microsoft.com/wix/2003/01/wi">...</Include><?xmlversion="1.0"?><Wixxmlns="http://schemas.microsoft.com/wix/2003/01/wi">...</Wix>

AllElementsAdminExecuteSequenceAdminUISequenceAdvertiseExecuteSequence

Page 68: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

AllocateRegistrySpaceAppDataAppIdAppSearchAssemblyNameBillboardBillboardActionBinaryBindImageCategoryCCPSearchCertificateCertificateRefClassColumnComboBoxComplianceCheckComplianceDriveComponentComponentGroupComponentGroupRefComponentRefComponentSearchConditionConfigurationConfigurationDataControlCopyFileCostFinalizeCostInitializeCreateFolderCreateFoldersCreateShortcuts

Page 69: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

CustomCustomActionCustomActionRefCustomPropertyCustomTableDataDeleteServicesDependencyDialogDialogRefDigitalCertificateDigitalSignatureDirectoryDirectoryRefDirectorySearchDirectorySearchRefDisableRollbackDuplicateFilesEnsureTableEnvironmentErrorExclusionExecuteActionExtensionExternalFileFamilyFeatureFeatureRefFileFileCostFileSearchFileSearchRefFileShare

Page 70: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

FileTypeMaskFindRelatedProductsForceRebootFragmentFragmentRefGroupGroupRefHttpHeaderIconIgnoreModularizationIgnoreRangeIncludeIniFileIniFileSearchInstallAdminPackageInstallExecuteInstallExecuteAgainInstallExecuteSequenceInstallFilesInstallFinalizeInstallInitializeInstallODBCInstallServicesInstallUISequenceInstallValidateInterfaceIsolateComponentIsolateComponentsLaunchConditionsListBoxListItemListViewMedia

Page 71: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

MergeMergeRefMigrateFeatureStatesMIMEMimeMapModuleMoveFilesMsiPublishAssembliesMsiUnpublishAssembliesODBCDataSourceODBCDriverODBCTranslatorPackagePatchPatchCertificatesPatchCreationPatchFilesPatchInformationPatchMetadataPatchPackagePatchPropertyPatchSequencePerfCounterPermissionProcessComponentsProductProgIdProgressTextPropertyPropertyRefProtectFileProtectRangePublish

Page 72: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

PublishComponentsPublishFeaturesPublishProductRadioButtonRadioButtonGroupRecycleTimeRegisterClassInfoRegisterComPlusRegisterExtensionInfoRegisterFontsRegisterMIMEInfoRegisterProductRegisterProgIdInfoRegisterTypeLibrariesRegisterUserRegistryRegistrySearchRegistrySearchRefRegistryValueRemoveDuplicateFilesRemoveEnvironmentStringsRemoveExistingProductsRemoveFileRemoveFilesRemoveFolderRemoveFoldersRemoveIniValuesRemoveODBCRemoveRegistryValuesRemoveShortcutsReplacePatchReserveCostResolveSource

Page 73: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RMCCPSearchRowScheduleRebootSelfRegModulesSelfUnregModulesServiceArgumentServiceConfigServiceControlServiceDependencyServiceInstallSetODBCFoldersSFPCatalogSFPFileShortcutShowSqlDatabaseSqlFileSpecSqlLogFileSpecSqlScriptSqlStringStartServicesStopServicesSubscribeSubstitutionSymbolPathTargetFileTargetImageTargetProductCodeTextTextStyleTypeLibUIUIRef

Page 74: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

UITextUnpublishComponentsUnpublishFeaturesUnregisterClassInfoUnregisterComPlusUnregisterExtensionInfoUnregisterFontsUnregisterMIMEInfoUnregisterProgIdInfoUnregisterTypeLibrariesUpgradeUpgradeFileUpgradeImageUpgradeVersionUserValidateProductIDVerbWebAddressWebApplicationWebApplicationExtensionWebAppPoolWebDirWebDirPropertiesWebErrorWebFilterWebLogWebPropertyWebServiceExtensionWebSiteWebVirtualDirWixWriteEnvironmentStringsWriteIniValues

Page 75: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WriteRegistryValuesXmlFile

Page 76: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

AdminExecuteSequenceElement

Description

None

WindowsInstallerreferencesAdminExecuteSequenceTable

ParentsFragment,Include,Module,Product

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenChoiceofelements(min:0,max:unbounded)CostFinalize(min:0,max:unbounded):EndstheinternalinstallationcostingprocessbegunbytheCostInitializeaction.CostInitialize(min:0,max:unbounded):Initiatestheinternalinstallationcostingprocess.Custom(min:0,max:unbounded):Usetosequenceacustomaction.FileCost(min:0,max:unbounded):Initiatesdynamiccostingofstandardinstallationactions.InstallAdminPackage(min:0,max:unbounded):Copiestheproductdatabasetotheadministrativeinstallationpoint.InstallFiles(min:0,max:unbounded):CopiesfilesspecifiedintheFiletablefromthesourcedirectorytothedestinationdirectory.InstallFinalize(min:0,max:unbounded):Markstheendofasequenceofactionsthatchangethesystem.InstallInitialize(min:0,max:unbounded):Marksthebeginningofasequenceofactionsthatchangethesystem.InstallValidate(min:0,max:unbounded):Verifiesthatallcostedvolumeshaveenoughspacefortheinstallation.LaunchConditions(min:0,max:unbounded):Queriesthe

Page 77: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

LaunchConditiontableandevaluateseachconditionalstatementrecordedthere.ResolveSource(min:0,max:unbounded):DeterminesthelocationofthesourceandsetstheSourceDirpropertyifthesourcehasnotbeenresolvedyet.

AttributesNone

SeeAlsoWixSchema

Version2.0.4820.0

Page 78: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

AdminUISequenceElement

Description

None

WindowsInstallerreferencesAdminUISequenceTable

ParentsFragment,Include,Module,Product,UI

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenChoiceofelements(min:0,max:unbounded)CostFinalize(min:0,max:unbounded):EndstheinternalinstallationcostingprocessbegunbytheCostInitializeaction.CostInitialize(min:0,max:unbounded):Initiatestheinternalinstallationcostingprocess.Custom(min:0,max:unbounded):Usetosequenceacustomaction.ExecuteAction(min:0,max:unbounded):Initiatestheexecutionsequence.FileCost(min:0,max:unbounded):Initiatesdynamiccostingofstandardinstallationactions.InstallAdminPackage(min:0,max:unbounded):Copiestheproductdatabasetotheadministrativeinstallationpoint.InstallFiles(min:0,max:unbounded):CopiesfilesspecifiedintheFiletablefromthesourcedirectorytothedestinationdirectory.InstallFinalize(min:0,max:unbounded):Markstheendofasequenceofactionsthatchangethesystem.InstallInitialize(min:0,max:unbounded):Marksthebeginningofasequenceofactionsthatchangethesystem.InstallValidate(min:0,max:unbounded):Verifiesthatallcosted

Page 79: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

volumeshaveenoughspacefortheinstallation.LaunchConditions(min:0,max:unbounded):QueriestheLaunchConditiontableandevaluateseachconditionalstatementrecordedthere.Show(min:0,max:unbounded)

AttributesNone

SeeAlsoWixSchema

Version2.0.4820.0

Page 80: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

AdvertiseExecuteSequenceElement

Description

None

WindowsInstallerreferencesAdvtExecuteSequenceTable

ParentsFragment,Include,Module,Product

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenChoiceofelements(min:0,max:unbounded)CostFinalize(min:0,max:unbounded):EndstheinternalinstallationcostingprocessbegunbytheCostInitializeaction.CostInitialize(min:0,max:unbounded):Initiatestheinternalinstallationcostingprocess.CreateShortcuts(min:0,max:unbounded):Managesthecreationofshortcuts.Custom(min:0,max:unbounded):Usetosequenceacustomaction.TheonlycustomactionsthatareallowedintheAdvtExecuteSequencearetype19(0x013)type35(0x023)andtype51(0x033).InstallFinalize(min:0,max:unbounded):Markstheendofasequenceofactionsthatchangethesystem.InstallInitialize(min:0,max:unbounded):Marksthebeginningofasequenceofactionsthatchangethesystem.InstallValidate(min:0,max:unbounded):Verifiesthatallcostedvolumeshaveenoughspacefortheinstallation.MsiPublishAssemblies(min:0,max:unbounded):ManagestheadvertisementofCLRandWin32assemblies.PublishComponents(min:0,max:unbounded):ManagestheadvertisementofthecomponentsfromthePublishComponenttable.

Page 81: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

PublishFeatures(min:0,max:unbounded):Writeseachfeature'sstateintothesystemregistry.PublishProduct(min:0,max:unbounded):Managestheadvertisementoftheproductinformationwiththesystem.RegisterClassInfo(min:0,max:unbounded):ManagestheregistrationofCOMclassinformationwiththesystem.RegisterExtensionInfo(min:0,max:unbounded):Managestheregistrationofextensionrelatedinformationwiththesystem.RegisterMIMEInfo(min:0,max:unbounded):RegistersMIME-relatedregistryinformationwiththesystem.RegisterProgIdInfo(min:0,max:unbounded):ManagestheregistrationofOLEProgIdinformationwiththesystem.

AttributesNone

SeeAlsoWixSchema

Version2.0.4820.0

Page 82: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

AllocateRegistrySpaceElement

Description

Ensurestheneededamountofspaceexistsintheregistry.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 83: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

AppDataElement

Description

OptionalwayfordefiningAppData,generallyusedforcomplexCDATA.

WindowsInstallerreferencesNone

ParentsCategory

SeeAlsoWixSchema

Version2.0.4820.0

Page 84: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

AppIdElement

Description

ApplicationIDcontainingDCOMinformationfortheassociatedapplicationGUID.IfthiselementisnestedunderaFragment,Module,orProductelement,itmustbeadvertised.

WindowsInstallerreferencesAppIdTable,RegistryTable

ParentsComponent,File,Fragment,Include,Module,Product,TypeLib

InnerTextNone

ChildrenChoiceofelements(min:0,max:unbounded)Class(min:0,max:unbounded)

Attributes

Name Type Description RequiredId Uuid Setthisvaluetothe

AppIDGUIDthatcorrespondstothenamedexecutable.

Yes

ActivateAtStorage YesNoType Setthisvalueto'yes'toconfiguretheclienttoactivateonthesamesystemaspersistentstorage.

Advertise YesNoType Setthisvalueto'yes'inordertocreateanormalAppIdtablerow.Setthisvalueto'no'inorderto

Page 85: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

generateRegistryrowsthatperformsimilarregistration(withouttheoftenproblematicWindowsInstalleradvertisingbehavior).

Description String SetthisvaluetothedescriptionoftheAppId.ItcanonlybespecifiedwhentheAppIdisnotbeingadvertised.

DllSurrogate String SetthisvaluetospecifythattheclassisaDLLthatistobeactivatedinasurrogateEXEprocess,andthesurrogateprocesstobeusedisthepathofasurrogateEXEfilespecifiedbythevalue.

LocalService String SetthisvaluetothenameofaservicetoallowtheobjecttobeinstalledasaWin32service.

RemoteServerName String SetthisvaluetothenameoftheremoteservertoconfiguretheclienttorequesttheobjectberunataparticularmachinewheneveranactivationfunctioniscalledforwhichaCOSERVERINFOstructureisnotspecified.

Page 86: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RunAsInteractiveUser YesNoType Setthisvalueto'yes'toconfigureaclasstorunundertheidentityoftheusercurrentlyloggedonandconnectedtotheinteractivedesktopwhenactivatedbyaremoteclientwithoutbeingwrittenasaWin32service.

ServiceParameters String SetthisvaluetotheparameterstobepassedtoaLocalServiceoninvocation.

RemarksWhenbeingusedinunadvertisedmode,theattributesintheAppIdelementcorrespondtoregistrykeysasfollows(valuesthatcanbespecifiedinauthoringareinbold):Id

InGeneral[HKCR\AppID\{Id}]

SpecificExample[HKCR\AppID\{01234567-89AB-CDEF-0123-456789ABCDEF}]

ActivateAtStorageInGeneral

[HKCR\AppID\{Id}]ActivateAtStorage="ActivateAtStorage"

SpecificExample[HKCR\AppID\{01234567-89AB-CDEF-0123-456789ABCDEF}]ActivateAtStorage="Y"

DescriptionInGeneral

Page 87: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

[HKCR\AppID\{Id}]@="Description"

SpecificExample[HKCR\AppID\{01234567-89AB-CDEF-0123-456789ABCDEF}]@="MyAppIdDescription"

DllSurrogateInGeneral

[HKCR\AppID\{Id}]DllSurrogate="DllSurrogate"

SpecificExample[HKCR\AppID\{01234567-89AB-CDEF-0123-456789ABCDEF}]DllSurrogate="C:\surrogate.exe"

LocalServiceInGeneral

[HKCR\AppID\{Id}]LocalService="LocalService"

SpecificExample[HKCR\AppID\{01234567-89AB-CDEF-0123-456789ABCDEF}]LocalService="MyServiceName"

RemoteServerNameInGeneral

[HKCR\AppID\{Id}]RemoteServerName="RemoteServerName"

SpecificExample[HKCR\AppID\{01234567-89AB-CDEF-0123-456789ABCDEF}]RemoteServerName="MyRemoteServer"

RunAsInteractiveUserInGeneral

[HKCR\AppID\{Id}]RunAs="RunAsInteractiveUser"

Page 88: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

SpecificExample[HKCR\AppID\{01234567-89AB-CDEF-0123-456789ABCDEF}]RunAs="InteractiveUser"

ServiceParametersInGeneral

[HKCR\AppID\{Id}]ServiceParameters="ServiceParameters"

SpecificExample[HKCR\AppID\{01234567-89AB-CDEF-0123-456789ABCDEF}]ServiceParameters="-param"

SeeAlsoWixSchema

Version2.0.4820.0

Page 89: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

AppSearchElement

Description

Usesfilesignaturestosearchforexistingversionsofproducts.TheAppSearchactionmayusethisinformationtodeterminewhereupgradesaretobeinstalled.TheAppSearchactioncanalsobeusedtosetapropertytotheexistingvalueofanregistryor.inifileentry.AppSearchshouldbeauthoredintotheInstallUISequencetableandInstallExecuteSequencetable.TheinstallerpreventsTheAppSearchactionfromrunningintheInstallExecuteSequencesequenceiftheactionhasalreadyruninInstallUISequencesequence.TheAppSearchactionsearchesforfilesignaturesusingtheCompLocatortablefirst,theRegLocatortablenext,thentheIniLocatortable,andfinallytheDrLocatortable.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence,InstallUISequence

InnerText(xs:string)Textnodespecifiestheconditionoftheaction.

ChildrenNone

Attributes

Name Type Description RequiredAfter String Thenameofanactionthatthis

actionshouldcomeafter.

Before String Thenameofanactionthatthisactionshouldcomebefore.

Sequence Integer Avalueusedtoindicatethepositionofthisactionina

Page 90: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

sequence.Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema,ComponentSearch,FileSearch,IniFileSearch,RegistrySearch

Version2.0.4820.0

Page 91: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

AssemblyNameElement

Description

TheMsiAssemblyNametablespecifiestheschemafortheelementsofastrongassemblycachenamefora.NETFrameworkorWin32assembly.ConsiderusingtheAssemblyattributeonFileelementtohavethetoolsetpopulatetheseentriesautomatically.

WindowsInstallerreferencesMsiAssemblyNameTable

ParentsFile

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String Nameoftheattributeassociatedwith

thevaluespecifiedintheValuecolumn.

Yes

Value String ValueassociatedwiththenamespecifiedintheNamecolumn.

SeeAlsoWixSchema

Version2.0.4820.0

Page 92: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

BillboardElement

Description

BillboardtodisplayduringinstallofaFeature

WindowsInstallerreferencesBillboardTable,BBControlTable

ParentsBillboardAction

InnerTextNone

ChildrenSequence(min:1,max:1)

1. Control(min:0,max:unbounded):Onlycontrolsofstatictypesuchas:Text,Bitmap,Icon,orcustomcontrolcanbeplacedonabillboard.

Attributes

Name Type Description RequiredId String UniqueidentifierfortheBillboard. YesFeature String Featurewhosestatedeterminesifthe

Billboardisshown.

SeeAlsoWixSchema

Version2.0.4820.0

Page 93: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

BillboardActionElement

Description

BillboardactionduringwhichchildBillboardsaredisplayed

WindowsInstallerreferencesBillboardTable,BBControlTable

ParentsUI

InnerTextNone

ChildrenSequence(min:1,max:1)

1. Billboard(min:1,max:unbounded):OrderofBillboardelementsdeterminesorderofdisplay

Attributes

Name Type Description RequiredId String Actionnamethatdetermineswhenthe

Billboardshouldbeshown.Yes

SeeAlsoWixSchema

Version2.0.4820.0

Page 94: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

BinaryElement

Description

BinarydatausedforCustomActionelementsandUIcontrols.

WindowsInstallerreferencesBinaryTable

ParentsControl,Fragment,Include,Module,Product,SqlScript,UI

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String TheIdcannotbylongerthan55

characters.InordertopreventerrorsincaseswheretheIdismodularized,itshouldnotbelongerthan18characters.

Yes

SourceFile String Pathtothebinaryfile. src String Thisattributehasbeendeprecated;

pleaseusetheSourceFileattributeinstead.

SeeAlsoWixSchema

Version2.0.4820.0

Page 95: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

BindImageElement

Description

BindseachexecutableorDLLthatmustbeboundtotheDLLsimportedbyit.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 96: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

CategoryElement

Description

QualifiedpublishedcomponentforparentComponent

WindowsInstallerreferencesPublishComponentTable

ParentsComponent,Include

InnerTextNone

ChildrenSequence(min:0,max:unbounded)

1. AppData(min:0,max:unbounded)

Attributes

Name Type Description RequiredId Uuid AstringGUIDthatrepresentsthe

categoryofcomponentsbeinggroupedtogether.

Yes

AppData String Anoptionallocalizabletextdescribingthecategory.Thestringiscommonlyparsedbytheapplicationandcanbedisplayedtotheuser.Itshoulddescribethecategory.

Feature String Featurethatcontrolstheadvertisementofthecategory.DefaultstotheprimaryFeaturefortheparentComponent.

Qualifier String AtextstringthatqualifiesthevalueintheIdattribute.AqualifierisusedtodistinguishmultipleformsofthesameComponent,suchasaComponent

Yes

Page 97: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

thatisimplementedinmultiplelanguages.

SeeAlsoWixSchema

Version2.0.4820.0

Page 98: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

CCPSearchElement

Description

Usesfilesignaturestovalidatethatqualifyingproductsareinstalledonasystembeforeanupgradeinstallationisperformed.TheCCPSearchactionshouldbeauthoredintotheInstallUISequencetableandInstallExecuteSequencetable.TheinstallerpreventstheCCPSearchactionfromrunningintheInstallExecuteSequencesequenceiftheactionhasalreadyruninInstallUISequencesequence.TheCCPSearchactionmustcomebeforetheRMCCPSearchaction.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence,InstallUISequence

InnerText(xs:string)Textnodespecifiestheconditionoftheaction.

ChildrenNone

Attributes

Name Type Description RequiredAfter String Thenameofanactionthatthis

actionshouldcomeafter.

Before String Thenameofanactionthatthisactionshouldcomebefore.

Sequence Integer Avalueusedtoindicatethepositionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlso

Page 99: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WixSchema,RMCCPSearch,ComplianceCheckVersion2.0.4820.0

Page 100: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

CertificateElement

Description

Usedtoinstallandunintallcertificates.

WindowsInstallerreferencesNone

ParentsComponent,Include

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String Uniqueidentifierforthis

certificateintheinstallationpackage.

Yes

BinaryKey String ReferencetoaBinaryelementthatwillstorethecertificateasastreaminsidethepackage.ThisattributecannotbespecifiedwiththeCertificatePathattribute.

CertificatePath String IftheRequestattributeis"no"thenthisattributeisthepathtothecertificatefileoutsideofthepackage.IftheRequestattributeis"yes"thenthisatributeisthecertificateauthoritytorequestthecertificatefrom.

Page 101: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ThisattributemaybesetviaaformattedProperty(e.g.[MyProperty]).

Name String Nameofthecertificatethatwillbeinstalledoruninstalledinthespecifiedstore.ThisattributemaybesetviaaformattedProperty(e.g.[MyProperty]).

Yes

Overwrite YesNoType PFXPassword String IftheBinarystreamorpath

tothefileoutsideofthepackageisapasswordprotectedPFXfile,thepasswordforthatPFXmustbespecifiedhere.ThisattributemaybesetviaaformattedProperty(e.g.[MyProperty]).

Request YesNoType ThisattributecontrolswhethertheCertificatePathattributeisapathtoacertificatefile(Request='no')orthecertificateauthoritytorequestthecertificatefrom(Request='yes').

StoreLocation Enumeration Thisattribute'svalueshouldbeoneofthefollowing:currentUser

localMachine

Yes

StoreName Enumeration Thisattribute'svalueshouldbeoneofthefollowing:ca

Containsthecertificatesofcertificateauthoritiesthattheusertruststo

Yes

Page 102: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

issuecertificatestoothers.Certificatesinthesestoresarenormallysuppliedwiththeoperatingsystemorbytheuser'snetworkadministrator.

myUsethe"personal"valueinstead.

personalContainspersonalcertificates.Thesecertificateswillusuallyhaveanassociatedprivatekey.Thisstoreisoftenreferredtoasthe"MY"certificatestore.

request

rootContainsthecertificatesofcertificateauthoritiesthattheusertruststoissuecertificatestoothers.Certificatesinthesestoresarenormallysuppliedwiththeoperatingsystemorbytheuser'snetworkadministrator.Certificatesinthisstorearetypicallyself-signed.

otherPeopleContainsthecertificatesofthosethattheusernormallysends

Page 103: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

envelopedmessagestoorreceivessignedmessagesfrom.SeeMSDNdocumentationformoreinformation.

SeeAlsoWixSchema,CertificateRef

Version2.0.4820.0

Page 104: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

CertificateRefElement

Description

AssociatesacertificatewiththeparentWebSite.TheCertificateelementshouldbeinthesameComponentastheparentWebSite.

WindowsInstallerreferencesNone

ParentsWebSite

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String Theidentifierofthereferenced

Certificate.Yes

SeeAlsoWixSchema,Certificate

Version2.0.4820.0

Page 105: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ClassElement

Description

COMClassregistrationforparentComponent.

WindowsInstallerreferencesClassTable,ProgIdTable,RegistryTable,AppIdTable

ParentsAppId,Component,File,Include,TypeLib

InnerTextNone

ChildrenChoiceofelements(min:0,max:unbounded)FileTypeMask(min:0,max:unbounded)Interface(min:0,max:unbounded):TheseInterfaceswillberegisteredwiththeparentClassandTypeLib(ifpresent).ProgId(min:0,max:unbounded):AProgIdassociatedwithClassmustbeachildelementoftheClasselement

Attributes

Name Type DescriptionId Uuid TheClassidentifier(CLSID)ofaCOM

server.Advertise YesNoType Setthisvalueto"yes"inordertocreatea

normalClasstablerow.SetthisvaluetoinordertogenerateRegistryrowsthatperformsimilarregistration(withouttheproblematicWindowsInstalleradvertisingbehavior).

AppId Uuid ThisattributeisonlyallowedwhenaClassisadvertised.UsingthisattributewillreferenceanApplicationIDcontainingDCOMinformationfortheassociatedapplication

Page 106: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

GUID.ThevaluemustcorrespondtoanAppId/@IdofanAppIdelementnestedunderaFragment,Module,orProductelement.associateanAppIdwithanon-advertisedclass,nesttheclasswithinaparentAppIdelement.

Argument String ThiscolumnisoptionalonlywhentheContextcolumnissetto"LocalServer""LocalServer32"servercontext.ThetextisregisteredastheargumentagainsttheOLEserverandisusedbyOLEforinvokingtheserver.NotethattheresolutionofpropertiesintheArgumentfieldislimited.Apropertyformattedas[Property]inthisfieldcanonlyberesolvedifthepropertyalreadyhastheintendedvaluewhenthecomponentowningtheclassisinstalled.Forexample,fortheargument"[#MyDoc.doc]"toresolvetothecorrectvalue,thesameprocessmustbeinstallingthefileMyDoc.docandthecomponentthatownstheclass.

Context List Theservercontext(s)forthisserver.Thisattribute'svalueshouldbeaspace-delimitedlistcontaingoneormoreofthefollowing:LocalServer

A16-bitlocalserverapplication.

LocalServer32A32-bitlocalserverapplication.

InprocServerA16-bitin-processserverDLL.

InprocServer32A32-bitin-processserverDLL.

Control YesNoType Setthisattribute'svalueto'yes'toidentifyanobjectasanActiveXControl.Thedefaultvalueis'no'.Seehttp://msdn.microsoft.com/library/default.asp?

Page 107: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

url=/library/en-us/com/htm/reg_2fn0.aspmoreinformation.

Description String LocalizeddescriptionassociatedwiththeClassIDandProgramID.

Handler String Thedefaultinprochandler.MaybeoptionallyprovidedonlyforContext=LocalServerorLocalServer32.Valueof"1"createsa16-bitInprocHandler(appearingastheInprocHandlervalue).Valueof"2"createsa32-bitInprocHandler(appearingastheInprocHandler32value).Valueof"3"creates16-bitaswellas32-bitInprocHandlers.non-numericvalueistreatedasasystemfilethatservesasthe32-bitInprocHandler(appearingastheInprocHandler32value).

Icon String ThefileprovidingtheiconassociatedwiththisCLSID.ReferencetoanIconelement(shouldmatchtheIdattributeofanIconelement).ThisiscurrentlynotsupportedifthevalueoftheAdvertiseattributeis"no".

IconIndex Integer Iconindexintotheiconfile.Insertable YesNoType SpecifiestheCLISDmaybeinsertable.Programmable YesNoType SpecifiestheCLSIDmaybeprogrammable.RelativePath YesNoType Whenthevalueis"yes",thebarefilename

canbeusedforCOMservers.Theinstallerregistersthefilenameonlyinsteadofthecompletepath.Thisenablestheserverincurrentdirectorytotakeprecedenceandallowsmultiplecopiesofthesamecomponent.

SafeForInitializing YesNoType MayonlybespecifiedifthevalueoftheAdvertiseattributeis"no".

SafeForScripting YesNoType MayonlybespecifiedifthevalueoftheAdvertiseattributeis"no".

Server String MayonlybespecifiedifthevalueoftheAdvertiseattributeis"no".FileIdofthe

Page 108: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

serverfile.IfthiselementisnestedunderaFileelement,thisvaluedefaultstothevalueoftheparentFile/@Id.

ThreadingModel Enumeration ThreadingmodelfortheCLSID.Thisattribute'svalueshouldbeoneofthefollowing:apartment

free

both

neutral

single

rental

Version String VersionfortheCLSID.

RemarksWhenbeingusedinunadvertisedmode,theattributesintheClasselementcorrespondtoregistrykeysasfollows(valuesthatcanbespecifiedinauthoringareinbold):Id/Context/Server

InGeneral[HKCR\CLSID\{Id}\Context1]@="[!Server]"[HKCR\CLSID\{Id}\Context2]@="[!Server]"

SpecificExample[HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\LocalServer]@="[!comserv.dll]"[HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\LocalServer32]@="[!comserv.dll]"

AppIdInGeneral

[HKCR\CLSID\{Id}]

Page 109: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

AppId="{AppId}"

SpecificExample[HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}]AppId="{00000000-89AB-0000-0123-000000000000}"

ArgumentInGeneral

[HKCR\CLSID\{Id}\Context]@="[!Server]Argument"

SpecificExample[HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\LocalServer32]@="[!comserv.dll]/arg1/arg2/arg3"

ControlInGeneral

Value"yes"specified:[HKCR\CLSID\{Id}\Control]

SpecificExample[HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\Control]

DescriptionInGeneral

[HKCR\CLSID\{Id}]@="Description"

SpecificExample[HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}]@="DescriptionofExampleCOMComponent"

HandlerInGeneral

Value"1"specified:[HKCR\CLSID\{Id}\InprocHandler]@="ole.dll"Value"2"specified:

Page 110: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

[HKCR\CLSID\{Id}\InprocHandler32]@="ole32.dll"Value"3"specified:[HKCR\CLSID\{Id}\InprocHandler]@="ole.dll"[HKCR\CLSID\{Id}\InprocHandler32]@="ole32.dll"Othervaluespecified:[HKCR\CLSID\{Id}\InprocHandler32]@="Handler"

SpecificExample(forothervalue)[HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\InprocHandler32]@="handler.dll"

Icon/IconIndexThisisnotcurrentlyhandledproperly.

InsertableInGeneral

Value"no"specified:[HKCR\CLSID\{Id}\NotInsertable]Value"yes"specified:[HKCR\CLSID\{Id}\Insertable]

SpecificExample[HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\Insertable]

ProgrammableInGeneral

Value"yes"specified:[HKCR\CLSID\{Id}\Programmable]

SpecificExample[HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\Programmable]

RelativePathUnsupported.PleasecontributethisbacktoWiXifyouknow.

Page 111: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

SafeForInitializingInGeneral

Value"yes"specified:[HKCR\CLSID\{Id}\ImplementedCategories\{7DD95802-9882-11CF-9FA9-00AA006C42C4}]

SpecificExample[HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\ImplementedCategories\{7DD95802-9882-11CF-9FA9-00AA006C42C4}]

SafeForScriptingInGeneral

Value"yes"specified:[HKCR\CLSID\{Id}\ImplementedCategories\{7DD95801-9882-11CF-9FA9-00AA006C42C4}]

SpecificExample[HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\ImplementedCategories\{7DD95801-9882-11CF-9FA9-00AA006C42C4}]

ThreadingModelInGeneral

[HKCR\CLSID\{Id}\Context]ThreadingModel="ThreadingModel"

SpecificExample[HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\LocalServer32]ThreadingModel="Apartment"

TypeLibId(fromparentTypeLib/@Id)InGeneral

[HKCR\CLSID\{Id}\TypeLib]@="{TypeLibId}"

SpecificExample[HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\TypeLib]@="{11111111-89AB-1111-0123-111111111111}"

Page 112: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

VersionInGeneral

[HKCR\CLSID\{Id}\Version]@="Version"

SpecificExample[HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\Version]@="1.0.0.0"

SeeAlsoWixSchema,AppId

Version2.0.4820.0

Page 113: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ColumnElement

Description

ColumndefinitionforaCustomTable

WindowsInstallerreferencesNone

ParentsCustomTable

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String Identifierforthecolumn. YesCategory Enumeration Categoryofthiscolumn.This

attribute'svalueshouldbeoneofthefollowing:Text

UpperCase

LowerCase

Integer

DoubleInteger

TimeDate

Identifier

Property

Filename

Page 114: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WildCardFilename

Path

Paths

AnyPath

DefaultDir

RegPath

Formatted

Template

Condition

Guid

Version

Language

Binary

CustomSource

Cabinet

Shortcut

Description String Descriptionofthiscolumn. KeyColumn Integer Columninthetablein

KeyTableattribute.

KeyTable String Tableinwhichthiscolumnisanexternalkey.Canbesemicolondelimited.

Localizable YesNoType Whetherthiscolumncanbelocalized.

MaxValue Integer Maximumvalueforanumericvalue,dateorversioninthiscolumn.

MinValue Integer Minimumvalueforanumericvalue,dateorversioninthis

Page 115: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

column.

Modularize ModularizeType Howthiscolumnshouldbemodularized,ifatall.

Nullable YesNoType Whetherthiscolumncanbeleftnull.

PrimaryKey YesNoType Whetherthiscolumnisaprimarykey.

Set String Semicolondelimitedlistofpermissiblevalues.

Type Enumeration Thetypeofthiscolumn.Thisattribute'svalueshouldbeoneofthefollowing:binary

int

string

Yes

Width Integer Widthofthiscolumn.

SeeAlsoWixSchema

Version2.0.4820.0

Page 116: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ComboBoxElement

Description

SetofitemsforaparticularComboBoxcontroltiedtoaninstallProperty

WindowsInstallerreferencesComboBoxTable,ControlTable,DialogTable

ParentsControl,UI

InnerTextNone

ChildrenSequence(min:1,max:1)

1. ListItem(min:0,max:unbounded):entryforComboBoxtable

Attributes

Name Type Description RequiredProperty String Propertytiedtothisgroup Yes

SeeAlsoWixSchema

Version2.0.4820.0

Page 117: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ComplianceCheckElement

Description

AddsarowtotheCCPSearchtable.

WindowsInstallerreferencesCCPSearchTable,SignatureTable

ParentsFragment,Include,Product

InnerTextNone

ChildrenSequence(min:1,max:1)

1. ComplianceDrive(min:0,max:1):StartssearchesfromtheCCP_DRIVE.

2. ComponentSearch(min:0,max:unbounded)3. RegistrySearch(min:0,max:unbounded)4. IniFileSearch(min:0,max:unbounded)5. DirectorySearch(min:0,max:unbounded)6. FileSearch(min:0,max:unbounded)

AttributesNone

SeeAlsoWixSchema,Property

Version2.0.4820.0

Page 118: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ComplianceDriveElement

Description

SetstheparentofanestedDirectorySearchelementtoCCP_DRIVE.

WindowsInstallerreferencesNone

ParentsComplianceCheck,Property

InnerTextNone

ChildrenChoiceofelements(min:1,max:1)DirectorySearch(min:1,max:1)DirectorySearchRef(min:1,max:1)

AttributesNone

SeeAlsoWixSchema

Version2.0.4820.0

Page 119: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ComponentElement

Description

ComponentforparentDirectory

WindowsInstallerreferencesComponentTable,ConditionTable,DirectoryTable

ParentsDirectory,DirectoryRef

InnerTextNone

ChildrenChoiceofelements(min:0,max:unbounded)AppId(min:0,max:unbounded)Category(min:0,max:unbounded)Certificate(min:0,max:unbounded)Class(min:0,max:unbounded)Condition(min:0,max:unbounded)CopyFile(min:0,max:unbounded)CreateFolder(min:0,max:unbounded)Environment(min:0,max:unbounded)Extension(min:0,max:unbounded)File(min:0,max:unbounded)FileShare(min:0,max:unbounded)IniFile(min:0,max:unbounded)Interface(min:0,max:unbounded)IsolateComponent(min:0,max:unbounded)ODBCDataSource(min:0,max:unbounded)ODBCDriver(min:0,max:unbounded)ODBCTranslator(min:0,max:unbounded)ProgId(min:0,max:unbounded)

Page 120: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Registry(min:0,max:unbounded)RemoveFile(min:0,max:unbounded)RemoveFolder(min:0,max:unbounded)ReserveCost(min:0,max:unbounded)ServiceConfig(min:0,max:unbounded)ServiceControl(min:0,max:unbounded)ServiceInstall(min:0,max:unbounded)Shortcut(min:0,max:unbounded)SqlDatabase(min:0,max:unbounded)SqlScript(min:0,max:unbounded)SqlString(min:0,max:unbounded)TypeLib(min:0,max:unbounded)User(min:0,max:unbounded)WebAppPool(min:0,max:unbounded)WebDir(min:0,max:unbounded)WebFilter(min:0,max:unbounded)WebProperty(min:0,max:unbounded)WebServiceExtension(min:0,max:unbounded)WebSite(min:0,max:unbounded)WebVirtualDir(min:0,max:unbounded)XmlFile(min:0,max:unbounded)AnyElementnamespace='##other'processContents='Lax'

Attributes

Name Type DescriptionId String Componentidentifier;thisistheprimarykeyforidentifying

components.ComPlusFlags Integer SetthisattributetocreateaComPlusentry.

shouldbetheexportflagsusedthe.msifile.FormoreinformationseetheCOM+documentationinthePlatformSDK.

DisableRegistryReflection YesNoType Setthisattributeto'yes'inordertodisableregistryreflectiononallexistingandthiscomponent.Whensetto'yes',theWindowsInstaller

Page 121: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

callstheRegDisableReflectionKeyoneachkeyaccessedbythecomponent.WindowsInstallerversion4.0andisignoredon32-bitsystems.

DiskId String ThisattributemustbeseteitheronaComponentelementorallofitschildrenFileattributeshouldcorrespondtotheIdattributeofaelementauthoredelsewhere.betweenacomponent(orpackagingoptionstothevaluesspecifiedintheMediaelement(valuessuchascompressionlevel,cabembedding,etc...).

DriverAddRemovePrograms YesNoType SpecifiesthattheDIFxAppCustomActionsshouldaddanentryintheAdd/RemoveProgramsControlThedefaultis'yes'.

DriverDeleteFiles YesNoType Ifsetto"yes",configuresDIFxApptodeletebinaryfilesthatwerecopiedtothesystemfromthedriveradriverpackagewasinstalled.Ifthisattributeissetto"no"ornotpresent,DIFxAppdoesnotfromasystem.NotethatconfiguringDIFxApptodeletethesefilesiscontrolledbythecomponentthatrepresentsthedriverpackageintheMsiDriverPackagescustomtable.DriverDeleteFilesto"yes"setsthecorrespondingbitintheFlagsentryvalue.SettingDriverLegacycorrespondingbitintheFlagsentryvalue.Ifthisattributeisnotpresent,DIFxAppuses

DriverForceInstall YesNoType SpecifiesthattheDIFxAppCustomActionsshouldforcetheinstallationofanewPlugandPlaydriverevenifthecurrentlyinstalleddriveronthedeviceisabettermatchthanthenewdriver.excellentwaytoensuretheDIFxAppCustomActionsrecognizetheComponentcontainsThedefaultisnullwhichmeanstheComponentdoesnotinstalladriverviaDIFxAppCustomActions.Seehttp://www.microsoft.com/whdc/driver/install/difxtools.mspxformoreinformation.

DriverLegacy YesNoType Ifsetto"yes",configuresDIFxApptoinstallunsigned

Page 122: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

driverpackagesanddriverpackageswithmissingFormoreinformation,see"InstallingUnsignedDriverPackagesinLegacyMode"earlierinthispaper.attributeissetto"no"ornotpresent,DIFxAppwillinstallonlysigneddriverpackages.NoteDIFxApptoinstallunsigneddriversiscontrolledbytheFlagsentryvalueofthecomponentdriverpackageintheMsiDriverPackagescustomtable.SettingDriverLegacyto"yes"setstheFlagsentryvalue.SettingDriverLegacyto"no"clearsthebitintheFlagsentryvaluethatconfiguresDIFxApptoinstallunsigneddriverpackages.Ifthisattributeisnotpresent,DIFxAppusesadefaultvalueof"no".

DriverPlugAndPlayPrompt YesNoType SpecifiesthattheDIFxAppCustomActionsshouldprompttheusertoconnectthePlugandPlayconnected.Thedefaultis'yes'.

DriverSequence Integer Specifiesanoptionalinstallationsequencenumber.DIFxAppCustomActionsinstallthedriverpackagesininstallationpackageintheorderofincreasingsequencenumbers.Thesamesequencenumbercanbeusedmorethanonedriver;however,theorderinwhichpackageswiththesamesequencenumberareactuallyinstalledcannotbedetermined.

Guid ComponentGuid Thisvalueshouldbeaguidthatuniquelyidentifiesthiscomponent'scontents,language,platform,andversion.It'salsopossibletosetthevaluetoanemptystringtospecifyanunmanagedcomponent.componentsareasecurityvulnerabilitybecausethecomponentcannotberemovedorrepairedInstaller(itisessentiallyanunpatchable,permanentcomponent).Therefore,aguidshouldforanycomponentwhichcontainsresourcesthatmayneedtobepatchedinthefuture.

KeyPath YesNoType Ifthisattribute'svalueissetto'yes',thentheDirectoryofthisComponentisusedkeyorFileastheKeyPathofacomponent,settheKeyPathattributeto'yes'ononeofthosechildelements.

Location Enumeration Thisattribute'svalueshouldbeoneofthefollowing:

Page 123: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

localPreventsthecomponentfromrunningfromthesourceorthenetwork(thisisthedefaultbehaviorifthisattributeisnotset).

sourceEnforcesthatthecomponentcanonlyberunfromthesource(itcannotberunfromtheuser'scomputer).

eitherAllowsthecomponenttorunfromsourceorlocally.

NeverOverwrite YesNoType Ifthisattributeissetto'yes',theinstallerdoesnotinstallorreinstallthecomponentifakeypathfileorakeypathregistryentryforthecomponentalreadyapplicationdoesregisteritselfasaclientofthecomponent.UsethisflagonlyforcomponentsthatarebeingregisteredbytheRegistrytable.forcomponentsregisteredbytheAppId,Class,Extension,ProgId,MIME,andVerbtables.

Permanent YesNoType Ifthisattributeissetto'yes',theinstallerdoesnotremovethecomponentduringanuninstall.TheinstallerregistersanextrasystemclientforthecomponentinInstallerregistrysettings(whichbasicallyjustmeansthatatleastoneproductisalwaysreferencingthiscomponent).Notethatthisoptiondiffersfromtheofnotsettingaguidbecausealthoughthecomponentispermanent,itisstillpatchable(becauseWindowsInstallerstilltracksit),it'sjustnotuninstallable.

SharedDllRefCount YesNoType Ifthisattribute'svalueissetto'yes',theinstallerincrementsthereferencecountofthecomponent'skeyfile.installerincrementsthereferencecountonlyifthereferencecountalreadyexists.

Transitive YesNoType Ifthisattributeissetto'yes',theinstallerreevaluatesthevalueofthestatementintheConditionuponareinstall.thevaluewaspreviouslyFalseandhaschangedtotheinstallerinstallsthecomponent.previouslyTrueandhas

Page 124: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

removesthecomponentevenifthecomponenthasotherproductsasclients.

Win64 YesNoType Setthisattributeto'yes'tomarkthisasa64-bitcomponent.Thisattributefacilitatespackagesthatincludeboth32-bitand64-bitcomponents.Ifthisbitisnotset,thecomponentisregisteredasa32-bitcomponent.Ifthisisa64-bitcomponent,setthisbitandassignanewGUIDintheGuidattribute.

Anyattributenamespace='##other'processContents='lax'

SeeAlsoWixSchema,ComponentRef,Media

Version2.0.4820.0

Page 125: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ComponentGroupElement

Description

Groupstogethermultiplecomponentstobeusedinotherlocations.

WindowsInstallerreferencesNone

ParentsFragment

InnerTextNone

ChildrenChoiceofelements(min:1,max:unbounded)ComponentRef(min:1,max:unbounded)AnyElementnamespace='##other'processContents='Lax'

Attributes

Name Type Description RequiredId String IdentifierfortheComponentGroup. YesAnyattributenamespace='##other'processContents='lax'

SeeAlsoWixSchema,ComponentGroupRef

Version2.0.4820.0

Page 126: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ComponentGroupRefElement

Description

CreateareferencetoaComponentGroupinanotherFragment.

WindowsInstallerreferencesNone

ParentsFeature,FeatureRef,Module

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String Theidentifierofthe

ComponentGrouptoreference.Yes

Primary YesNoType Setthisattributeto'yes'inordertomaketheparentfeatureofthiscomponenttheprimaryfeatureforthiscomponent.Componentsmaybelongtomultiplefeatures.Bydesignatingafeatureastheprimaryfeatureofacomponent,youensurethatwheneveracomponentisselectedforinstall-on-demand(IOD),theprimaryfeaturewillbetheonetoinstallit.Thisattributeshouldonlybesetifacomponentactuallynestsundermultiplefeatures.Ifacomponentnestsunderonlyonefeature,thatfeatureistheprimaryfeatureforthe

Page 127: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

component.Youcannotsetmorethanonefeatureastheprimaryfeatureofagivencomponent.

SeeAlsoWixSchema,ComponentGroup

Version2.0.4820.0

Page 128: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ComponentRefElement

Description

CreateareferencetoaFeatureelementinanotherFragment.

WindowsInstallerreferencesNone

ParentsComponentGroup,Feature,FeatureRef,Module

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String TheidentifieroftheComponent

elementtoreference.Yes

Primary YesNoType Setthisattributeto'yes'inordertomaketheparentfeatureofthiscomponenttheprimaryfeatureforthiscomponent.Componentsmaybelongtomultiplefeatures.Bydesignatingafeatureastheprimaryfeatureofacomponent,youensurethatwheneveracomponentisselectedforinstall-on-demand(IOD),theprimaryfeaturewillbetheonetoinstallit.Thisattributeshouldonlybesetifacomponentactuallynestsundermultiplefeatures.Ifacomponentnestsunderonlyonefeature,thatfeatureistheprimaryfeatureforthe

Page 129: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

component.Youcannotsetmorethanonefeatureastheprimaryfeatureofagivencomponent.

SeeAlsoWixSchema,Component

Version2.0.4820.0

Page 130: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ComponentSearchElement

Description

SearchesforfileordirectoryandassignstovalueofparentProperty.

WindowsInstallerreferencesCompLocatorTable,SignatureTable

ParentsComplianceCheck,Property

InnerTextNone

ChildrenChoiceofelements(min:0,max:1)DirectorySearch(min:0,max:1)DirectorySearchRef(min:0,max:1)FileSearch(min:0,max:1)FileSearchRef(min:0,max:1)

Attributes

Name Type Description RequiredId String YesGuid Uuid ThecomponentIDofthe

componentwhosekeypathistobeusedforthesearch.

Type Enumeration MustbefileiflastchildisFileSearchelementandmustbedirectoryiflastchildisDirectorySearchelement.Thisattribute'svalueshouldbeoneofthefollowing:directory

file

Page 131: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

SeeAlsoWixSchema,IniFileSearch,RegistrySearch

Version2.0.4820.0

Page 132: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ConditionElement

Description

Conditionsforcomponents,controls,features,andproducts.Theconditionisspecifiedintheinnertextoftheelement.

WindowsInstallerreferencesComponentTable,ControlConditionTable,ConditionTable,LaunchConditionTable

ParentsComponent,Control,Feature,Fragment,Include,Product

InnerText(xs:string)UnderaComponentelement,theconditionbecomestheconditionofthecomponent.UnderaControlelement,theconditionbecomesaControlConditionentry.UnderaFeatureelement,theconditionbecomesaConditionentry.UnderaFragmentorProductelement,theconditionbecomesaLaunchConditionentry.

ChildrenNone

Attributes

Name Type Description RequiredAction Enumeration UsedonlyunderControlelements

andisrequired.Allowsspecificactionstobeappliedtoacontrolbasedontheresultofthiscondition.Thisattribute'svalueshouldbeoneofthefollowing:default

enable

disable

hide

Page 133: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

show

Level String UsedonlyunderFeatureelementsandisrequired.AllowsmodifyingthelevelofaFeaturebasedontheresultofthiscondition.

Message String UsedonlyunderFragmentorProductelementsandisrequired.Setthevaluetothetexttodisplaywhentheconditionfailsandtheinstallationmustbeterminated.

SeeAlsoWixSchema

Version2.0.4820.0

Page 134: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ConfigurationElement

Description

Definestheconfigurableattributesofmergemodule.

WindowsInstallerreferencesNone

ParentsModule

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredContextData String Specifiesasemanticcontext

fortherequesteddata.

DefaultValue String Specifiesadefaultvaluefortheiteminthisrecordifthemergetooldeclinestoprovideavalue.

Description String Descriptionforauthoring. DisplayName String Displaynameforauthoring. Format Enumeration Specifiestheformatofthe

databeingchanged.Thisattribute'svalueshouldbeoneofthefollowing:Text

Key

Integer

Yes

Page 135: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Bitfield

HelpKeyword String Keywordintochmfileforauthoring.

HelpLocation String Locationofchmfileforauthoring.

KeyNoOrphan YesNoType DoesnotmergeruleaccordingtorulesinMSISDK.

Name String Definesthenameoftheconfigurableitem.

Yes

NonNullable YesNoType Ifyes,nullisnotavalidentry. Type String Specifiesthetypeofthedata

beingchanged.

SeeAlsoWixSchema

Version2.0.4820.0

Page 136: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ConfigurationDataElement

Description

Datatouseasinputtoaconfigurablemergemodule.

WindowsInstallerreferencesNone

ParentsMerge

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredName String KeyintotheModuleConfiguration

table.Yes

Value String Valuetobepassedtoconfigurablemergemodule.

Yes

SeeAlsoWixSchema

Version2.0.4820.0

Page 137: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ControlElement

Description

None

WindowsInstallerreferencesControlTable,ComboBoxTable,DialogTable,ListBoxTable,ListViewTable,RadioButtonTable

ParentsBillboard,Dialog

InnerTextNone

ChildrenSequence(min:1,max:1)

1. Text(min:0,max:1):alternativetoTextattributewhenCDATAisneededtoescapeXMLdelimiters

2. ComboBox(min:0,max:1):ComboBoxtablewithListItemchildren

3. ListBox(min:0,max:1):ListBoxtablewithListItemchildren4. ListView(min:0,max:1):ListViewtablewithListItem

children5. RadioButtonGroup(min:0,max:1):RadioButtontablewith

RadioButtonchildren6. Property(min:0,max:1):Propertytableentryforthe

Propertytablecolumnassociatedwiththiscontrol7. Binary(min:0,max:1):Iconreferencediniconcolumnof

row8. Choiceofelements(min:0,max:unbounded)

Condition(min:0,max:unbounded):Conditiontospecifyactionsforthiscontrolbasedontheoutcomeofthecondition.Publish(min:0,max:unbounded)

Page 138: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Subscribe(min:0,max:unbounded)

Attributes

Name Type Description RequiredId String YesBitmap YesNoType onlyvalidfor

RadioButtonandPushButtonControls

Cancel YesNoType yesifthisisthecontrolinvokedoncancelofdialog

CDROM YesNoType onlyvalidforVolumeandDirectoryControls

CheckBoxValue String OnlyforCheckBoxcontroltosetPropertytoavalueoncheck

ComboList YesNoType onlyvalidforComboBoxControls

Default YesNoType yesifthiscontrolinvokedbythereturnkey

Disabled YesNoType ElevationShield YesNoType Onlyvalidfor

PushButtoncontrols.ThisattributeaddstheUserAccountControl(UAC)elevationicon(shieldicon)tothePushButtoncontrol.Ifthisattribute'svalueis

Page 139: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

'yes'andtheinstallationisnotyetrunningwithelevatedprivileges,thepushbuttoncontroliscreatedusingtheUserAccountControl(UAC)elevationicon(shieldicon).Ifthisattribute'svalueis'yes'andtheinstallationisalreadyrunningwithelevatedprivileges,thepushbuttoncontroliscreatedusingtheothericonattributes.Otherwise,thepushbuttoncontroliscreatedusingtheothericonattributes.

Fixed YesNoType onlyvalidforVolumeandDirectoryControls

FixedSize YesNoType onlyvalidforRadioButton,PushButton,andIconControls

Floppy YesNoType onlyvalidforVolumeandDirectoryControls

FormatSize YesNoType onlyvalidforTextControls

Page 140: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

HasBorder YesNoType onlyvalidforRadioButtonControls

Height LocalizableInteger YesHelp String Hidden YesNoType Icon YesNoType onlyvalidfor

RadioButtonandPushButtonControls

IconSize Enumeration onlyvalidforRadioButton,PushButton,andIconControlsThisattribute'svalueshouldbeoneofthefollowing:16

32

48

Image YesNoType onlyvalidforRadioButton,PushButton,andIconControls

Indirect YesNoType Integer YesNoType LeftScroll YesNoType Multiline YesNoType onlyvalidforEdit

Controls

NoPrefix YesNoType onlyvalidforTextControls

NoWrap YesNoType onlyvalidforTextControls

Password YesNoType onlyvalidforEdit

Page 141: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ControlsProgressBlocks YesNoType onlyvalidfor

ProgressBarControls

Property String PushLike YesNoType onlyvalidfor

RadioButtonandCheckboxControls

RAMDisk YesNoType onlyvalidforVolumeandDirectoryControls

Remote YesNoType onlyvalidforVolumeandDirectoryControls

Removable YesNoType onlyvalidforVolumeandDirectoryControls

RightAligned YesNoType RightToLeft YesNoType ShowRollbackCost YesNoType onlyvalidfor

VolumeCostListControls

Sorted YesNoType ThisattributeisonlyvalidforListbox,ListView,andComboBoxControls.Setthevalueofthisattributeto"yes"tohaveentriesappearintheorderspecifiedundertheControl.Iftheattributevalueis"no"orabsenttheentriesinthe

Page 142: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

controlwillappearinalphabeticalorder.

Sunken YesNoType TabSkip YesNoType yesifthiscontrolis

skippedinthetabsequence

Text String ToolTip String Transparent YesNoType onlyvalidforText

Controls

Type String YesUserLanguage YesNoType onlyvalidforText

Controls

Width LocalizableInteger YesX LocalizableInteger YesY LocalizableInteger Yes

SeeAlsoWixSchema

Version2.0.4820.0

Page 143: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

CopyFileElement

Description

Copyormoveanexistingfileonthetargetmachine,orcopyafilethatisbeinginstalled,toanotherdestination.WhenthiselementisnestedunderaFileelement,theparentfilewillbeinstalled,thencopiedtothespecifieddestinationiftheparentcomponentofthefileisselectedforinstallationorremoval.WhenthiselementisnestedunderaComponentelementandnoFileIdattributeisspecified,thefiletocopyormovemustalreadybeonthetargetmachine.WhenthiselementisnestedunderaComponentelementandtheFileIdattributeisspecified,thespecifiedfileisinstalled,thencopiedtothespecifieddestinationiftheparentcomponentisselectedforinstallationorremoval(usethisoptiontocontrolthecopyofafileinadifferentcomponentbytheparentcomponent'sinstallationstate).Ifthespecifieddestinationdirectoryisthesameasthedirectorycontainingtheoriginalfileandthenamefortheproposedsourcefileisthesameastheoriginal,thennoactiontakesplace.

WindowsInstallerreferencesDuplicateFileTable,MoveFileTable

ParentsComponent,File,Include

InnerTextNone

ChildrenNone

Attributes

Name Type DescriptionId String Primarykeyusedto

identifythisparticularentry.

Delete YesNoType Thisattributecannot

Page 144: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

bespecifiediftheelementisnestedunderaFileelementortheFileIdattributeisspecified.Inothercases,iftheattributeisnotspecified,thedefaultvalueis"no"andthefileiscopied,notmoved.Setthevalueto"yes"inordertomovethefile(thusdeletingthesourcefile)insteadofcopyingit.

DestinationDirectory String Setthisvaluetothedestinationdirectorywhereanexistingfileonthetargetmachineshouldbemovedorcopiedto.ThisDirectorymustexistintheinstallerdatabaseatcreationtime.ThisattributecannotbespecifiedinconjunctionwithDestinationProperty.

DestinationLongName LongFileNameType Ifthedestinationnameofthefileneedstobelongerthan8.3format,thenthisattributeshouldbespecifiedwiththelongfilename(inadditiontotheNameattribute

Page 145: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

whichisalwaysrequiredfortargetsystemsthatmightnotsupportlongfilenames).

DestinationName ShortFileNameType Setthisvaluetothelocalizablenametobegiventotheoriginalfileafteritismovedorcopied.thisattributeisnotspecified,thenthedestinationfileisgiventhesamenameasthesourcefile.

DestinationProperty String Setthisvaluetoapropertythatwillhaveavaluethatresolvestothefullpathofthedestinationdirectory.Thepropertydoesnothavetoexistintheinstallerdatabaseatcreationtime;itcouldbecreatedatinstallationtimebyacustomaction,onthecommandline,etc.ThisattributecannotbespecifiedinconjunctionwithDestinationDirectory.

FileId String Thisattributecannotbespecifiediftheelementisnested

Page 146: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

underaFileelement.Setthisattribute'svaluetotheidentifierofafilefromadifferentcomponenttocopyitbasedontheinstallstateoftheparentcomponent.

SourceDirectory String ThisattributecannotbespecifiediftheelementisnestedunderaFileelementortheFileIdattributeisspecified.Setvaluetothesourcedirectoryfromwhichtocopyormoveanexistingfileonthetargetmachine.ThisDirectorymustexistintheinstallerdatabaseatcreationtime.ThisattributecannotbespecifiedinconjunctionwithSourceProperty.

SourceName WildCardLongFileNameType ThisattributecannotbespecifiediftheelementisnestedunderaFileelementortheFileIdattributeisspecified.Setvaluetothelocalizablenameofthefile(s)tobecopiedormoved.ofthefilesthat

Page 147: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

matchthewildcardwillberemovedfromthespecifieddirectory.Thevalueisafilenamethatmayalsocontainthewildcardcharacters"?"foranysinglecharacteror"*"forzeroormoreoccurrencesofanycharacter.Ifthisattributeisnotspecified(andthiselementisnotnestedunderaFileelementorspecifyaFileIdattribute)thentheSourcePropertyattributeshouldbesettothenameofapropertythatwillresolvetothefullpathofthesourcefilename.Ifthevalueofthisattributecontainsa"*"wildcardandtheDestinationNameattributeisspecified,allmovedorcopiedfilesretainthefilenamesfromtheirsources.

SourceProperty String ThisattributecannotbespecifiediftheelementisnestedunderaFileelement

Page 148: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ortheFileIdattributeisspecified.Setvaluetoapropertythatwillhaveavaluethatresolvestothefullpathofthesourcedirectory(orfullpathincludingfilenameifSourceNameisnotspecified).Thepropertydoesnothavetoexistintheinstallerdatabaseatcreationtime;itcouldbecreatedatinstallationtimebyacustomaction,onthecommandline,etc.ThisattributecannotbespecifiedinconjunctionwithSourceDirectory.

SeeAlsoWixSchema,RemoveFile

Version2.0.4820.0

Page 149: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

CostFinalizeElement

Description

EndstheinternalinstallationcostingprocessbegunbytheCostInitializeaction.AnystandardorcustomactionsthataffectcostingshouldbesequencedbeforetheCostInitializeaction.CalltheFileCostactionimmediatelyfollowingtheCostInitializeactionandthencalltheCostFinalizeactiontomakeallfinalcostcalculationsavailabletotheinstallerthroughtheComponenttable.TheCostFinalizeactionmustbeexecutedbeforestartinganyuserinterfacesequencewhichallowstheusertoviewormodifyFeaturetableselectionsordirectories.TheCostFinalizeactionqueriestheConditiontabletodeterminewhichfeaturesarescheduledtobeinstalled.CostingisdoneforeachcomponentintheComponenttable.TheCostFinalizeactionalsoverifiesthatallthetargetdirectoriesarewritablebeforeallowingtheinstallationtocontinue.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsAdminExecuteSequence,AdminUISequence,AdvertiseExecuteSequence,InstallExecuteSequence,InstallUISequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactionina

Page 150: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

sequence.Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema,CostInitialize,FileCost

Version2.0.4820.0

Page 151: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

CostInitializeElement

Description

Initiatestheinternalinstallationcostingprocess.AnystandardorcustomactionsthataffectcostingshouldbesequencedbeforetheCostInitializeaction.CalltheFileCostactionimmediatelyfollowingtheCostInitializeaction.ThencalltheCostFinalizeactionfollowingtheCostInitializeactiontomakeallfinalcostcalculationsavailabletotheinstallerthroughtheComponenttable.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsAdminExecuteSequence,AdminUISequence,AdvertiseExecuteSequence,InstallExecuteSequence,InstallUISequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema,FileCost,CostFinalize

Version2.0.4820.0

Page 152: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

CreateFolderElement

Description

CreatefolderaspartofparentComponent.

WindowsInstallerreferencesCreateFolderTable

ParentsComponent,Include

InnerTextNone

ChildrenChoiceofelements(min:0,max:unbounded)Permission(min:0,max:unbounded):ACLpermissionShortcut(min:0,max:unbounded):Non-advertisedshortcuttothisfolder,ShortcutTargetispresettothefolder

Attributes

Name Type Description RequiredDirectory String IdentifierofDirectorytocreate.

DefaultstoDirectoryofparentComponent.

SeeAlsoWixSchema,RemoveFolder

Version2.0.4820.0

Page 153: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

CreateFoldersElement

Description

Createsemptyfoldersforcomponentsthataresettobeinstalled.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 154: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

CreateShortcutsElement

Description

Managesthecreationofshortcuts.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsAdvertiseExecuteSequence,InstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 155: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

CustomElement

Description

Usetosequenceacustomaction.

WindowsInstallerreferencesNone

ParentsAdminExecuteSequence,AdminUISequence,AdvertiseExecuteSequence,InstallExecuteSequence,InstallUISequence

InnerText(xs:string)Textnodespecifiestheconditionoftheaction.

ChildrenNone

Attributes

Name Type Description RequiredAction String YesAfter String Before String OnExit Enumeration mutuallyexclusivewithBefore,

After,andSequenceattributesThisattribute'svalueshouldbeoneofthefollowing:success

cancel

error

suspend

Sequence Integer

Page 156: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

SeeAlsoWixSchema,CustomAction

Version2.0.4820.0

Page 157: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

CustomActionElement

Description

SpecifiesacustomactiontobeaddedtotheMSICustomActiontable.Variouscombinationsoftheattributesforthiselementcorrespondtodifferentcustomactiontypes.FormoreinformationaboutcustomactionsseetheMSDNdocumentationhttp://msdn.microsoft.com/library/en-us/msi/setup/summary_list_of_all_custom_action_types.aspfora"SummaryListofAllCustomActionTypes".

WindowsInstallerreferencesCustomActionTable

ParentsFragment,Include,Module,Product

InnerText(xs:string)ThetextnodeisonlyvalidiftheScriptattributeisspecified.Inthatcase,thetextnodecontainsthescripttoembed.

ChildrenNone

Attributes

Name Type DescriptionBinaryKey String ThisattributeisareferencetoaBinaryelementwithmatchingIdattribute.

streamcontainsthecustomactionforuseduringinstall.installedintoatargetdirectory.ThisattributeisspecifythecustomactionDLLtouseforatype1customaction,withtheExeCommandattributetospecifyatype17customactionthatrunsanembeddedexecutable,orwiththeVBScriptCallorJScriptCallattributes

Directory String ThisattributespecifiesareferencetoaDirectoryelementwithmatchingIdattributecontainingadirectorypath.ThisattributeistypicallyusedwiththeExeCommandattributetospecifythesourceexecutableforatype34attributetospecifyaformattedstringtoplaceinthespecifiedDirectorytype35customaction.

Page 158: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

DllEntry String Thisattributespecifiesthenameofafunctioninacustomactiontoexecute.attributeisusedwiththeBinaryKeyattributetocreateatype1customFileKeyattributetocreateatype17customaction.

Error String ThisattributespecifiesanindexintheMSIErrortabletouseasanerrormessageforatype19customactionthatdisplaystheerrormessageandabortsaproduct'sinstallation.

ExeCommand String Thisattributespecifiesthecommandlineparameterstosupplytoanexternallyexecutable.ThisattributeistypicallyusedwiththeBinaryKeyattributeforatype2customaction,theFileKeyattributeforatype18customaction,thePropertyattributeforatype50customaction,ortheDirectoryattributeforatype34customactionthatspecifytheexecutabletorun.

Execute Enumeration Thisattributeindicatestheschedulingofthecustomaction.beoneofthefollowing:commit

Indicatesthatthecustomactionwillrunaftersuccessfulcompletionoftheinstallationscript(attheendoftheinstallation).

deferredIndicatesthatthecustomactionrunsin-script(possiblywithelevatedprivileges).

firstSequenceIndicatesthatthecustomactionwillonlyruninthefirstsequencethatrunsit.

immediateIndicatesthatthecustomactionwillrunduringnormalprocessingtimewithuserprivileges.Thisisthedefault.

oncePerProcessIndicatesthatthecustomactionwillonlyruninthefirstsequencethatrunsitinthesameprocess.

rollbackIndicatesthatacustomactionwillrunintherollbacksequencewhenafailureduringinstallation,usuallytoundochangesmadebyadeferredcustomaction.

secondSequenceIndicatesthatacustomactionshouldberunasecondtimeifitwaspreviouslyruninanearliersequence.

FileKey String ThisattributespecifiesareferencetoaFileelementwithmatchingIdattributethatexecutethecustomactioncodeinthefileafterthefileisinstalled.typicallyusedwiththeExeCommandattributetospecifyatype18customaction

Page 159: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

runsaninstalledexecutable,withtheDllEntryattributetospecifyaninstalledcustomactionDLLtouseforatype17customaction,orwiththeVBScriptCallorJScriptCallattributestospecifyatype21or22customaction.

HideTarget YesNoType EnsurestheinstallerdoesnotlogtheCustomActionDataforthedeferredcustomaction.Id String Theidentifierofthecustomaction.Impersonate YesNoType ThisattributespecifieswhethertheWindowsInstaller,whichexecutesasLocalSystem,

shouldimpersonatetheusercontextoftheinstallinguserwhenexecutingthiscustomaction.Typicallythevalueshouldbe'yes',exceptwhenthecustomactionneedselevatedprivilegestoapplychangestothemachine.

JScriptCall String ThisattributespecifiesthenameoftheJScriptfunctiontoexecuteinascript.ThescriptmustbeprovidedinaBinaryelementidentifiedbytheBinaryKeyattributedescribedabove.Inotherwords,thisattributemustbespecifiedinconjunctionwiththeBinaryKeyattribute.

Property String ThisattributespecifiesareferencetoaPropertyelementwithmatchingIdattributethatspecifiesthePropertytobeusedorupdatedonexecutionofthiscustomaction.ThisattributeistypicallyusedwiththeValueattributetocreateatype51customactionthatparsesthetextinValueandplacesitintothespecifiedProperty.usedwiththeExeCommandattributetocreateatype50customactionthatusesthevalueofthegivenpropertytospecifythepathtotheexecutable.Type51customactionsareoftenusefultopassvaluestoadeferredcustomaction.http://msdn.microsoft.com/library/en-us/msi/setup/obtaining_context_information_for_deferred_execution_custom_actions.aspformoreinformation.

Return Enumeration Setthisattributetosetthereturnbehaviorofthecustomaction.shouldbeoneofthefollowing:asyncNoWait

Indicatesthatthecustomactionwillrunasyncronouslyandexecutionmaycontinueaftertheinstallerterminates.

asyncWaitIndicatesthatthecustomactionwillrunasynchronouslybuttheinstallerwillwaitforthereturncodeatsequenceend.

checkIndicatesthatthecustomactionwillrunsynchronouslyandthereturncodewillbecheckedforsuccess.Thisisthedefault.

ignoreIndicatesthatthecustomactionwillrunsynchronouslyandthereturncodewillnot

Page 160: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

bechecked.

Script Enumeration Createsatype37or38customaction.tobeembeddedinthepackage.Thisattribute'svalueshouldbeoneofthefollowing:jscript

vbscript

TerminalServerAware YesNoType Thisattributespecifiescontrolswhetherthecustomactionwillimpersonatetheuserduringper-machineinstallsonTerminalServermachines.customactionsthatdonotspecifythisattribute,orexplicitlysetit'no',userimpersonationonTerminalServermachinesduringattributeisonlyapplicablewheninstallingonthe

Value String Thisattributespecifiesastringvaluetouseinthecustomaction.ThisattributeusedwiththePropertyattributetosetthepropertyaspartofawiththeDirectoryattributetosetadirectorypathinthatThevaluecanbealiteralvalueorderivedfromasyntax.

VBScriptCall String ThisattributespecifiesthenameoftheVBScriptSubroutinetoexecuteinascript.ThescriptmustbeprovidedinaBinaryelementidentifiedbytheBinaryKeyattributedescribedabove.Inotherwords,thisBinaryKeyattribute.

Win64 YesNoType Specifiesthatascriptcustomactiontargetsa64-bitplatform.ValidonlywhenusedwiththeScript,VBScriptCall,andJScriptCallattributes.

SeeAlsoWixSchema,Custom,CustomActionRef

Version2.0.4820.0

Page 161: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

CustomActionRefElement

Description

ThiswillcausetheentirecontentsoftheFragmentcontainingthereferencedCustomActiontobeincludedintheinstallerdatabase.

WindowsInstallerreferencesNone

ParentsFragment,Include,Module,Product

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String TheidentifieroftheCustomActionto

reference.Yes

Anyattributenamespace='##other'processContents='lax'

SeeAlsoWixSchema,CustomAction

Version2.0.4820.0

Page 162: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

CustomPropertyElement

Description

AcustompropertyforthePatchMetadatatable.

WindowsInstallerreferencesNone

ParentsPatchMetadata

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredCompany String Thenameofthecompany. YesProperty String Thenameofthemetadataproperty. YesValue String Valueofthemetadataproperty. Yes

SeeAlsoWixSchema

Version2.0.4820.0

Page 163: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

CustomTableElement

Description

Definesacustomtableforusefromacustomaction.

WindowsInstallerreferencesNone

ParentsFragment,Include,Module,Product

InnerTextNone

ChildrenSequence(min:1,max:1)

1. Column(min:0,max:unbounded):Columndefinitionforthecustomtable.

2. Row(min:0,max:unbounded):Rowdefinitionforthecustomtable.

Attributes

Name Type Description RequiredId String Identifierforthecustomtable. Yes

SeeAlsoWixSchema

Version2.0.4820.0

Page 164: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

DataElement

Description

DataitemforarowofaCustomTable

WindowsInstallerreferencesNone

ParentsRow

InnerText(xs:string)Elementvalueisdatathedatavalue

ChildrenNone

Attributes

Name Type Description RequiredColumn String Yes

SeeAlsoWixSchema

Version2.0.4820.0

Page 165: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

DeleteServicesElement

Description

Stopsaserviceandremovesitsregistrationfromthesystem.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 166: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

DependencyElement

Description

Declaresadependencyonanothermergemodule.

WindowsInstallerreferencesNone

ParentsModule

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredRequiredId String Identifierofthemerge

modulerequiredbythemergemodule.

Yes

RequiredLanguage Integer NumericlanguageIDofthemergemoduleinRequiredID.

Yes

RequiredVersion String VersionofthemergemoduleinRequiredID.

SeeAlsoWixSchema

Version2.0.4820.0

Page 167: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

DialogElement

Description

None

WindowsInstallerreferencesControlTable,ComboBoxTable,DialogTable,ListBoxTable,ListViewTable,RadioButtonTable

ParentsUI

InnerTextNone

ChildrenSequence(min:1,max:1)

1. Control(min:0,max:unbounded):Controlelementsbelongingtothisdialog

Attributes

Name Type Description RequiredId String YesCustomPalette YesNoType ErrorDialog YesNoType Height Integer indialogunits YesHidden YesNoType KeepModeless YesNoType LeftScroll YesNoType Modeless YesNoType NoMinimize YesNoType RightAligned YesNoType RightToLeft YesNoType SystemModal YesNoType

Page 168: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Title String TrackDiskSpace YesNoType Width Integer indialogunits YesX Integer in%,defaultstocenteredon

screen(50)

Y Integer in%,defaultstocenteredonscreen(50)

SeeAlsoWixSchema

Version2.0.4820.0

Page 169: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

DialogRefElement

Description

ReferencetoaDialog.Thiswillcausetheentirereferencedsection'scontentstobeincludedintheinstallerdatabase.

WindowsInstallerreferencesNone

ParentsUI

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String TheidentifieroftheDialogto

reference.Yes

SeeAlsoWixSchema,Dialog

Version2.0.4820.0

Page 170: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

DigitalCertificateElement

Description

Addsadigitalcertificate.

WindowsInstallerreferencesMsiDigitalCertificateTable

ParentsDigitalSignature,PatchCertificates

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String Identifierforacertificatefile. YesSourceFile String Thepathtothecertificatefile. Yes

SeeAlsoWixSchema

Version2.0.4820.0

Page 171: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

DigitalSignatureElement

Description

Addsadigitalsignature

WindowsInstallerreferencesMsiDigitalSignatureTable

ParentsMedia

InnerText(xs:string)Elementvaluecanbehex-encodedhashvalue

ChildrenChoiceofelements(min:0,max:unbounded)DigitalCertificate(min:0,max:unbounded)

Attributes

Name Type Description RequiredSourceFile String Thepathtosignature'soptionalhash

file.

SeeAlsoWixSchema

Version2.0.4820.0

Page 172: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

DirectoryElement

Description

Directorylayoutfortheproduct.Alsospecifiesthemappingsbetweensourceandtargetdirectories.

WindowsInstallerreferencesDirectoryTable

ParentsDirectory,DirectoryRef,Fragment,Include,Module,Product

InnerTextNone

ChildrenChoiceofelements(min:0,max:unbounded)Component(min:0,max:unbounded)Directory(min:0,max:unbounded)Merge(min:0,max:unbounded)

Attributes

Name Type Description RequiredId String Thisvalueistheunique

identifierofthedirectoryentry.

Yes

FileSource String Usedtosetthefilesystemsourceforthisdirectory'schildelements.

LongName LongFileNameType Setthisvaluetothenon-8.3nameforthedirectory.ThisattributecannotbespecifiedunlesstheNameattributeisusedtoset

Page 173: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

theshortnameforthisdirectory.

LongSource LongFileNameType Setthisvaluetothenon-8.3nameofthedirectoryonthesourcemediaforsystemssupportinglongnames.ThisattributecannotbespecifiedunlesstheSourceNameattributesetstheshortsourcenameforthisdirectory.

Name String The8.3nameofthedirectory.Donotspecifythisattribute(ortheLongNameattribute)ifthisdirectoryrepresentsthesamedirectoryastheparent(seetheWindowsInstallerSDK'sDirectorytabletopicformoreinformationaboutthe"."operator).

SourceName ShortFileNameType The8.3nameofthedirectoryonthesourcemedia.Ifthisattributeisnotespecified,theWindowsInstallerwilldefaulttotheNameattribute.

src String Thisattributehasbeendeprecated;pleaseusetheFileSourceattributeinstead.

Page 174: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

SeeAlsoWixSchema,DirectoryRef

Version2.0.4820.0

Page 175: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

DirectoryRefElement

Description

CreateareferencetoaDirectoryelementinanotherFragment.

WindowsInstallerreferencesNone

ParentsFragment,Include,Module,Product

InnerTextNone

ChildrenChoiceofelements(min:0,max:unbounded)Component(min:0,max:unbounded)Directory(min:0,max:unbounded)Merge(min:0,max:unbounded)

Attributes

Name Type Description RequiredId String TheidentifieroftheDirectory

elementtoreference.Yes

FileSource String Usedtosetthefilesystemsourceforthisdirectoryref'schildelements.

src String Thisattributehasbeendeprecated;pleaseusetheFileSourceattributeinstead.

SeeAlsoWixSchema,Directory

Version2.0.4820.0

Page 176: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

DirectorySearchElement

Description

SearchesfordirectoryandassignstovalueofparentProperty.

WindowsInstallerreferencesDrLocatorTable,SignatureTable

ParentsComplianceCheck,ComplianceDrive,ComponentSearch,DirectorySearch,DirectorySearchRef,IniFileSearch,Property,RegistrySearch

InnerTextNone

ChildrenChoiceofelements(min:0,max:1)DirectorySearch(min:0,max:1)DirectorySearchRef(min:0,max:1)FileSearch(min:0,max:1)FileSearchRef(min:0,max:1)

Attributes

Name Type Description RequiredId String ExternalkeyintoSignaturetable.If

notinSignaturetable,searchisforadirectorydefinedwithDirectorySearchelements.

Yes

Depth Integer Depthbelowthepaththattheinstallersearchesforthefileordirectoryspecifiedbythesearch.

Path String Pathontheuser'ssystem.Eitherabsolute,orrelativetocontainingdirectories.

Page 177: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

SeeAlsoWixSchema,ComponentSearch,IniFileSearch,RegistrySearch

Version2.0.4820.0

Page 178: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

DirectorySearchRefElement

Description

ReferencesanexistingDirectorySearchelement.

WindowsInstallerreferencesNone

ParentsComplianceDrive,ComponentSearch,DirectorySearch,DirectorySearchRef,IniFileSearch,Property,RegistrySearch

InnerTextNone

ChildrenChoiceofelements(min:0,max:1)DirectorySearch(min:0,max:1)DirectorySearchRef(min:0,max:1)FileSearch(min:0,max:1)FileSearchRef(min:0,max:1)

Attributes

Name Type Description RequiredId String Idofthesearchbeingreferredto. YesParent String Thisattributeisthesignatureofthe

parentdirectoryofthefileordirectoryintheSignature_column.Ifthisfieldisnull,andthePathcolumndoesnotexpandtoafullpath,thenallthefixeddrivesoftheuser'ssystemaresearchedbyusingthePath.Thisfieldisakeyintooneofthefollowingtables:theRegLocator,theIniLocator,theCompLocator,ortheDrLocatortables.

Page 179: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Path String Pathontheuser'ssystem.Eitherabsolute,orrelativetocontainingdirectories.

SeeAlsoWixSchema,ComponentSearch,IniFileSearch,RegistrySearch

Version2.0.4820.0

Page 180: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

DisableRollbackElement

Description

Disablesrollbackfortheremainderoftheinstallation.Specialactionsdon'thaveabuilt-insequencenumberandthusmustappearrelativetoanotheraction.ThesuggestedwaytodothisisbyusingtheBeforeorAfterattribute.InstallExecuteandInstallExecuteAgaincanoptionallyappearanywherebetweenInstallInitializeandInstallFinalize.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Textnodespecifiestheconditionoftheaction.

ChildrenNone

Attributes

Name Type Description RequiredAfter String Thenameofanactionthatthis

actionshouldcomeafter.

Before String Thenameofanactionthatthisactionshouldcomebefore.

Sequence Integer Avalueusedtoindicatethepositionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 181: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

DuplicateFilesElement

Description

DuplicatesfilesinstalledbytheInstallFilesaction.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 182: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

EnsureTableElement

Description

Usethiselementtoensurethatatableappearsintheinstallerdatabase,evenifitsempty.

WindowsInstallerreferencesNone

ParentsFragment,Include,Module,Product

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String Thenameofthetable. Yes

RemarksThiselementisparticularlyusefulfortwoproblemsthatmayoccurwhilemergingmergemodules:

1. Thefirstlikelyproblemisthatinordertoproperlymergeyouneedtohavecertaintablespresentpriortomerging.Usingthiselementisonewaytoensurethosetablesarepresentpriortothemerging.

2. Theothercommonproblemisthatamergemodulehasincorrectvalidationinformationaboutsometables.Byensuringthesetablespriortomerging,youcanavoidthisproblembecausethecorrectvalidationinformationwillgointotheinstallerdatabasebeforethemergemodulehasachancetosetitincorrectly.

SeeAlso

Page 183: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WixSchemaVersion2.0.4820.0

Page 184: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

EnvironmentElement

Description

EnvironmentvariablesaddedorremovedforparentComponent

WindowsInstallerreferencesEnvironmentTable

ParentsComponent,Include

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String Uniqueidentifierforenvironment

entry.Yes

Action Enumeration Specfieswhethertheenvironmentalvariableshouldbecreated,setorremovedwhentheparentcomponentisinstalled.Thisattribute'svalueshouldbeoneofthefollowing:create

Createstheenvironmentvariableifitdoesnotexist,thensetitduringinstallation.Thishasnoeffectonthevalueoftheenvironmentvariableifitalreadyexists.

set

Page 185: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Createstheenvironmentvariableifitdoesnotexist,andthensetitduringinstallation.Iftheenvironmentvariableexists,setitduringtheinstallation.

removeRemovestheenvironmentvariableduringaninstallation.TheinstalleronlyremovesanenvironmentvariableduringaninstallationifthenameandvalueofthevariablematchtheentriesintheNameandValuefieldsoftheEnvironmenttable.Ifyouwanttoremoveanenvironmentvariable,regardlessofitsvalue,usethe'!'syntax,andleavetheValuefieldempty.

Name String Nameoftheenvironmentvariable.

Yes

Part Enumeration Thisattribute'svalueshouldbeoneofthefollowing:all

Thisvalueistheentireenvironmentalvariable.

firstThisvalueisprefixed.

lastThisvalueisappended.

Permanent YesNoType Specifiesthattheenvironmentvariableshouldnotberemoved

Page 186: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

onuninstall.Separator String Optionalattributetochangethe

separatorusedbetweenvalues.Bydefaultasemi-colonisused.

System YesNoType Specifiesthattheenvironmentvariableshouldbeaddedtothesystemenvironmentspace.Thedefaultis'no'whichindicatestheenvironmentvariableisaddedtotheuserenvironmentspace.

Value String Valuetosetintotheenvironmentvariable.

SeeAlsoWixSchema

Version2.0.4820.0

Page 187: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ErrorElement

Description

None

WindowsInstallerreferencesErrorTable

ParentsUI

InnerText(xs:string)ElementvalueisMessage,useCDATAifmessagecontainsdelimitercharacters

ChildrenNone

Attributes

Name Type Description RequiredId Integer Numberoftheerrorforwhicha

messageisbeingprovided.SeeMSISDKforerrordefinitions.

SeeAlsoWixSchema

Version2.0.4820.0

Page 188: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ExclusionElement

Description

Declaresamergemodulewithwhichthismergemoduleisincompatible.

WindowsInstallerreferencesNone

ParentsModule

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredExcludedId String Identifierofthemerge

modulethatisincompatible.

Yes

ExcludedMaxVersion String Maximumversionexcludedfromarange.Ifnotset,allversionsafterminareexcluded.Ifneithermaxnormin,noexclusionbasedonversion.

ExcludedMinVersion String Minimumversionexcludedfromarange.Ifnotset,allversionsbeforemaxareexcluded.Ifneithermaxnormin,noexclusion

Page 189: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

basedonversion.ExcludeExceptLanguage Integer NumericlanguageIDof

themergemoduleinExcludedID.Allexceptthislanguagewillbeexcluded.OnlyoneofExcludeExceptLanguageandExcludeLanguagemaybespecified.

ExcludeLanguage Integer NumericlanguageIDofthemergemoduleinExcludedID.Thespecifiedlanguagewillbeexcluded.OnlyoneofExcludeExceptLanguageandExcludeLanguagemaybespecified.

SeeAlsoWixSchema

Version2.0.4820.0

Page 190: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ExecuteActionElement

Description

Initiatestheexecutionsequence.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsAdminUISequence,InstallUISequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 191: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ExtensionElement

Description

ExtensionforaComponent

WindowsInstallerreferencesMIMETable,VerbTable,RegistryTable

ParentsComponent,Include,ProgId

InnerTextNone

ChildrenChoiceofelements(min:0,max:unbounded)MIME(min:0,max:unbounded)Verb(min:0,max:unbounded)

Attributes

Name Type Description RequiredId String Thisissimplythefileextension,

like"doc"or"xml".Donotincludetheprecedingperiod.

Yes

Advertise YesNoType Whetherthisextensionistobeadvertised.Thedefaultis"no".

ContentType String TheMIMEtypethatistobewritten.

SeeAlsoWixSchema

Version2.0.4820.0

Page 192: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ExternalFileElement

Description

Containsinformationaboutspecificfilesthatarenotpartofaregulartargetimage.

WindowsInstallerreferencesNone

ParentsFamily

InnerTextNone

ChildrenSequence(min:1,max:1)

1. ProtectRange(min:1,max:unbounded)2. SymbolPath(min:1,max:unbounded)3. Choiceofelements(min:0,max:unbounded)

IgnoreRange(min:0,max:unbounded)

Attributes

Name Type Description RequiredFile String ForeignkeyintotheFiletable. YesOrder Int Specifiestheorderoftheexternalfiles

tousewhencreatingthepatch.Yes

Source String Fullpathoftheexternalfile. src String Thisattributehasbeendeprecated;

pleaseusetheSourceattributeinstead.

SeeAlsoWixSchema

Version2.0.4820.0

Page 193: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

FamilyElement

Description

Groupofoneormoreupgradedimagesofaproduct.

WindowsInstallerreferencesNone

ParentsPatchCreation

InnerTextNone

ChildrenSequence(min:1,max:1)

1. UpgradeImage(min:1,max:unbounded)2. Choiceofelements(min:0,max:unbounded)

ExternalFile(min:0,max:unbounded)ProtectFile(min:0,max:unbounded)

Attributes

Name Type Description RequiredDiskId Int EnteredintotheDiskIdfieldof

thenewMediatablerecord.

DiskPrompt String Valuetodisplayinthe"[1]"oftheDiskPromptProperty.UsingthisattributewillrequireyoutodefineaDiskPromptProperty.

MediaSrcProp String EnteredintotheSourcefieldofthenewMediatableentryoftheupgradedimage.

Name String Identifierforthefamily. YesSequenceStart Int Sequencenumberforthe

startingfile.

Page 194: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

VolumeLabel String EnteredintotheVolumeLabelfieldofthenewMediatablerecord.

SeeAlsoWixSchema

Version2.0.4820.0

Page 195: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

FeatureElement

Description

AfeaturefortheFeaturetable.Featuresarethesmallestinstallableunit.Seemsi.chmformoredetailedinformationonthemyriadinstallationoptionsforafeature.

WindowsInstallerreferencesFeatureTable

ParentsFeature,FeatureRef,Fragment,Include,Product

InnerTextNone

ChildrenChoiceofelements(min:0,max:unbounded)ComponentGroupRef(min:0,max:unbounded)ComponentRef(min:0,max:unbounded)Condition(min:0,max:unbounded)Feature(min:0,max:unbounded)FeatureRef(min:0,max:unbounded)MergeRef(min:0,max:unbounded)AnyElementnamespace='##other'processContents='Lax'

Attributes

Name Type DescriptionId String Uniqueidentifierofthefeature.Absent Enumeration Thisattributedeterminesifauserwillhavethe

optiontosetafeaturetoabsentintheuserinterface.Thisattribute'svalueshouldbeoneofthefollowing:allow

AllowstheuserinterfacetodisplayanoptiontochangethefeaturestatetoAbsent.

Page 196: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

disallowPreventstheuserinterfacefromdisplayinganoptiontochangethefeaturestatesettingthemsidbFeatureAttributesUIDisallowAbsentattribute.Thiswillforcethefeatureinstallationstate,whetherornotthefeatureisvisibleintheUI.

AllowAdvertise Enumeration Thisattributedeterminsthepossibleadvertisestatesforthisfeature.Thisattribute'svalueshouldbeoneofthefollowing:no

PreventsthisfeaturefrombeingadvertisedbysetttingthemsidbFeatureAttributesDisallowAdvertiseattribute.

systemPreventsadvertisingforthisfeatureiftheoperatingsystemshelldoesnotsupportWindowsInstallerdescriptorsbysettingthemsidbFeatureAttributesNoUnsupportedAdvertiseattribute.

yesAllowsthefeaturetobeadvertised.

ConfigurableDirectory String SpecifytheIdofaDirectorythatcanbeconfiguredbytheuseratinstallationtime.Thisidentifierbeapublicpropertyandthereforecompletelyuppercase.

Description String Longerstringoftextdescribingthefeature.localizablestringisdisplayedbythetheSelectionDialog.

Display String Determinestheinitialdisplayofthisfeatureinthefeaturetree.Thisattribute'svalueshouldbeoneofthefollowing:collapse

Initiallyshowsthefeaturecollapsed.

Page 197: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

defaultvalue.

expandInitiallyshowsthefeatureexpanded.

hiddenPreventsthefeaturefromdisplayingintheuserinterface.

<anexplicitintegervalue>Foradvancedusersonly,itispossibletodirectlysettheintegervalueofthedisplayvaluethatwillappearintheFeaturerow.

InstallDefault Enumeration Thisattributedeterminesthedefaultinstall/runlocationofafeature.ThisattributecannotbespecifiedifthevalueoftheFollowParentattributeis'yes'sincethatwouldasktheinstallertoforcethisfeaturetofollowtheparentinstallationstateandsimultaneouslyfavoraparticularinstallationstatejustforthisfeature.Thisattribute'svalueshouldbeoneofthefollowing:followParent

Forcesthefeaturetofollowthesameinstallationstateasitsparentfeature.

localFavorsinstallingthisfeaturelocallybysettingthemsidbFeatureAttributesFavorLocalattribute.

sourceFavorsrunningthisfeaturefromsourcebysettingthemsidbFeatureAttributesFavorSourceattribute.

Level Integer Setstheinstalllevelofthisfeature.disablethefeature.Processingthecanmodifythelevelvalue(thisissetviatheConditionchildelement).

Title String Shortstringoftextidentifyingthefeature.islistedasanitembytheSelectionTreecontrolof

Page 198: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

theSelectionDialog.TypicalDefault Enumeration Thisattributedeterminesthedefaultadvertisestate

ofthefeature.Thisattribute'svalueshouldbeoneofthefollowing:advertise

SetsthefeaturetobeadvertisedbysettingthemsidbFeatureAttributesFavorAdvertiseattribute.ThisvaluecannotbesetifthevalueoftheAllowAdvertiseattributeis'no'sincethatwouldasktheinstallertodisallowtheadvertisedstateforthisfeaturewhileatthesametimefavoringit.

installSetsthefeaturetothedefaultnon-advertisedinstallationoption.

Anyattributenamespace='##other'processContents='lax'

SeeAlsoWixSchema,FeatureRef

Version2.0.4820.0

Page 199: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

FeatureRefElement

Description

CreateareferencetoaFeatureelementinanotherFragment.

WindowsInstallerreferencesNone

ParentsFeature,FeatureRef,Fragment,Include,Product

InnerTextNone

ChildrenChoiceofelements(min:0,max:unbounded)ComponentGroupRef(min:0,max:unbounded)ComponentRef(min:0,max:unbounded)Feature(min:0,max:unbounded)FeatureRef(min:0,max:unbounded)MergeRef(min:0,max:unbounded)AnyElementnamespace='##other'processContents='Lax'

Attributes

Name Type Description RequiredId String TheidentifieroftheFeatureelement

toreference.Yes

SeeAlsoWixSchema,Feature

Version2.0.4820.0

Page 200: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

FileElement

Description

FilespecificationforFiletable,mustbechildnodeofComponent

WindowsInstallerreferencesFileTable

ParentsComponent,Include

InnerTextNone

ChildrenChoiceofelements(min:0,max:unbounded)AppId(min:0,max:unbounded)AssemblyName(min:0,max:unbounded)Class(min:0,max:unbounded)CopyFile(min:0,max:unbounded):toDuplicateFiletableODBCDriver(min:0,max:unbounded)ODBCTranslator(min:0,max:unbounded)Patch(min:0,max:unbounded):toPatchtablePerfCounter(min:0,max:unbounded)Permission(min:0,max:unbounded)Shortcut(min:0,max:unbounded):TargetispresettothisfileTypeLib(min:0,max:unbounded)AnyElementnamespace='##other'processContents='Lax'HelpCollectionHelpFileNativeImageSnapIn

Attributes

Page 201: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Name Type Description RequiredId String YesAssembly Enumeration Specifiesifthis

FileisaWin32Assemblyor.NETAssembly;thedefaultisneither.Ifthevalueis'.net'or'win32',thisfilemustalsobethekeypathoftheComponent.Thisattribute'svalueshouldbeoneofthefollowing:.net

no

win32

AssemblyApplication String Specifiesthefileidentifieroftheapplicationfile.Thisassemblywillbeisolatedtothesamedirectoryastheapplicationfile.Ifthisattributeisabsent,theassemblywillbeinstalledtotheGlobalAssemblyCache.This

Page 202: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

attributemayonlybespecifiediftheAssemblyattributeissetto'.net'or'win32'.

AssemblyManifest String Specifiesthefileidentifierofthemanifestfilethatdescribesthisassembly.Themanifestfileshouldbeinthesamecomponentastheassemblyitdescribes.ThisattributemayonlybespecifiediftheAssemblyattributeissetto'.net'or'win32'.

BindPath String generatesBindImagetablerow,valuemybeemptystring

Checksum YesNoType Thisattributeshouldbesetto"yes"foreveryexecutablefileintheinstallationthathasavalidchecksum

Page 203: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

storedinthePortableExecutable(PE)fileheader.Onlythosefilesthathavethisattributesetwillbeverifiedforvalidchecksumduringareinstall.

CompanionFile String Setthisattributetomakethisfileacompanionchildofanotherfile.Theinstallationstateofacompanionfiledependsnotonitsownfileversioninginformation,butontheversioningofitscompanionparent.Afilethatisthekeypathforitscomponentcannotbeacompanionfile(thatmeansthisattributecannotbesetifKeyPath="yes"

Page 204: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

forthisfile).TheVersionattributecannotbesetalongwiththisattributesincecompanionfilesarenotinstalledbasedontheirownversion.

Compressed YesNoDefaultType Setsthefile'ssourcetypecompression.Asettingof"yes"or"no"willoverridethesettingintheWordCountSummaryProperty.

DefaultLanguage String Thisisthedefaultlanguageofthisfile.Thelinkerwillreplacethisvaluefromthevalueinthefileifthesuppressfilesoptionisnotused.

DefaultSize Integer Thisisthedefaultsizeofthisfile.Thelinkerwillreplacethisvaluefromthevalueinthefileifthesuppress

Page 205: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

filesoptionisnotused.

DefaultVersion String Thisisthedefaultversionofthisfile.Thelinkerwillreplacethisvaluefromthevalueinthefileifthesuppressfilesoptionisnotused.

DiskId String SpecifiestheMediathisFileshouldbesourcedon.ThisattributemustbesetonthisFileelementoritsparentComponent.

FontTitle String generatesentriesinFonttablewiththeFontTitle

Hidden YesNoType Settoyesinordertohavethefile'shiddenattributesetwhenitisinstalledonthetargetmachine.

KeyPath YesNoType SetyestoforcethisFiletobekeypathforparentComponent.

Page 206: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

LongName LongFileNameType Longfilename;setthisattributeifpreferrednameisnotin8.3format.

Name ShortFileNameType Filenameofthefilein8.3format,requiredforbackwardscompatibility.

Yes

PatchGroup Integer Thisattributemustbesetforpatch-addedfiles.Eachpatchshouldbeassignedadifferentpatchgroupnumber.Patchgroupsnumbersmustbegreater0andshouldbeassignedconsecutively.Forexample,thefirstpatchshouldusePatchGroup='1',thesecondpatchwillhavePatchGroup='2',etc...

ProcessorArchitecture Enumeration Specifiesthearchitectureforthisassembly.Thisattributeshouldonlybeusedon.NET

Page 207: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

AssembliesfortheCLR2.0.Thisattribute'svalueshouldbeoneofthefollowing:msil

x86

x64

ia64

ReadOnly YesNoType Settoyesinordertohavethefile'sread-onlyattributesetwhenitisinstalledonthetargetmachine.

SelfRegCost Integer generatesSelfRegtablerow

Source String SpecifiesthepathtotheFileinthebuildprocess.Thisattributemustbesetifnosourceinformationcanbegatheredfromparentdirectories.

src String Thisattributehasbeendeprecated;pleaseusetheSourceattribute

Page 208: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

instead.System YesNoType Settoyesin

ordertohavethefile'ssystemattributesetwhenitisinstalledonthetargetmachine.

TrueType YesNoType generatesentriesinFonttablewithnoFontTitle

Vital YesNoType Ifafileisvital,theninstallationcannotproceedunlessthefileissuccessfullyinstalled.Theuserwillhavenooptiontoignoreanerrorinstallingthisfile.Ifanerroroccurs,theycanmerelyretrytoinstallthefileoraborttheinstallation.

Anyattributenamespace='##other'processContents='lax'

SeeAlsoWixSchema

Version2.0.4820.0

Page 209: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

FileCostElement

Description

Initiatesdynamiccostingofstandardinstallationactions.AnystandardorcustomactionsthataffectcostingshouldsequencedbeforetheCostInitializeaction.CalltheFileCostactionimmediatelyfollowingtheCostInitializeaction.ThencalltheCostFinalizeactionfollowingtheFileCostactiontomakeallfinalcostcalculationsavailabletotheinstallerthroughtheComponenttable.TheCostInitializeactionmustbeexecutedbeforetheFileCostaction.Theinstallerthendeterminesthedisk-spacecostofeveryfileintheFiletable,onaper-componentbasis,takingbothvolumeclusteringandthepresenceofexistingfilesthatmayneedtobeoverwrittenintoaccount.Allactionsthatconsumeorreleasediskspacearealsoconsidered.Ifanexistingfileisfound,afileversioncheckisperformedtodeterminewhetherthenewfileactuallyneedstobeinstalledornot.Iftheexistingfileisofanequalorgreaterversionnumber,theexistingfileisnotoverwrittenandnodisk-spacecostisincurred.Inallcases,theinstallerusestheresultsofversionnumbercheckingtosettheinstallationstateofeachfile.TheFileCostactioninitializescostcalculationwiththeinstaller.ActualdynamiccostingdoesnotoccuruntiltheCostFinalizeactionisexecuted.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsAdminExecuteSequence,AdminUISequence,InstallExecuteSequence,InstallUISequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Page 210: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema,CostInitialize,CostFinalize

Version2.0.4820.0

Page 211: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

FileSearchElement

Description

SearchesforfileandassignstofullpathvalueofparentProperty

WindowsInstallerreferencesDrLocatorTable,SignatureTable

ParentsComplianceCheck,ComponentSearch,DirectorySearch,DirectorySearchRef,IniFileSearch,Property,RegistrySearch

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String SpecifytheIdwhenyou

wanttofindthepathtoafile.LeavetheIdabsentifyouwanttofindtheparentdirectoryofafile.

Languages String Thelanguagessupportedbythefile.

LongName LongFileNameType Longfilename;setthisattributeifpreferrednameisnotin8.3format.EitherthisattributeortheNameattributeisrequired.WhenusingonlytheLongNameattribute,ICE03shouldbeignored

Page 212: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

fortheSignaturetable'sFileNamecolumn.

MaxDate DateTime Themaximummodificationdateandtimeofthefile.FormattedasYYYY-MM-DDTHH:mm:ss,whereYYYYistheyear,MMismonth,DDisday,'T'isliteral,HHishour,mmisminuteandssissecond.

MaxSize Int Themaximumsizeofthefile.

MaxVersion String Themaximumversionofthefile.

MinDate DateTime Theminimummodificationdateandtimeofthefile.FormattedasYYYY-MM-DDTHH:mm:ss,whereYYYYistheyear,MMismonth,DDisday,'T'isliteral,HHishour,mmisminuteandssissecond.

MinSize Int Theminimumsizeofthefile.

MinVersion String Theminimumversionofthefile.

Name ShortFileNameType Filenameofthefilein8.3format.PleasenotethatduetoaWindowsInstallerbug,thisattributeisnotrequiredifthepreferredfilenameisnotin8.3format.Thisattributeshouldonlybesetifthefiletofindisin

Page 213: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

8.3format.EitherthisattributeortheLongNameisrequired.

SeeAlsoWixSchema,ComponentSearch,DirectorySearch,DirectorySearchRef,FileSearchRef,IniFileSearch,RegistrySearch

Version2.0.4820.0

Page 214: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

FileSearchRefElement

Description

ReferencesanexistingFileSearchelement.

WindowsInstallerreferencesNone

ParentsComponentSearch,DirectorySearch,DirectorySearchRef,IniFileSearch,RegistrySearch

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String SpecifytheIdtotheFileSearchto

reference.Yes

SeeAlsoWixSchema,FileSearch

Version2.0.4820.0

Page 215: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

FileShareElement

Description

Createsafileshareoutofthecomponent'sdirectory.

WindowsInstallerreferencesNone

ParentsComponent,Include

InnerTextNone

ChildrenSequence(min:1,max:1)

1. Permission(min:1,max:unbounded):ACLpermission

Attributes

Name Type Description RequiredId String Identifierforthefileshare(primary

key).Yes

Description String Descriptionofthefileshare. Name String Nameofthefileshare. Yes

SeeAlsoWixSchema

Version2.0.4820.0

Page 216: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

FileTypeMaskElement

Description

FileTypedataforclassIdregistration.

WindowsInstallerreferencesNone

ParentsClass

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredMask HexType HexvaluethatisAND'dagainstthe

bytesinthefileatOffset.Yes

Offset Integer Offsetintofile.Ifpositive,offsetisfromthebeginning;ifnegative,offsetisfromtheend.

Yes

Value HexType IftheresultoftheAND'ingofMaskwiththebytesinthefileisValue,thefileisamatchforthisFileType.

Yes

SeeAlsoWixSchema

Version2.0.4820.0

Page 217: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

FindRelatedProductsElement

Description

RunsthrougheachrecordoftheUpgradetableinsequenceandcomparestheupgradecode,productversion,andlanguageineachrowtoproductsinstalledonthesystem.WhenFindRelatedProductsdetectsacorrespondencebetweentheupgradeinformationandaninstalledproduct,itappendstheproductcodetothepropertyspecifiedintheActionPropertycolumnoftheUpgradeTable.TheFindRelatedProductsactiononlyrunsthefirsttimetheproductisinstalled.TheFindRelatedProductsactiondoesnotrunduringmaintenancemodeoruninstallation.FindRelatedProductsshouldbeauthoredintotheInstallUISequencetableandInstallExecuteSequencetables.TheinstallerpreventsFindRelatedProductsfromrunninginInstallExecuteSequenceiftheactionhasalreadyruninInstallUISequence.TheFindRelatedProductsactionmustcomebeforetheMigrateFeatureStatesactionandtheRemoveExistingProductsaction.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence,InstallUISequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Page 218: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema,Upgrade

Version2.0.4820.0

Page 219: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ForceRebootElement

Description

Promptstheuserforarestartofthesystemduringtheinstallation.Specialactionsdon'thaveabuilt-insequencenumberandthusmustappearrelativetoanotheraction.ThesuggestedwaytodothisisbyusingtheBeforeorAfterattribute.InstallExecuteandInstallExecuteAgaincanoptionallyappearanywherebetweenInstallInitializeandInstallFinalize.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Textnodespecifiestheconditionoftheaction.

ChildrenNone

Attributes

Name Type Description RequiredAfter String Thenameofanactionthatthis

actionshouldcomeafter.

Before String Thenameofanactionthatthisactionshouldcomebefore.

Sequence Integer Avalueusedtoindicatethepositionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 220: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

FragmentElement

Description

TheFragmentelementisthebuildingblockofcreatinganinstallerdatabaseinWiX.Oncedefined,theFragmentbecomesanimmutable,atomicunitwhichcaneitherbecompletelyincludedorexcludedfromaproduct.ThecontentsofaFragmentelementcanbelinkedintoaproductbyutilizingoneofthemany*Refelements.WhenlinkinginaFragment,itwillbenecessarytolinkinallofitsindividualunits.Forinstance,ifagivenFragmentcontainstwoComponentelements,youmustlinkbothunderfeaturesusingComponentRefforeachlinkedComponent.Otherwise,youwillgetalinkerwarningandhaveafloatingComponentthatdoesnotappearunderanyFeature.

WindowsInstallerreferencesNone

ParentsWix

InnerTextNone

ChildrenSequence(min:1,max:1)

1. Choiceofelements(min:0,max:unbounded)AppId(min:0,max:unbounded)Binary(min:0,max:unbounded)ComplianceCheck(min:0,max:unbounded)ComponentGroup(min:0,max:unbounded)Condition(min:0,max:unbounded)CustomAction(min:0,max:unbounded)CustomActionRef(min:0,max:unbounded)CustomTable(min:0,max:unbounded)

Page 221: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Directory(min:0,max:unbounded)DirectoryRef(min:0,max:unbounded)EnsureTable(min:0,max:unbounded)Feature(min:0,max:unbounded)FeatureRef(min:0,max:unbounded)FragmentRef(min:0,max:unbounded)Group(min:0,max:unbounded)Icon(min:0,max:unbounded)IgnoreModularization(min:0,max:unbounded)Media(min:0,max:unbounded)PatchCertificates(min:0,max:unbounded)Property(min:0,max:unbounded)PropertyRef(min:0,max:unbounded)SFPCatalog(min:0,max:unbounded)SqlDatabase(min:0,max:unbounded)UI(min:0,max:unbounded)UIRef(min:0,max:unbounded)Upgrade(min:0,max:unbounded)User(min:0,max:unbounded)WebApplication(min:0,max:unbounded)WebAppPool(min:0,max:unbounded)WebDirProperties(min:0,max:unbounded)WebLog(min:0,max:unbounded)WebSite(min:0,max:unbounded)Sequence(min:1,max:1)

1. InstallExecuteSequence(min:0,max:1)2. InstallUISequence(min:0,max:1)3. AdminExecuteSequence(min:0,max:1)4. AdminUISequence(min:0,max:1)5. AdvertiseExecuteSequence(min:0,max:1)

AnyElementnamespace='##other'processContents='Lax'HelpCollectionRefHelpFilter

Page 222: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Attributes

Name Type Description RequiredId String OptionalidentifierforaFragment.

ShouldonlybeusedifyouplantorefertothisFragmentviaaFragmentRefelementelsewhere.

SeeAlsoWixSchema,FragmentRef

Version2.0.4820.0

Page 223: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

FragmentRefElement

Description

ReferencetoaFragment.ThiswillforcetheentirereferencedFragment'scontentstobeincludedintheinstallerdatabase.

WindowsInstallerreferencesNone

ParentsFragment,Include,Module,Product

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String TheidentifieroftheFragmentto

reference.Yes

SeeAlsoWixSchema,Fragment

Version2.0.4820.0

Page 224: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

GroupElement

Description

Groupforallkindsofthings

WindowsInstallerreferencesNone

ParentsFragment,Include,Module,Product

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String YesDomain String Name String Yes

SeeAlsoWixSchema

Version2.0.4820.0

Page 225: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

GroupRefElement

Description

Usedtojoinausertoagroup

WindowsInstallerreferencesNone

ParentsUser

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String Yes

SeeAlsoWixSchema

Version2.0.4820.0

Page 226: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

HttpHeaderElement

Description

CustomHTTPHeaderdefinitionforIISresourcessuchasWebSiteandWebVirtualDir.

WindowsInstallerreferencesNone

ParentsWebSite,WebVirtualDir

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredName String NameofthecustomHTTPHeader. YesValue String ValueforthecustomHTTPHeader.

ThisattributemaybesetviaaformattedProperty(e.g.[MyProperty]).

SeeAlsoWixSchema

Version2.0.4820.0

Page 227: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

IconElement

Description

IconusedforShortcut,ProgId,orClasselements(butnotUIcontrols)

WindowsInstallerreferencesIconTable

ParentsFragment,Include,Module,Product,Shortcut

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String TheIdcannotbylongerthan55

characters.InordertopreventerrorsincaseswheretheIdismodularized,itshouldnotbelongerthan18characters.

Yes

SourceFile String Pathtotheiconfile. src String Thisattributehasbeendeprecated;

pleaseusetheSourceFileattributeinstead.

SeeAlsoWixSchema

Version2.0.4820.0

Page 228: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

IgnoreModularizationElement

Description

UsethistoIgnoreModularizationofparticularvalues.Thisfeatureisintendedtobeusedinveryraresituations.Beforeusingthisfeature,contactyoursupportaliastoverifyyouruseissupported.

WindowsInstallerreferencesNone

ParentsFragment,Module

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredName String YesType Enumeration Thisattribute'svalueshouldbe

oneofthefollowing:Action

Property

Directory

SeeAlsoWixSchema

Version2.0.4820.0

Page 229: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

IgnoreRangeElement

Description

Specifiespartofafilethatistobeignoredduringpatching.

WindowsInstallerreferencesNone

ParentsExternalFile,TargetFile

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredLength Int Lengthoftherange. YesOffset Int Offsetofthestartoftherange. Yes

SeeAlsoWixSchema

Version2.0.4820.0

Page 230: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

IncludeElement

Description

Thisisthetop-levelcontainerelementforeverywxifile.

WindowsInstallerreferencesNone

ParentsNone

InnerTextNone

ChildrenChoiceofelements(min:0,max:unbounded)AppId(min:0,max:unbounded)Binary(min:0,max:unbounded)Category(min:0,max:unbounded)Certificate(min:0,max:unbounded)Class(min:0,max:unbounded)ComplianceCheck(min:0,max:unbounded)Condition(min:0,max:unbounded)CopyFile(min:0,max:unbounded)CreateFolder(min:0,max:unbounded)CustomAction(min:0,max:unbounded)CustomActionRef(min:0,max:unbounded)CustomTable(min:0,max:unbounded)Directory(min:0,max:unbounded)DirectoryRef(min:0,max:unbounded)EnsureTable(min:0,max:unbounded)Environment(min:0,max:unbounded)Extension(min:0,max:unbounded)Feature(min:0,max:unbounded)

Page 231: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

FeatureRef(min:0,max:unbounded)File(min:0,max:unbounded)FileShare(min:0,max:unbounded)FragmentRef(min:0,max:unbounded)Group(min:0,max:unbounded)Icon(min:0,max:unbounded)IniFile(min:0,max:unbounded)Interface(min:0,max:unbounded)IsolateComponent(min:0,max:unbounded)Media(min:0,max:unbounded)ODBCDataSource(min:0,max:unbounded)ODBCDriver(min:0,max:unbounded)ODBCTranslator(min:0,max:unbounded)ProgId(min:0,max:unbounded)Property(min:0,max:unbounded)PropertyRef(min:0,max:unbounded)Registry(min:0,max:unbounded)RemoveFile(min:0,max:unbounded)RemoveFolder(min:0,max:unbounded)ReserveCost(min:0,max:unbounded)ServiceConfig(min:0,max:unbounded)ServiceControl(min:0,max:unbounded)ServiceInstall(min:0,max:unbounded)SFPCatalog(min:0,max:unbounded)Shortcut(min:0,max:unbounded)SqlDatabase(min:0,max:unbounded)SqlScript(min:0,max:unbounded)SqlString(min:0,max:unbounded)TypeLib(min:0,max:unbounded)UI(min:0,max:unbounded)UIRef(min:0,max:unbounded)Upgrade(min:0,max:unbounded)User(min:0,max:unbounded)

Page 232: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WebApplication(min:0,max:unbounded)WebAppPool(min:0,max:unbounded)WebDir(min:0,max:unbounded)WebDirProperties(min:0,max:unbounded)WebFilter(min:0,max:unbounded)WebLog(min:0,max:unbounded)WebProperty(min:0,max:unbounded)WebServiceExtension(min:0,max:unbounded)WebSite(min:0,max:unbounded)WebVirtualDir(min:0,max:unbounded)Sequence(min:1,max:1)

1. InstallExecuteSequence(min:0,max:1)2. InstallUISequence(min:0,max:1)3. AdminExecuteSequence(min:0,max:1)4. AdminUISequence(min:0,max:1)5. AdvertiseExecuteSequence(min:0,max:1)

AttributesNone

SeeAlsoWixSchema

Version2.0.4820.0

Page 233: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

IniFileElement

Description

Addsorremoves.inifileentries.

WindowsInstallerreferencesIniFileTable,RemoveIniFileTable

ParentsComponent,Include

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String Identifierforinifile. YesAction Enumeration Thetypeofmodification

tobemade.Thisattribute'svalueshouldbeoneofthefollowing:addLine

Createsorupdatesan.inientry.

addTagCreatesanewentryorappendsanewcomma-separatedvaluetoanexistingentry.

createLineCreatesan.inientryonlyiftheentrydoes

Yes

Page 234: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

noalreadyexist.

removeLineRemovesan.inientry.

removeTagRemovesatagfroman.inientry.

Directory String Nameofaproperty,thevalueofwhichisthefullpathofthefoldercontainingthe.inifile.CanbenameofadirectoryintheDirectorytable,apropertysetbytheAppSearchtable,oranyotherpropertyrepresentingafullpath.

Key String Thelocalizable.inifilekeywithinthesection.

Yes

LongName LongFileNameType Longfilename;setthisattributeifpreferrednameisnotin8.3format.

Name ShortFileNameType Filenameofthefilein8.3format,requiredforbackwardscompatibility.

Yes

Section String Thelocalizable.inifilesection.

Yes

Value String Thelocalizablevaluetobewrittenordeleted.ThisattributemustbesetiftheActionattribute'svalueis"addLine","addTag",or"createLine".

SeeAlsoWixSchema

Page 235: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Version2.0.4820.0

Page 236: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

IniFileSearchElement

Description

Searchesforfile,directoryorregistrykeyandassignstovalueofparentProperty

WindowsInstallerreferencesIniLocatorTable,SignatureTable

ParentsComplianceCheck,Property

InnerTextNone

ChildrenChoiceofelements(min:0,max:1)DirectorySearch(min:0,max:1)DirectorySearchRef(min:0,max:1)FileSearch(min:0,max:1)FileSearchRef(min:0,max:1)

Attributes

Name Type Description RequiredId String Externalkeyintothe

Signaturetable.Yes

Field Integer Thefieldinthe.iniline.IffieldisNullor0,theentirelineisread.

Key String Thekeyvaluewithinthesection.

Yes

LongName LongFileNameType Longfilename;setthisattributeifpreferrednameisnotin8.3format.

Name ShortFileNameType Filenameofthefilein8.3

Page 237: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

format,requiredforbackwardscompatibility.

Section String Thesectionnamewithinthe.inifile.

Yes

Type Enumeration MustbefileiflastchildisFileSearchelementandmustbedirectoryiflastchildisDirectorySearchelement.Thisattribute'svalueshouldbeoneofthefollowing:directory

Adirectorylocation.

fileAfilelocation.

rawAraw.inivalue.

SeeAlsoWixSchema,ComponentSearch,RegistrySearch

Version2.0.4820.0

Page 238: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

InstallAdminPackageElement

Description

Copiestheproductdatabasetotheadministrativeinstallationpoint.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsAdminExecuteSequence,AdminUISequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 239: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

InstallExecuteElement

Description

RunsascriptcontainingalloperationsspooledsinceeitherthestartoftheinstallationorthelastInstallExecuteaction,orInstallExecuteAgainaction.Specialactionsdon'thaveabuilt-insequencenumberandthusmustappearrelativetoanotheraction.ThesuggestedwaytodothisisbyusingtheBeforeorAfterattribute.InstallExecuteandInstallExecuteAgaincanoptionallyappearanywherebetweenInstallInitializeandInstallFinalize.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Textnodespecifiestheconditionoftheaction.

ChildrenNone

Attributes

Name Type Description RequiredAfter String Thenameofanactionthatthis

actionshouldcomeafter.

Before String Thenameofanactionthatthisactionshouldcomebefore.

Sequence Integer Avalueusedtoindicatethepositionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Page 240: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Version2.0.4820.0

Page 241: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

InstallExecuteAgainElement

Description

RunsascriptcontainingalloperationsspooledsinceeitherthestartoftheinstallationorthelastInstallExecuteaction,orInstallExecuteAgainaction.ShouldonlybeusedafterInstallExecute.Specialactionsdon'thaveabuilt-insequencenumberandthusmustappearrelativetoanotheraction.ThesuggestedwaytodothisisbyusingtheBeforeorAfterattribute.InstallExecuteandInstallExecuteAgaincanoptionallyappearanywherebetweenInstallInitializeandInstallFinalize.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Textnodespecifiestheconditionoftheaction.

ChildrenNone

Attributes

Name Type Description RequiredAfter String Thenameofanactionthatthis

actionshouldcomeafter.

Before String Thenameofanactionthatthisactionshouldcomebefore.

Sequence Integer Avalueusedtoindicatethepositionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Page 242: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Version2.0.4820.0

Page 243: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

InstallExecuteSequenceElement

Description

None

WindowsInstallerreferencesInstallExecuteSequenceTable

ParentsFragment,Include,Module,Product

InnerTextNone

ChildrenChoiceofelements(min:0,max:unbounded)AllocateRegistrySpace(min:0,max:unbounded):Ensurestheneededamountofspaceexistsintheregistry.AppSearch(min:0,max:unbounded):Usesfilesignaturestosearchforexistingversionsofproducts.BindImage(min:0,max:unbounded):BindseachexecutableorDLLthatmustbeboundtotheDLLsimportedbyit.CCPSearch(min:0,max:unbounded):Usesfilesignaturestovalidatethatqualifyingproductsareinstalledonasystembeforeanupgradeinstallationisperformed.CostFinalize(min:0,max:unbounded):EndstheinternalinstallationcostingprocessbegunbytheCostInitializeaction.CostInitialize(min:0,max:unbounded):Initiatestheinternalinstallationcostingprocess.CreateFolders(min:0,max:unbounded):Createsemptyfoldersforcomponentsthataresettobeinstalled.CreateShortcuts(min:0,max:unbounded):Managesthecreationofshortcuts.Custom(min:0,max:unbounded):Usetosequenceacustomaction.

Page 244: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

DeleteServices(min:0,max:unbounded):Stopsaserviceandremovesitsregistrationfromthesystem.DisableRollback(min:0,max:unbounded):Disablesrollbackfortheremainderoftheinstallation.DuplicateFiles(min:0,max:unbounded):DuplicatesfilesinstalledbytheInstallFilesaction.FileCost(min:0,max:unbounded):Initiatesdynamiccostingofstandardinstallationactions.FindRelatedProducts(min:0,max:unbounded):RunsthrougheachrecordoftheUpgradetableinsequenceandcomparestheupgradecode,productversion,andlanguageineachrowtoproductsinstalledonthesystem.ForceReboot(min:0,max:unbounded):Promptstheuserforarestartofthesystemduringtheinstallation.Notfixedsequence.InstallExecute(min:0,max:unbounded):RunsascriptcontainingalloperationsspooledsinceeitherthestartoftheinstallationorthelastInstallExecuteaction,orInstallExecuteAgainaction.InstallExecuteAgain(min:0,max:unbounded):RunsascriptcontainingalloperationsspooledsinceeitherthestartoftheinstallationorthelastInstallExecuteaction,orInstallExecuteAgainaction.InstallFiles(min:0,max:unbounded):CopiesfilesspecifiedintheFiletablefromthesourcedirectorytothedestinationdirectory.InstallFinalize(min:0,max:unbounded):Markstheendofasequenceofactionsthatchangethesystem.InstallInitialize(min:0,max:unbounded):Marksthebeginningofasequenceofactionsthatchangethesystem.InstallODBC(min:0,max:unbounded):Installsthedrivers,translators,anddatasourcesintheODBCDrivertable,ODBCTranslatortable,andODBCDataSourcetable.InstallServices(min:0,max:unbounded):Registersaserviceforthesystem.InstallValidate(min:0,max:unbounded):Verifiesthatallcostedvolumeshaveenoughspacefortheinstallation.IsolateComponents(min:0,max:unbounded):Installsacopyofacomponent(commonlyasharedDLL)intoaprivatelocationforuse

Page 245: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

byaspecificapplication(typicallyan.exe).LaunchConditions(min:0,max:unbounded):QueriestheLaunchConditiontableandevaluateseachconditionalstatementrecordedthere.MigrateFeatureStates(min:0,max:unbounded):Usedforupgradingorinstallingoveranexistingapplication.MoveFiles(min:0,max:unbounded):Locatesexistingfilesonthesystemandmovesorcopiesthosefilestoanewlocation.MsiPublishAssemblies(min:0,max:unbounded):ManagestheadvertisementofCLRandWin32assemblies.MsiUnpublishAssemblies(min:0,max:unbounded):ManagestheunadvertisementofCLRandWin32assembliesthatarebeingremoved.PatchFiles(min:0,max:unbounded):QueriesthePatchtabletodeterminewhichpatchesaretobeapplied.ProcessComponents(min:0,max:unbounded):Registersandunregisterscomponents,theirkeypaths,andthecomponentclients.PublishComponents(min:0,max:unbounded):ManagestheadvertisementofthecomponentsfromthePublishComponenttable.PublishFeatures(min:0,max:unbounded):Writeseachfeature'sstateintothesystemregistry.PublishProduct(min:0,max:unbounded):Managestheadvertisementoftheproductinformationwiththesystem.RegisterClassInfo(min:0,max:unbounded):ManagestheregistrationofCOMclassinformationwiththesystem.RegisterComPlus(min:0,max:unbounded):RegistersCOM+applications.RegisterExtensionInfo(min:0,max:unbounded):Managestheregistrationofextensionrelatedinformationwiththesystem.RegisterFonts(min:0,max:unbounded):Registersinstalledfontswiththesystem.RegisterMIMEInfo(min:0,max:unbounded):RegistersMIME-relatedregistryinformationwiththesystem.RegisterProduct(min:0,max:unbounded):Registerstheproductinformationwiththeinstaller.RegisterProgIdInfo(min:0,max:unbounded):Managesthe

Page 246: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

registrationofOLEProgIdinformationwiththesystem.RegisterTypeLibraries(min:0,max:unbounded):Registerstypelibrarieswiththesystem.RegisterUser(min:0,max:unbounded):Registerstheuserinformationwiththeinstallertoidentifytheuserofaproduct.RemoveDuplicateFiles(min:0,max:unbounded):DeletesfilesinstalledbytheDuplicateFilesaction.RemoveEnvironmentStrings(min:0,max:unbounded):Modifiesthevaluesofenvironmentvariables.RemoveExistingProducts(min:0,max:unbounded):GoesthroughtheproductcodeslistedintheActionPropertycolumnoftheUpgradetableandremovestheproductsinsequence.RemoveFiles(min:0,max:unbounded):RemovesfilespreviouslyinstalledbytheInstallFilesaction.RemoveFolders(min:0,max:unbounded):Removesanyfolderslinkedtocomponentssettoberemovedorrunfromsource.RemoveIniValues(min:0,max:unbounded):Removes.inifileinformationspecifiedforremovalintheRemoveIniFiletableifthecomponentissettobeinstalledlocallyorrunfromsource.RemoveODBC(min:0,max:unbounded):Removesthedatasources,translators,anddriverslistedforremovalduringtheinstallation.RemoveRegistryValues(min:0,max:unbounded):Removesaregistryvaluethathasbeenauthoredintotheregistrytableiftheassociatedcomponentwasinstalledlocallyorasrunfromsource,andisnowsettobeuninstalled.RemoveShortcuts(min:0,max:unbounded):Managestheremovalofanadvertisedshortcutwhosefeatureisselectedforuninstallationoranonadvertisedshortcutwhosecomponentisselectedforuninstallation.ResolveSource(min:0,max:unbounded):DeterminesthelocationofthesourceandsetstheSourceDirpropertyifthesourcehasnotbeenresolvedyet.Notfixedsequence.RMCCPSearch(min:0,max:unbounded):Usesfilesignaturestovalidatethatqualifyingproductsareinstalledonasystembeforeanupgradeinstallationisperformed.

Page 247: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ScheduleReboot(min:0,max:unbounded):Promptstheusertorestartthesystemattheendofinstallation.Notfixedsequence.SelfRegModules(min:0,max:unbounded):ProcessesallmoduleslistedintheSelfRegtableandregistersallinstalledmoduleswiththesystem.SelfUnregModules(min:0,max:unbounded):UnregistersallmoduleslistedintheSelfRegtablethatarescheduledtobeuninstalled.SetODBCFolders(min:0,max:unbounded):ChecksforexistingODBCdriversandsetsthetargetdirectoryforeachnewdrivertothelocationofanexistingdriver.StartServices(min:0,max:unbounded):Startssystemservices.StopServices(min:0,max:unbounded):Stopssystemservices.UnpublishComponents(min:0,max:unbounded):ManagestheunadvertisementofcomponentslistedinthePublishComponenttable.UnpublishFeatures(min:0,max:unbounded):Removesselection-stateandfeature-componentmappinginformationfromtheregistry.UnregisterClassInfo(min:0,max:unbounded):ManagestheremovalofCOMclassinformationfromthesystemregistry.UnregisterComPlus(min:0,max:unbounded):RemovesCOM+applicationsfromtheregistry.UnregisterExtensionInfo(min:0,max:unbounded):Managestheremovalofextension-relatedinformationfromthesystemregistry.UnregisterFonts(min:0,max:unbounded):Removesregistrationinformationaboutinstalledfontsfromthesystem.UnregisterMIMEInfo(min:0,max:unbounded):UnregistersMIME-relatedregistryinformationfromthesystem.UnregisterProgIdInfo(min:0,max:unbounded):ManagestheunregistrationofOLEProgIdinformationwiththesystem.UnregisterTypeLibraries(min:0,max:unbounded):Unregisterstypelibrariesfromthesystem.ValidateProductID(min:0,max:unbounded):SetstheProductIDpropertytothefullproductidentifier.WriteEnvironmentStrings(min:0,max:unbounded):Modifiesthevaluesofenvironmentvariables.

Page 248: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WriteIniValues(min:0,max:unbounded):Writesthe.inifileinformationthattheapplicationneedswrittentoits.inifiles.WriteRegistryValues(min:0,max:unbounded):Setsupanapplication'sregistryinformation.

AttributesNone

SeeAlsoWixSchema

Version2.0.4820.0

Page 249: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

InstallFilesElement

Description

CopiesfilesspecifiedintheFiletablefromthesourcedirectorytothedestinationdirectory.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsAdminExecuteSequence,AdminUISequence,InstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 250: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

InstallFinalizeElement

Description

Markstheendofasequenceofactionsthatchangethesystem.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsAdminExecuteSequence,AdminUISequence,AdvertiseExecuteSequence,InstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema,InstallInitialize

Version2.0.4820.0

Page 251: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

InstallInitializeElement

Description

Marksthebeginningofasequenceofactionsthatchangethesystem.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsAdminExecuteSequence,AdminUISequence,AdvertiseExecuteSequence,InstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema,InstallFinalize

Version2.0.4820.0

Page 252: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

InstallODBCElement

Description

Installsthedrivers,translators,anddatasourcesintheODBCDrivertable,ODBCTranslatortable,andODBCDataSourcetable.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 253: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

InstallServicesElement

Description

Registersaserviceforthesystem.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 254: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

InstallUISequenceElement

Description

None

WindowsInstallerreferencesNone

ParentsFragment,Include,Module,Product,UI

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenChoiceofelements(min:0,max:unbounded)AppSearch(min:0,max:unbounded):Usesfilesignaturestosearchforexistingversionsofproducts.CCPSearch(min:0,max:unbounded):Usesfilesignaturestovalidatethatqualifyingproductsareinstalledonasystembeforeanupgradeinstallationisperformed.CostFinalize(min:0,max:unbounded):EndstheinternalinstallationcostingprocessbegunbytheCostInitializeaction.CostInitialize(min:0,max:unbounded):Initiatestheinternalinstallationcostingprocess.Custom(min:0,max:unbounded):Usetosequenceacustomaction.ExecuteAction(min:0,max:unbounded):Initiatestheexecutionsequence.FileCost(min:0,max:unbounded):Initiatesdynamiccostingofstandardinstallationactions.FindRelatedProducts(min:0,max:unbounded):RunsthrougheachrecordoftheUpgradetableinsequenceandcomparestheupgradecode,productversion,andlanguageineachrowtoproductsinstalledonthesystem.IsolateComponents(min:0,max:unbounded):Installsacopyofa

Page 255: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

component(commonlyasharedDLL)intoaprivatelocationforusebyaspecificapplication(typicallyan.exe).LaunchConditions(min:0,max:unbounded):QueriestheLaunchConditiontableandevaluateseachconditionalstatementrecordedthere.MigrateFeatureStates(min:0,max:unbounded):Usedforupgradingorinstallingoveranexistingapplication.ResolveSource(min:0,max:unbounded):DeterminesthelocationofthesourceandsetstheSourceDirpropertyifthesourcehasnotbeenresolvedyet.RMCCPSearch(min:0,max:unbounded):Usesfilesignaturestovalidatethatqualifyingproductsareinstalledonasystembeforeanupgradeinstallationisperformed.ScheduleReboot(min:0,max:unbounded):Promptstheusertorestartthesystemattheendofinstallation.Notfixedsequence.Show(min:0,max:unbounded)ValidateProductID(min:0,max:unbounded):SetstheProductIDpropertytothefullproductidentifier.

AttributesNone

SeeAlsoWixSchema

Version2.0.4820.0

Page 256: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

InstallValidateElement

Description

Verifiesthatallcostedvolumeshaveenoughspacefortheinstallation.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsAdminExecuteSequence,AdminUISequence,AdvertiseExecuteSequence,InstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 257: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

InterfaceElement

Description

COMInterfaceregistrationforparentTypelib.

WindowsInstallerreferencesRegistryTable

ParentsClass,Component,Include,TypeLib

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId Uuid GUIDidentifierforCOM

Interface.Yes

Name String NameforCOMInterface.

Yes

NumMethods Integer NumberofmethodsimplementedonCOMInterface.

ProxyStubClassId Uuid GUIDCLSIDforproxystubtoCOMInterface.

ProxyStubClassId32 Uuid GUIDCLSIDfor32-bitproxystubtoCOMInterface.

Versioned YesNoType DetermineswhetheraTypelibversionentryshouldbecreatedwiththeotherCOMInterfaceregistrykeys.Defaultis

Page 258: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

'yes'.

SeeAlsoWixSchema

Version2.0.4820.0

Page 259: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

IsolateComponentElement

Description

SharedComponenttobeprivatelyreplicatedinfolderofparentComponent

WindowsInstallerreferencesIsolateComponentTable

ParentsComponent,Include

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredShared String SharedComponentforthisapplication

ComponentYes

SeeAlsoWixSchema

Version2.0.4820.0

Page 260: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

IsolateComponentsElement

Description

Installsacopyofacomponent(commonlyasharedDLL)intoaprivatelocationforusebyaspecificapplication(typicallyan.exe).Thisisolatestheapplicationfromothercopiesofthecomponentthatmaybeinstalledtoasharedlocationonthecomputer.TheactionreferstoeachrecordoftheIsolatedComponenttableandassociatesthefilesofthecomponentlistedintheComponent_SharedfieldwiththecomponentlistedintheComponent_Applicationfield.TheinstallerinstallsthefilesofComponent_SharedintothesamedirectoryasComponent_Application.Theinstallergeneratesafileinthisdirectory,zerobytesinlength,havingtheshortfilenamenameofthekeyfileforComponent_Application(typicallythisisthesamefilenameasthe.exe)appendedwith.local.TheIsolatedComponentactiondoesnotaffecttheinstallationofComponent_Application.UninstallingComponent_ApplicationalsoremovestheComponent_Sharedfilesandthe.localfilefromthedirectory.TheIsolateComponentsactioncanbeusedonlyintheInstallUISequencetableandtheInstallExecuteSequencetable.ThisactionmustcomeaftertheCostInitializeactionandbeforetheCostFinalizeaction.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence,InstallUISequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description Required

Page 261: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Sequence Integer Avalueusedtoindicatethepositionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema,IsolateComponent

Version2.0.4820.0

Page 262: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

LaunchConditionsElement

Description

QueriestheLaunchConditiontableandevaluateseachconditionalstatementrecordedthere.Ifanyoftheseconditionalstatementsfail,anerrormessageisdisplayedtotheuserandtheinstallationisterminated.TheLaunchConditionsactionisoptional.Thisactionisnormallythefirstinthesequence,buttheAppSearchActionmaybesequencedbeforetheLaunchConditionsaction.Iftherearelaunchconditionsthatdonotapplytoallinstallationmodes,theappropriateinstallationmodepropertyshouldbeusedinaconditionalexpressionintheappropriatesequencetable.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsAdminExecuteSequence,AdminUISequence,InstallExecuteSequence,InstallUISequence

InnerText(xs:string)Textnodespecifiestheconditionoftheaction.

ChildrenNone

Attributes

Name Type Description RequiredAfter String Thenameofanactionthatthis

actionshouldcomeafter.

Before String Thenameofanactionthatthisactionshouldcomebefore.

Sequence Integer Avalueusedtoindicatethepositionofthisactioninasequence.

Page 263: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema,Condition

Version2.0.4820.0

Page 264: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ListBoxElement

Description

SetofitemsforaparticularListBoxcontroltiedtoaninstallProperty

WindowsInstallerreferencesControlTable,DialogTable,ListViewTable

ParentsControl,UI

InnerTextNone

ChildrenSequence(min:1,max:1)

1. ListItem(min:0,max:unbounded):entryforListBoxtable

Attributes

Name Type Description RequiredProperty String Propertytiedtothisgroup Yes

SeeAlsoWixSchema

Version2.0.4820.0

Page 265: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ListItemElement

Description

TextandvalueassociatedwithPropertywithControlsettoListBox,ListView,ComboBox

WindowsInstallerreferencesControlTable,ComboBoxTable,DialogTable,ListBoxTable,ListViewTable

ParentsComboBox,ListBox,ListView

InnerTextNone

ChildrenSequence(min:1,max:1)

1. Text(min:0,max:1):AlternativetoTextattributewhenCDATAisneededtoescapeXMLdelimiters.

Attributes

Name Type Description RequiredIcon String OnlyvalidinListViewProperties Text String DefaultstoListItem'svalue Value String Valueassignedtotheassociated

controlProperty.Yes

SeeAlsoWixSchema

Version2.0.4820.0

Page 266: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ListViewElement

Description

SetofitemsforaparticularListViewcontroltiedtoaninstallProperty

WindowsInstallerreferencesListViewTable,ControlTable,DialogTable

ParentsControl,UI

InnerTextNone

ChildrenSequence(min:1,max:1)

1. ListItem(min:0,max:unbounded):entryforListViewtable

Attributes

Name Type Description RequiredProperty String Propertytiedtothisgroup Yes

SeeAlsoWixSchema

Version2.0.4820.0

Page 267: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

MediaElement

Description

Mediaelementdescribesadiskthatmakesupthesourcemediafortheinstallation.

WindowsInstallerreferencesMediaTable

ParentsFragment,Include,Product

InnerTextNone

ChildrenSequence(min:1,max:1)

1. DigitalSignature(min:0,max:1)2. PatchPackage(min:0,max:unbounded)

Attributes

Name Type Description RequiredId Integer DiskidentifierforMedia

table.Thisnumbermustbeequaltoorgreaterthan1.

Yes

Cabinet String Thenameofthecabinetifsomeorallofthefilesstoredonthemediaarecompressedintoacabinetfile.Ifnocabinetsareused,thisattributemustbeblank.

CompressionLevel Enumeration IndicatesthecompressionlevelfortheMedia'scabinet.This

Page 268: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

attributecanonlybeusedinconjunctionwiththeCabinetattribute.Thedefaultis'mszip'.Thisattribute'svalueshouldbeoneofthefollowing:high

low

medium

mszip

none

DiskPrompt String Thediskname,whichisusuallythevisibletextprintedonthedisk.Thislocalizabletextisusedtoprompttheuserwhenthisdiskneedstobeinserted.Thisvaluewillbeusedinthe"[1]"oftheDiskPromptProperty.UsingthisattributewillrequireyoutodefineaDiskPromptProperty.

EmbedCab YesNoType Instructsthebindertoembedthecabinetintheproductif'yes'.ThisattributecanonlybespecifiedinconjunctionwiththeCabinetattribute.

Layout String ThisattributespecifiestherootdirectoryfortheuncompressedfilesthatareapartofthisMedia

Page 269: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

element.Bydefault,thesrcwillbetheoutputdirectoryforthefinalimage.Thedefaultvalueensuresthebindergeneratesaninstallableimage.Ifarelativepathisspecifiedinthesrcattribute,thevaluewillbeappendedtotheimage'soutputdirectory.Ifanabsolutepathisprovided,thatpathwillbeusedwithoutmodification.Thelattertwooptionsareprovidedtoeasethelayoutofanimageontomultiplemedias(CDs/DVDs).

src String Thisattributehasbeendeprecated;pleaseusetheLayoutattributeinstead.

VolumeLabel String Thelabelattributedtothevolume.ThisisthevolumelabelreturnedbytheGetVolumeInformationfunction.IftheSourceDirpropertyreferstoaremovable(floppyorCD-ROM)volume,thenthisvolumelabelisusedtoverifythattheproperdiskisinthedrivebeforeattemptingtoinstallfiles.Theentryinthiscolumnmustmatchthevolume

Page 270: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

labelofthephysicalmedia.

SeeAlsoWixSchema

Version2.0.4820.0

Page 271: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

MergeElement

Description

MergedirectivetobringinaMergeModuletoberedirectedtoparentDirectory

WindowsInstallerreferencesNone

ParentsDirectory,DirectoryRef

InnerTextNone

ChildrenChoiceofelements(min:0,max:unbounded)ConfigurationData(min:0,max:unbounded):Datatouseasinputtoaconfigurablemergemodule.

Attributes

Name Type Description RequiredId String Theuniqueidentifierforthe

Mergeelementinthesourcecode.ReferencedbytheMergeRef/@Id.

Yes

DiskId String ThevalueofthisattributeshouldcorrespondtotheIdattributeofaMediaelementauthoredelsewhere.BycreatingthisconnectionbetweentheMergeModuleandMediaelement,yousetthepackagingoptionstothevaluesspecifiedintheMediaelement(valuessuch

Yes

Page 272: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ascompressionlevel,cabembedding,etc...).

FileCompression YesNoType Language Integer SpecifiesthedecimalLCID

forthelanguagetomergetheModuleinas.

Yes

SourceFile String src String Thisattributehasbeen

deprecated;pleaseusetheSourceFileattributeinstead.

SeeAlsoWixSchema,MergeRef

Version2.0.4820.0

Page 273: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

MergeRefElement

Description

MergereferencetoconnectaMergeModuletoparentFeature

WindowsInstallerreferencesNone

ParentsFeature,FeatureRef

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String TheuniqueidentifierfortheMerge

elementtobereferenced.Yes

Primary YesNoType SpecifieswhetherthefeaturecontainingthisMergeRefistheprimaryfeatureforadvertisingthemergemodule'scomponents.

SeeAlsoWixSchema,Merge

Version2.0.4820.0

Page 274: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

MigrateFeatureStatesElement

Description

Usedforupgradingorinstallingoveranexistingapplication.Readsfeaturestatesfromexistingapplicationandsetsthesefeaturestatesforthependinginstallation.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence,InstallUISequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 275: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

MIMEElement

Description

MIMEcontent-typeforanExtension

WindowsInstallerreferencesMIMETable

ParentsExtension

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredClass Uuid ClassIDfortheCOMserver

thatistobeassociatedwiththeMIMEcontent.

ContentType String ThisistheidentifierfortheMIMEcontent.Itiscommonlywrittenintheformoftype/format.

Yes

Default YesNoType If'yes',becomethecontenttypefortheparentExtension.Thedefaultvalueis'no'.

SeeAlsoWixSchema

Version2.0.4820.0

Page 276: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

MimeMapElement

Description

MimeMapdefinitionforIISresources.

WindowsInstallerreferencesNone

ParentsWebVirtualDir

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String IdfortheMimeMap. YesExtension String ExtensioncoveredbytheMimeMap.

Mustbeginwithadot.Yes

Type String Mime-typecoveredbytheMimeMap. Yes

SeeAlsoWixSchema

Version2.0.4820.0

Page 277: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ModuleElement

Description

TheModuleelementisanalogoustothemainfunctioninaCprogram.Whenlinking,onlyoneModulesectioncanbegiventothelinkertoproduceasuccessfulresult.Usingthiselementcreatesanmsmfile.

WindowsInstallerreferencesNone

ParentsWix

InnerTextNone

ChildrenSequence(min:1,max:1)

1. Package(min:1,max:1)2. Choiceofelements(min:0,max:unbounded)

AppId(min:0,max:unbounded)Binary(min:0,max:unbounded)ComponentGroupRef(min:0,max:unbounded)ComponentRef(min:0,max:unbounded)Configuration(min:0,max:unbounded)CustomAction(min:0,max:unbounded)CustomActionRef(min:0,max:unbounded)CustomTable(min:0,max:unbounded)Dependency(min:0,max:unbounded)Directory(min:0,max:unbounded)DirectoryRef(min:0,max:unbounded)EnsureTable(min:0,max:unbounded)Exclusion(min:0,max:unbounded)

Page 278: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

FragmentRef(min:0,max:unbounded)Group(min:0,max:unbounded)Icon(min:0,max:unbounded)IgnoreModularization(min:0,max:unbounded)Property(min:0,max:unbounded)PropertyRef(min:0,max:unbounded)SFPCatalog(min:0,max:unbounded)SqlDatabase(min:0,max:unbounded)Substitution(min:0,max:unbounded)UI(min:0,max:unbounded)UIRef(min:0,max:unbounded)User(min:0,max:unbounded)WebApplication(min:0,max:unbounded)WebAppPool(min:0,max:unbounded)WebDirProperties(min:0,max:unbounded)WebLog(min:0,max:unbounded)WebSite(min:0,max:unbounded)Sequence(min:1,max:1)

1. InstallExecuteSequence(min:0,max:1)2. InstallUISequence(min:0,max:1)3. AdminExecuteSequence(min:0,max:1)4. AdminUISequence(min:0,max:1)5. AdvertiseExecuteSequence(min:0,max:1)

AnyElementnamespace='##other'processContents='Lax'

Attributes

Name Type Description RequiredId String Thenameofthemerge

module(notthefilename).Yes

Codepage Integer Thecodepageofthemergemodule.

Guid Uuid TheproductcodeGUIDofthemergemodule.

Yes

Language LocalizableInteger ThedecimallanguageID Yes

Page 279: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

(LCID)ofthemergemodule.

Version String Theproductversionstringofthemergemodule.

Yes

SeeAlsoWixSchema

Version2.0.4820.0

Page 280: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

MoveFilesElement

Description

Locatesexistingfilesonthesystemandmovesorcopiesthosefilestoanewlocation.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 281: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

MsiPublishAssembliesElement

Description

ManagestheadvertisementofCLRandWin32assemblies.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsAdvertiseExecuteSequence,InstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 282: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

MsiUnpublishAssembliesElement

Description

ManagestheunadvertisementofCLRandWin32assembliesthatarebeingremoved.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 283: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ODBCDataSourceElement

Description

ODBCDataSourceforaComponent

WindowsInstallerreferencesODBCDataSourceTable

ParentsComponent,Include,ODBCDriver

InnerTextNone

ChildrenSequence(min:1,max:1)

1. Property(min:0,max:unbounded):TranslatesintoODBCSourceAttributes

Attributes

Name Type Description RequiredId String Identifierofthedatasource. YesDriverName String Requiredifnotfoundaschildof

ODBCDriverelement

KeyPath YesNoType Set'yes'toforcethisfiletobekeypathforparentComponent

Name String Nameforthedatasource. YesRegistration Enumeration Scopeforwhichthedata

sourceshouldberegistered.Thisattribute'svalueshouldbeoneofthefollowing:machine

user

Yes

SeeAlso

Page 284: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WixSchemaVersion2.0.4820.0

Page 285: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ODBCDriverElement

Description

ODBCDriverforaComponent

WindowsInstallerreferencesODBCDriverTable

ParentsComponent,File,Include

InnerTextNone

ChildrenSequence(min:1,max:1)

1. Property(min:0,max:unbounded):TranslatesintoODBCSourceAttributes

2. ODBCDataSource(min:0,max:unbounded)

Attributes

Name Type Description RequiredId String Identifierforthedriver. YesFile String RequiredifnotfoundaschildofFile

element

Name String Nameforthedriver. YesSetupFile String RequiredifnotfoundaschildofFile

elementordifferentfromFileattributeabove

SeeAlsoWixSchema

Version2.0.4820.0

Page 286: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ODBCTranslatorElement

Description

ODBCTranslatorforaComponent

WindowsInstallerreferencesODBCTranslatorTable

ParentsComponent,File,Include

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String Identifierforthetranslator. YesFile String RequiredifnotfoundaschildofFile

element

Name String Nameforthetranslator. YesSetupFile String RequiredifnotfoundaschildofFile

elementordifferentfromFileattributeabove

SeeAlsoWixSchema

Version2.0.4820.0

Page 287: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

PackageElement

Description

PropertiesaboutthepackagetobeplacedintheSummaryInformationStream.ThesearevisiblefromCOMthroughtheIStreaminterface,andthesepropertiescanbeseenonthepackageinExplorer.

WindowsInstallerreferencesNone

ParentsModule,Product

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId Autogenuuid Packagecode

GUIDforSKU.Yes

AdminImage YesNoType Setto'yes'ifthesourceisanadminimage.

Comments String Optionalcommentsforbrowsing.

Compressed YesNoType Setto'yes'tohavecompressedfilesinthesource.

Description String Theproductfullnameordescription.

Page 288: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

InstallerVersion Integer Theminimuminstallerversion(major*100+minor).

InstallPrivileges Enumeration UsethisattributetospecifythepriviligesrequiredtoinstallthepackageonWindowsVistaandabove.Thisattribute'svalueshouldbeoneofthefollowing:limited

Setthisvaluetodeclarethatthepackagedoesnotrequireelevatedprivilegestoinstall.

elevatedSetthisvaluetodeclarethatthepackagerequireselevatedprivilegestoinstall.Thisisthedefaultvalue.

Keywords String Optionalkeywordsfor

Page 289: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

browsing.Languages String Thelistof

languageIDs(LCIDs)supportedinthepackage.

Manufacturer String Thevendorreleasingthepackage.

Platforms String Thelistofplatformssupportedinthepackage.

ReadOnly YesNoDefaultType Thevalueofthisattributeconveyswhetherthepackageshouldbeopenedasread-only.Adatabaseeditingtoolshouldnotmodifyaread-onlyenforceddatabaseandshouldissueawarningatattemptstomodifyaread-onlyrecommendeddatabase.

ShortNames YesNoType Setto'yes'tohaveshortfilenamesinthesource.

SummaryCodepage LocalizableInteger Thecodepageforsummaryinfo

Page 290: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

stringsonly.Thelanguageneutralcodepage,zero,isnotavalidvalue.

SeeAlsoWixSchema

Version2.0.4820.0

Page 291: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

PatchElement

Description

PatchinformationforparentFileelement

WindowsInstallerreferencesPatchTable

ParentsFile

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredHeader String streaminBinarytable YesPatchSize Integer maybedefaultedifbuildtools

supplyactualsize

Sequence Integer maybedefaultedifnotincabinetifbuildtoolssupplysequence

Vital YesNoType

SeeAlsoWixSchema

Version2.0.4820.0

Page 292: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

PatchCertificatesElement

Description

Identifiesthepossiblesignercertificatesusedtodigitallysignpatches.

WindowsInstallerreferencesMsiPatchCertificateTable

ParentsFragment,Product

InnerTextNone

ChildrenChoiceofelements(min:1,max:unbounded)DigitalCertificate(min:1,max:unbounded)

AttributesNone

SeeAlsoWixSchema

Version2.0.4820.0

Page 293: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

PatchCreationElement

Description

ThePatchCreationelementisanalogoustothemainfunctioninaCprogram.Whenlinking,onlyonePatchCreationsectioncanbegiventothelinkertoproduceasuccessfulresult.Usingthiselementcreatesapcpfile.

WindowsInstallerreferencesNone

ParentsWix

InnerTextNone

ChildrenSequence(min:1,max:1)

1. PatchInformation(min:1,max:1)2. PatchMetadata(min:0,max:1)3. Family(min:1,max:unbounded)4. Choiceofelements(min:0,max:unbounded)

PatchProperty(min:0,max:unbounded)PatchSequence(min:0,max:unbounded)ReplacePatch(min:0,max:unbounded)TargetProductCode(min:0,max:unbounded)

Attributes

Name Type Description RequiredId Uuid Guidforthis

patch.Yes

AllowMajorVersionMismatches YesNoType TrueifProductVersionpropertymay

Page 294: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

differbyamajorversion.

AllowProductCodeMismatches YesNoType ProductCodepropertymaydifferbetweenUpgradedImagestableandTargetImagestable.

CleanWorkingFolder YesNoType Whetherpatchwizshouldcleanthetempfolderwhenfinished.

Codepage Integer ThecodepagefortheresultingPCP.

OutputPath String Outputpatchforpatchwiz.

SourceList String Usedtolocatethe.mspfileforthepatchifthecachedcopyisunavailable.

SymbolFlags Int Symbolflags. WholeFilesOnly YesNoType Changingfiles

shouldbeincludedintheirentirety.

SeeAlsoWixSchema

Version2.0.4820.0

Page 295: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

PatchFilesElement

Description

QueriesthePatchtabletodeterminewhichpatchesaretobeapplied.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 296: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

PatchInformationElement

Description

PropertiesaboutthepatchtobeplacedintheSummaryInformationStream.ThesearevisiblefromCOMthroughtheIStreaminterface,andthesepropertiescanbeseenonthepackageinExplorer.

WindowsInstallerreferencesNone

ParentsPatchCreation

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredAdminImage YesNoType Sourceisan

adminimage

Comments String Optionalcommentsforbrowsing

Compressed YesNoType Compressedfilesonsource

Description String Productfullnameordescription

Keywords String Optionalkeywordsforbrowsing

Languages String ListoflanguageIDssupportedinpackage

Page 297: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Manufacturer String Vendorreleasingthepackage

Platforms String Listofplatformssupportedinpackage

ReadOnly YesNoDefaultType Thevalueofthisattributeconveyswhetherthepackageshouldbeopenedasread-only.Adatabaseeditingtoolshouldnotmodifyaread-onlyenforceddatabaseandshouldissueawarningatattemptstomodifyaread-onlyrecommendeddatabase.

ShortNames YesNoType Shortfilenamesonsource

SummaryCodepage LocalizableInteger Thecodepageforsummaryinfostringsonly.Thelanguageneutralcodepage,zero,isnotavalidvalue.

SeeAlsoWixSchema

Version2.0.4820.0

Page 298: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

PatchMetadataElement

Description

PropertiesaboutthepatchtobeplacedinthePatchMetadatatable.

WindowsInstallerreferencesNone

ParentsPatchCreation

InnerTextNone

ChildrenChoiceofelements(min:1,max:1)CustomProperty(min:0,max:1):Acustompropertythatextendsthestandardset.

Attributes

Name Type Description RequiredAllowRemoval YesNoType Whetherthisisan

uninstallablepatch.Yes

Classification Enumeration Categoryofupdates.Thisattribute'svalueshouldbeoneofthefollowing:CriticalUpdate

Hotfix

SecurityRollup

ServicePack

Update

UpdateRollup

Yes

Page 299: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

CreationTimeUTC String Creationtimeofthe.mspfileintheformmm:dd:yy:HH:MM(month:day:year:hour:minute).

Description String Descriptionofthepatch.

Yes

DisplayName String Atitleforthepatchthatissuitableforpublicdisplay.InAdd/RemoveProgramsfromXPSP2on.

Yes

ManufacturerName String Nameofthemanufacturer.

Yes

MinorUpdateTargetRTM String IndicatesthatthepatchtargetstheRTMversionoftheproductorthemostrecentmajorupgradepatch.AuthorthisoptionalpropertyinminorupdatepatchesthatcontainsequencinginformationtoindicatethatthepatchremovesallpatchesuptotheRTMversionoftheproduct,oruptothemostrecentmajorupgradepatch.ThispropertyisavailablebeginningwithWindowsInstaller

Page 300: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

3.1.

MoreInfoURL String AURLthatprovidesinformationspecifictothispatch.InAdd/RemoveProgramsfromXPSP2on.

OptimizedInstallMode YesNoType Ifthisattributeissetto'yes'inallthepatchestobeappliedinatransaction,theapplicationofthepatchisoptimizedifpossible.AvailablebeginningwithWindowsInstaller3.1.

TargetProductName String Nameoftheapplicationortargetproductsuite.

Yes

SeeAlsoWixSchema

Version2.0.4820.0

Page 301: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

PatchPackageElement

Description

PatchPackagefoundonparentMediaelement

WindowsInstallerreferencesNone

ParentsMedia

InnerText(uuid)ElementvalueisPatchIdGUID.

ChildrenNone

AttributesNone

SeeAlsoWixSchema

Version2.0.4820.0

Page 302: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

PatchPropertyElement

Description

Apropertyforthispatchdatabase.

WindowsInstallerreferencesNone

ParentsPatchCreation

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredName String Nameofthepatchcreationproperty. YesValue String Valueofthepatchcreationproperty. Yes

SeeAlsoWixSchema

Version2.0.4820.0

Page 303: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

PatchSequenceElement

Description

Sequenceinformationforthispatchdatabase.Sequenceinformationisgeneratedautomaticallyinmostcases,andrarelyneedstobesetexplicitly.

WindowsInstallerreferencesNone

ParentsPatchCreation

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredPatchFamily String Identifierwhichindicatesoneofthe

sequencefamiliestowhichthispatchbelongs.

Yes

Sequence String UsedtopopulatethesequencecolumnoftheMsiPatchSequencetableinthefinalMSPfile.Specifiedinx.x.x.xformat.SeedocumentationforSequencecolumnofMsiPatchSequencetableinMSISDK.

Supersede Integer Non-NULLvalueindicatesthatthispatchsupersedesearlierpatchesinthisfamily.SeedocumentationforAttributescolumnofMsiPatchSequencetableinMSI

Page 304: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

SDK.Target String Usedtodeterminetheproduct

codefilteringforthepatchfamily.

SeeAlsoWixSchema

Version2.0.4820.0

Page 305: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

PerfCounterElement

Description

UsedtoinstallPerfmoncounters.

WindowsInstallerreferencesNone

ParentsFile

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredName String

SeeAlsoWixSchema

Version2.0.4820.0

Page 306: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

PermissionElement

Description

SetsACLsonFile,Registry,orCreateFolder.WhenunderaRegistryelement,thiscannotbeusediftheActionattribute'svalueisremoveorremoveKeyOnInstall.ThiselementhasnoIdattribute.Thetableandkeyaretakenfromtheparentelement.

WindowsInstallerreferencesLockPermissionsTable

ParentsCreateFolder,File,FileShare,Registry,ServiceInstall

InnerTextNone

ChildrenNone

Attributes

Name Type DescriptionAppend YesNoType ChangePermission YesNoType CreateChild YesNoType Foradirectory,therighttocreatea

subdirectory.Onlyvalidundera'CreateFolder'parent.

CreateFile YesNoType Foradirectory,therighttocreateafileinthedirectory.Onlyvalidundera'CreateFolder'parent.

CreateLink YesNoType CreateSubkeys YesNoType Delete YesNoType DeleteChild YesNoType Foradirectory,therighttodeletea

directoryandallthefilesit

Page 307: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

contains,includingread-onlyfiles.Onlyvalidundera'CreateFolder'parent.

Domain String EnumerateSubkeys YesNoType Execute YesNoType Extended YesNoType Specifieswhetherornottousethe

LockPermissionstablewhenthePermissionelementisnestedunderaRegistry,File,orCreateFolderelement.IfExtendedissetto'yes'thentheWiXSecureObjectcustomactionwillbeusedtolockdowntheresourceinsteadofthe"legacy"LockPermissionstable.Specifying'yes'forthisattributewillrequireyoutolinkyourMSIwiththewixca.wixlib.ByusingtheSecureObjectcustomactionyoucanapplypermissionsformanymorewellknownuserSIDsaswellasforuseraccountsthatarecreatedaspartoftheinstall.

GenericAll YesNoType GenericExecute YesNoType GenericRead YesNoType specifyingthiswillfailtograntread

accessGenericWrite YesNoType Notify YesNoType Read YesNoType ReadAttributes YesNoType ReadExtendedAttributes YesNoType ReadPermission YesNoType ServiceChangeConfig YesNoType Requiredtocallthe

ChangeServiceConfigor

Page 308: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ChangeServiceConfig2functiontochangetheserviceconfiguration.Onlyvalidundera'ServiceInstall'parent.

ServiceEnumerateDependents YesNoType RequiredtocalltheEnumDependentServicesfunctiontoenumeratealltheservicesdependentontheservice.validundera'ServiceInstall'parent.

ServiceInterrogate YesNoType RequiredtocalltheControlServicefunctiontoasktheservicetoreportitsstatusimmediately.Onlyvalidundera'ServiceInstall'parent.

ServicePauseContinue YesNoType RequiredtocalltheControlServicefunctiontopauseorcontinuetheservice.Onlyvalidundera'ServiceInstall'parent.

ServiceQueryConfig YesNoType RequiredtocalltheQueryServiceConfigandQueryServiceConfig2functionstoquerytheserviceconfiguration.Onlyvalidundera'ServiceInstall'parent.

ServiceQueryStatus YesNoType RequiredtocalltheQueryServiceStatusfunctiontoasktheservicecontrolmanageraboutthestatusoftheservice.Onlyvalidundera'ServiceInstall'parent.

ServiceStart YesNoType RequiredtocalltheStartServicefunctiontostarttheservice.validundera'ServiceInstall'parent.

ServiceStop YesNoType RequiredtocalltheControlServicefunctiontostoptheservice.validundera'ServiceInstall'parent.

Page 309: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ServiceUserDefinedControl YesNoType RequiredtocalltheControlServicefunctiontospecifyauser-definedcontrolcode.Onlyvalidundera'ServiceInstall'parent.

Synchronize YesNoType TakeOwnership YesNoType Traverse YesNoType Foradirectory,therighttotraverse

thedirectory.Bydefault,usersareassignedtheBYPASS_TRAVERSE_CHECKINGprivilege,whichignorestheFILE_TRAVERSEaccessright.Onlyvalidundera'CreateFolder'parent.

User String Write YesNoType WriteAttributes YesNoType WriteExtendedAttributes YesNoType

SeeAlsoWixSchema

Version2.0.4820.0

Page 310: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ProcessComponentsElement

Description

Registersandunregisterscomponents,theirkeypaths,andthecomponentclients.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 311: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ProductElement

Description

TheProductelementisanalogoustothemainfunctioninaCprogram.Whenlinking,onlyoneProductsectioncanbegiventothelinkertoproduceasuccessfulresult.Usingthiselementcreatesanmsifile.

WindowsInstallerreferencesNone

ParentsWix

InnerTextNone

ChildrenSequence(min:1,max:1)

1. Package(min:1,max:1)2. Choiceofelements(min:0,max:unbounded)

AppId(min:0,max:unbounded)Binary(min:0,max:unbounded)ComplianceCheck(min:0,max:unbounded)Condition(min:0,max:unbounded)CustomAction(min:0,max:unbounded)CustomActionRef(min:0,max:unbounded)CustomTable(min:0,max:unbounded)Directory(min:0,max:unbounded)DirectoryRef(min:0,max:unbounded)EnsureTable(min:0,max:unbounded)Feature(min:0,max:unbounded)FeatureRef(min:0,max:unbounded)FragmentRef(min:0,max:unbounded)

Page 312: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Group(min:0,max:unbounded)Icon(min:0,max:unbounded)Media(min:0,max:unbounded)PatchCertificates(min:0,max:unbounded)Property(min:0,max:unbounded)PropertyRef(min:0,max:unbounded)SFPCatalog(min:0,max:unbounded)SqlDatabase(min:0,max:unbounded)UI(min:0,max:unbounded)UIRef(min:0,max:unbounded)Upgrade(min:0,max:unbounded)User(min:0,max:unbounded)WebApplication(min:0,max:unbounded)WebAppPool(min:0,max:unbounded)WebDirProperties(min:0,max:unbounded)WebLog(min:0,max:unbounded)WebSite(min:0,max:unbounded)Sequence(min:1,max:1)

1. InstallExecuteSequence(min:0,max:1)2. InstallUISequence(min:0,max:1)3. AdminExecuteSequence(min:0,max:1)4. AdminUISequence(min:0,max:1)5. AdvertiseExecuteSequence(min:0,max:1)

AnyElementnamespace='##other'processContents='Lax'HelpCollectionRefHelpFilter

Attributes

Name Type Description RequiredId Autogenuuid TheproductcodeGUID

fortheproduct.Yes

Codepage Integer ThecodepagefortheresultingMSI.

Language LocalizableInteger Thedecimallanguage Yes

Page 313: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ID(LCID)fortheproduct.

Manufacturer String Themanufactureroftheproduct.

Yes

Name String Thedescriptivenameoftheproduct.

Yes

UpgradeCode Uuid TheupgradecodeGUIDfortheproduct.

Version String Theproduct'sversionstring.

Yes

Anyattributenamespace='##other'processContents='lax'

SeeAlsoWixSchema

Version2.0.4820.0

Page 314: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ProgIdElement

Description

ProgIdregistrationforparentComponent.IfProgIdhasanassociatedClass,itmustbeachildofthatelement.

WindowsInstallerreferencesProgIdTable,ClassTable,RegistryTable,IconTable

ParentsClass,Component,Include,ProgId

InnerTextNone

ChildrenSequence(min:1,max:1)

1. ProgId(min:0,max:1):Version-independentProgIdmustbechildelementofactualProgId.NestingfurtherProgIdelementswithintheVersion-independentProgIdisdisallowed.

2. Extension(min:0,max:unbounded):extensionsthatrefertothisProgId

Attributes

Name Type Description RequiredId String YesAdvertise YesNoType Description String Icon String referencetoIconelement IconIndex Integer NoOpen String Specifiesthattheassociated

ProgIdshouldnotbeopenedbyusers.Thevalueispresentedasawarningtousers.Anempty

Page 315: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

stringisalsovalidforthisattribute.SeetheMSDNdocumentationformoreinformation.

SeeAlsoWixSchema

Version2.0.4820.0

Page 316: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ProgressTextElement

Description

None

WindowsInstallerreferencesActionTextTable

ParentsUI

InnerText(xs:string)Elementvalueisprogressmessagetextforaction

ChildrenNone

Attributes

Name Type Description RequiredAction String YesTemplate String usedtoformatActionDatamessages

fromactionprocessing

SeeAlsoWixSchema

Version2.0.4820.0

Page 317: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

PropertyElement

Description

PropertyvalueforaProductorModule.

WindowsInstallerreferencesPropertyTable

ParentsControl,Fragment,Include,Module,ODBCDataSource,ODBCDriver,Product,UI,Upgrade

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenSequence(min:1,max:1)

1. ComplianceDrive(min:0,max:1):StartssearchesfromtheCCP_DRIVE.

2. ComponentSearch(min:0,max:unbounded)3. RegistrySearch(min:0,max:unbounded)4. RegistrySearchRef(min:0,max:unbounded)5. IniFileSearch(min:0,max:unbounded)6. DirectorySearch(min:0,max:unbounded)7. DirectorySearchRef(min:0,max:unbounded)8. FileSearch(min:0,max:unbounded)

Attributes

Name Type Description RequiredId String Uniqueidentifierfor

Property.Yes

Admin YesNoType DenotesthatthePropertyissavedduringadmininistrativeinstallation.Seethe

Page 318: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

AdminPropertiesPropertyformoreinformation.

ComplianceCheck YesNoType AddsarowtotheCCPSearchtable.ThisattributeisonlyvalidwhenthisPropertycontainsasearchelement.

Hidden YesNoType DenotesthatthePropertyisnotloggedduringinstallation.SeetheMsiHiddenPropertiesPropertyformoreinformation.

Secure YesNoType DenotesthatthePropertycanbepassedtotheserversidewhendoingamanagedinstallationwithelevatedprivileges.SeetheSecureCustomPropertiesPropertyformoreinformation.

Value String Setsadefaultvaluefortheproperty.ThevaluewillbeoverwrittenifthePropertyisusedforasearch.

SeeAlsoWixSchema,PropertyRef

Version2.0.4820.0

Page 319: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

PropertyRefElement

Description

ReferencetoaPropertyvalue.

WindowsInstallerreferencesNone

ParentsFragment,Include,Module,Product

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String IdentifierofPropertytoreference. Yes

SeeAlsoWixSchema,Property

Version2.0.4820.0

Page 320: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ProtectFileElement

Description

Specifiesafiletobeprotected.

WindowsInstallerreferencesNone

ParentsFamily

InnerTextNone

ChildrenChoiceofelements(min:0,max:unbounded)ProtectRange(min:0,max:unbounded)

Attributes

Name Type Description RequiredFile String ForeignkeyintotheFiletable. Yes

SeeAlsoWixSchema

Version2.0.4820.0

Page 321: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ProtectRangeElement

Description

Specifiespartofafilethatcannotbeoverwrittenduringpatching.

WindowsInstallerreferencesNone

ParentsExternalFile,ProtectFile,TargetFile

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredLength Int Lengthoftherange. YesOffset Int Offsetofthestartoftherange. Yes

SeeAlsoWixSchema

Version2.0.4820.0

Page 322: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

PublishElement

Description

None

WindowsInstallerreferencesControlEventTable

ParentsControl

InnerText(xs:string)TheelementvalueistheoptionalConditionexpression.

ChildrenNone

Attributes

Name Type Description RequiredEvent String Setthisattribute'svaluetooneofthe

standardcontroleventstotriggerthatevent.EitherthisattributeorthePropertyattributemustbeset,butnotbothatthesametime.

Property String Setthisattribute'svaluetoapropertynametosetthatproperty.EitherthisattributeortheEventattributemustbeset,butnotbothatthesametime.

Value String IfthePropertyattributeisspecified,setthevalueofthisattributetothenewvaluefortheproperty.Tosetapropertytonull,donotsetthisattribute(theControlEventArgumentcolumnwillbesetto'{}').Otherwise,thisattribute'svalueshouldbetheargumentfortheeventspecifiedin

Page 323: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

theEventattribute.

SeeAlsoWixSchema

Version2.0.4820.0

Page 324: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

PublishComponentsElement

Description

ManagestheadvertisementofthecomponentsfromthePublishComponenttable.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsAdvertiseExecuteSequence,InstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 325: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

PublishFeaturesElement

Description

Writeseachfeature'sstateintothesystemregistry.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsAdvertiseExecuteSequence,InstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 326: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

PublishProductElement

Description

Managestheadvertisementoftheproductinformationwiththesystem.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsAdvertiseExecuteSequence,InstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 327: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RadioButtonElement

Description

TextorIconplusValuethatisassignedtothePropertyoftheparentControl(RadioButtonGroup).

WindowsInstallerreferencesRadioButtonTable,ControlTable,DialogTable

ParentsRadioButtonGroup

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredBitmap String Thisattributedefinesthe

bitmapdisplayedwiththeradiobutton.ThevalueoftheattributecreatesareferencetoaBinaryelementthatrepresentsthebitmap.ThisattributeismutuallyexclusivewiththeIconandTextattributes.

Height LocalizableInteger YesHelp String Icon String Thisattributedefinestheicon

displayedwiththeradiobutton.ThevalueoftheattributecreatesareferencetoaBinaryelementthat

Page 328: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

representstheicon.ThisattributeismutuallyexclusivewiththeBitmapandTextattributes.

Text String Textdisplayedwiththeradiobutton.ThisattributeismutuallyexclusivewiththeBitmapandIconattributes.

ToolTip String Value String Valueassignedtothe

associatedcontrolPropertywhenthisradiobuttonisselected.

Yes

Width LocalizableInteger YesX LocalizableInteger YesY LocalizableInteger Yes

SeeAlsoWixSchema,RadioButtonGroup

Version2.0.4820.0

Page 329: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RadioButtonGroupElement

Description

SetofradiobuttonstiedtothespecifiedProperty

WindowsInstallerreferencesRadioButtonTable,ControlTable,DialogTable

ParentsControl,UI

InnerTextNone

ChildrenSequence(min:1,max:1)

1. RadioButton(min:1,max:unbounded)

Attributes

Name Type Description RequiredProperty String Propertytiedtothisgroup. Yes

SeeAlsoWixSchema

Version2.0.4820.0

Page 330: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RecycleTimeElement

Description

IIS6ApplicationPoolRecycleTimeson24hourclock.

WindowsInstallerreferencesNone

ParentsWebAppPool

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredValue String Pattern:'\d{1,2}:\d{2}'. Yes

SeeAlsoWixSchema

Version2.0.4820.0

Page 331: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RegisterClassInfoElement

Description

ManagestheregistrationofCOMclassinformationwiththesystem.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsAdvertiseExecuteSequence,InstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 332: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RegisterComPlusElement

Description

RegistersCOM+applications.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 333: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RegisterExtensionInfoElement

Description

Managestheregistrationofextensionrelatedinformationwiththesystem.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsAdvertiseExecuteSequence,InstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 334: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RegisterFontsElement

Description

Registersinstalledfontswiththesystem.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 335: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RegisterMIMEInfoElement

Description

RegistersMIME-relatedregistryinformationwiththesystem.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsAdvertiseExecuteSequence,InstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 336: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RegisterProductElement

Description

Registerstheproductinformationwiththeinstaller.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 337: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RegisterProgIdInfoElement

Description

ManagestheregistrationofOLEProgIdinformationwiththesystem.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsAdvertiseExecuteSequence,InstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 338: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RegisterTypeLibrariesElement

Description

Registerstypelibrarieswiththesystem.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 339: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RegisterUserElement

Description

Registerstheuserinformationwiththeinstallertoidentifytheuserofaproduct.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 340: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RegistryElement

Description

Thiselementallowsyoutoaddorremoveregistrykeys(dependinguponthevalueoftheactionattribute).Pleasenotethatforremoval,thereare4options:youcanremoveaparticularregistryname,anentireregistrykeywhentheparentcomponentisinstalled,anentireregistrykeywhentheparentcomponentisuninstalled,orcreateakeywhentheparentcomponentisinstalled,thenremoveitwhentheparentcomponentisuninstalled.

WindowsInstallerreferencesRegistryTable

ParentsComponent,Include,Registry

InnerTextNone

ChildrenChoiceofelements(min:0,max:unbounded)Permission(min:0,max:unbounded)Registry(min:0,max:unbounded)RegistryValue(min:0,max:unbounded)

Attributes

Name Type Description RequiredAction Enumeration Thisistheactionthatwillbetakenfor

thisregistrykey.Thisattribute'svalueshouldbeoneofthefollowing:append

Appendsthespecifiedvalue(s)toamultiStringregistrykey.

createKeyCreatesthekey,ifabsent,when

Page 341: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

theparentcomponentisinstalled.

createKeyAndRemoveKeyOnUninstallCreatesthekey,ifabsent,whentheparentcomponentisinstalledthenremovethekeywithallitsvaluesandsubkeyswhentheparentcomponentisuninstalled.

prependPrependsthespecifiedvalue(s)toamultiStringregistrykey.

removeRemovesaregistrynamewhentheparentcomponentininstalled.

removeKeyOnInstallRemovesakeywithallitsvaluesandsubkeyswhentheparentcomponentisinstalled.

removeKeyOnUninstallRemovesakeywithallitsvaluesandsubkeyswhentheparentcomponentisuninstalled.

writeWritesaregistryvalue.

Id String Primarykeyusedtoidentifythisparticularentry.Ifthisattributeisnotspecified,anidentifierwillbegeneratedbyhashingtheparentComponentidentifier,Root,Key,andName.

Key String Thelocalizablekeyfortheregistryvalue.

KeyPath YesNoType Setthisattributeto'yes'tomakethis

Page 342: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

registrykeytheKeyPathoftheparentcomponent.Onlyoneresource(registry,file,etc)canbetheKeyPathofacomponent.

Name String Thelocalizableregistryvaluename.Ifthisattributeisnotprovidedthedefaultvaluefortheregistrykeywillbesetinstead.TheWindowsInstallerallowsseveralspecialvaluestobesetforthisattribute.YoushouldnotusetheminWiX.InsteaduseappropriatevaluesintheActionattributetogetthedesiredbehavior.

Root Enumeration Thepredefinedrootkeyfortheregistryvalue.Thisattribute'svalueshouldbeoneofthefollowing:HKMU

Aper-userinstallationwillmaketheoperationoccurunderHKEY_CURRENT_USER.Aper-machineinstallationwillmaketheoperationoccurunderHKEY_LOCAL_MACHINE.

HKCROperationoccursunderHKEY_CLASSES_ROOT.WhenusingWindows2000orlater,theinstallerwritesorremovesthevaluefromtheHKCU\Software\Classeshiveduringper-userinstallations.WhenusingWindows2000orlateroperatingsystems,theinstallerwritesorremovesthevaluefromtheHKLM\Software\Classeshiveduringper-machineinstallations.

Page 343: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

HKCUOperationoccursunderHKEY_CURRENT_USER.ItisrecommendedtosettheKeyPath='yes'attributewhensettingthisvalueinordertoensurethattheinstallerwritesthenecessaryregistryentrieswhentherearemultipleusersonthesamecomputer.

HKLMOperationoccursunderHKEY_LOCAL_MACHINE.

HKUOperationoccursunderHKEY_USERS.

Type Enumeration Setthisattributetothetypeofthedesiredregistrykey.ThisattributemustbespecifiedwhenevertheValueattributeorachildRegistryValueelementisspecified.ThisattributeshouldonlybesetwhenthevalueoftheActionattributedoesnotincludetheword'remove'.Thisattribute'svalueshouldbeoneofthefollowing:string

Thevalueisinterpretedandstoredasastring(REG_SZ).

integerThevalueisinterpretedandstoredasaninteger(REG_DWORD).

binaryThevalueisinterpretedandstoredasahexadecimalvalue(REG_BINARY).

Page 344: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

expandableThevalueisinterpretedandstoredasanexpandablestring(REG_EXPAND_SZ).

multiStringThevalueisinterpretedandstoredasamultiplestrings(REG_MULTI_SZ).Pleasenotethatthisvaluewillonlyresultinamulti-stringvalueifthereismorethanoneregistryvalueortheActionattribute'svalueis'append'or'prepend'.Otherwiseastringvaluewillbecreated.

Value String Setthisattributetothelocalizableregistryvalue.Thisvalueisformatted.TheWindowsInstallerallowsseveralspecialvaluestobesetforthisattribute.YoushouldnotusetheminWiX.InsteaduseappropriatevaluesintheTypeattributetogetthedesiredbehavior.ThisattributecannotbespecifiediftheActionattribute'svaluecontainstheword'remove'.

SeeAlsoWixSchema

Version2.0.4820.0

Page 345: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RegistrySearchElement

Description

Searchesforfile,directoryorregistrykeyandassignstovalueofparentProperty

WindowsInstallerreferencesRegLocatorTable,SignatureTable

ParentsComplianceCheck,Property

InnerTextNone

ChildrenChoiceofelements(min:0,max:1)DirectorySearch(min:0,max:1)DirectorySearchRef(min:0,max:1)FileSearch(min:0,max:1)FileSearchRef(min:0,max:1)

Attributes

Name Type Description RequiredId String Signaturetobeusedforthefile,

directoryorregistrykeybeingsearchfor.

Yes

Key String Keyfortheregistryvalue. YesName String Registryvaluename. Root Enumeration Rootkeyfortheregistryvalue.This

attribute'svalueshouldbeoneofthefollowing:HKCR

HKCU

Yes

Page 346: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

HKLM

HKU

Type Enumeration Thevaluemustbe'file'ifthelastchildisaFileSearchelementandmustbe'directory'iflastchildisaDirectorySearchelement.Thisattribute'svalueshouldbeoneofthefollowing:directory

Setsadirectorypathfromtheregistryvalue.

fileSetsafilepathfromtheregistryvalue.

rawSetstherawvaluefromtheregistryvalue.Pleasenotethatthisvaluewillcontainaprefixasfollows:DWORD:Startswith'#'optionallyfollowedby'+'or'-'.REG_BINARY:Startswith'#x'andtheinstallerconvertsandsaveseachhexadecimaldigit(nibble)asanASCIIcharacterprefixedby'#x'.REG_EXPAND_SZ:Startswith'#%'.REG_MULTI_SZ:Startswith'[~]'andendswith'[~]'.REG_SZ:Noprefix,butifthefirstcharacteroftheregistryvalueis'#',theinstallerescapesthecharacterbyprefixingitwithanother'#'.

Yes

Win64 YesNoType Instructsthesearchtolookinthe

Page 347: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

64-bitregistrywhenthevalueis'yes'.Defaultis'no'andsearchlooksinthe32-bitregistry.

SeeAlsoWixSchema,ComponentSearch,IniFileSearch

Version2.0.4820.0

Page 348: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RegistrySearchRefElement

Description

ReferencesanexistingRegistrySearchelement.

WindowsInstallerreferencesNone

ParentsProperty

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String SpecifytheIdoftheRegistrySearchto

reference.Yes

SeeAlsoWixSchema,RegistrySearch

Version2.0.4820.0

Page 349: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RegistryValueElement

Description

UseseveraloftheseelementstospecifyeachregistryvalueinamultiStringregistryvalue.ThiselementcannotbeusediftheValueattributeisspecifiedunlesstheTypeattributeissetto'multiString'.ThevaluesshouldgointhetextareaoftheRegistryValueelement.

WindowsInstallerreferencesRegistryTable

ParentsRegistry

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

AttributesNone

SeeAlsoWixSchema

Version2.0.4820.0

Page 350: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RemoveDuplicateFilesElement

Description

DeletesfilesinstalledbytheDuplicateFilesaction.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 351: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RemoveEnvironmentStringsElement

Description

Modifiesthevaluesofenvironmentvariables.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 352: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RemoveExistingProductsElement

Description

GoesthroughtheproductcodeslistedintheActionPropertycolumnoftheUpgradetableandremovestheproductsinsequence.Specialactionsdon'thaveabuilt-insequencenumberandthusmustappearrelativetoanotheraction.ThesuggestedwaytodothisisbyusingtheBeforeorAfterattribute.InstallExecuteandInstallExecuteAgaincanoptionallyappearanywherebetweenInstallInitializeandInstallFinalize.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Textnodespecifiestheconditionoftheaction.

ChildrenNone

Attributes

Name Type Description RequiredAfter String Thenameofanactionthatthis

actionshouldcomeafter.

Before String Thenameofanactionthatthisactionshouldcomebefore.

Sequence Integer Avalueusedtoindicatethepositionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Page 353: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Version2.0.4820.0

Page 354: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RemoveFileElement

Description

Removeafile(s)iftheparentcomponentisselectedforinstallationorremoval.MultiplefilescanberemovedbyspecifyingawildcardforthevalueoftheNameattribute.Bydefault,thesourcedirectoryofthefileisthedirectoryoftheparentcomponent.ThiscanbeoverriddenbyspecifyingtheDirectoryattributewithavaluecorrespondingtotheIdofthesourcedirectory,orbyspecifyingthePropertyattributewithavaluecorrespondingtoapropertythatwillhaveavaluethatresolvestothefullpathtothesourcedirectory.

WindowsInstallerreferencesRemoveFileTable

ParentsComponent,Include

InnerTextNone

ChildrenNone

Attributes

Name Type DescriptionId String Primarykeyusedtoidentify

thisparticularentry.Directory String Overridesthedirectoryof

theparentcomponentwithaspecificDirectory.ThisDirectorymustexistintheinstallerdatabaseatcreationtime.ThisattributecannotbespecifiedinconjunctionwiththePropertyattribute.

Page 355: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

LongNameWildCardLongFileNameType Ifthenameofthefile(s)toberemovedneedtobelongerthan8.3format,thenthisattributeshouldbespecifiedwiththelongfilename(inadditiontotheNameattributewhichisalwaysrequiredfortargetsystemsthatmightnotsupportlongfilenames).Allofthefilesthatmatchthewildcardwillberemovedfromthespecifieddirectory.Thevalueisafilenamethatmayalsocontainthewildcardcharacters"?"foranysinglecharacteror"*"forzeroormoreoccurrencesofanycharacter.

Name WildCardShortFileNameType Thisvalueshouldbesettothelocalizablenameofthefile(s)toberemoved.Allofthefilesthatmatchthewildcardwillberemovedfromthespecifieddirectory.Thevalueisafilenamethatmayalsocontainthewildcardcharacters"?"foranysinglecharacteror"*"forzeroormoreoccurrencesofanycharacter.

On Enumeration Thisvaluedeterminesthetimeatwhichthefile(s)mayberemoved.Thisattribute'svalueshouldbeoneofthefollowing:install

Removesthefileonly

Page 356: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

whentheparentcomponentisbeinginstalled(msiInstallStateLocalormsiInstallStateSource).

uninstallRemovesthefileonlywhentheparentcomponentisbeingremoved(msiInstallStateAbsent).

bothRemovesthefilewhentheparentcomponentisbeinginstalledorremoved.

Property String Overridesthedirectoryoftheparentcomponentwiththevalueofthespecifiedproperty.Thepropertyshouldhaveavaluethatresolvestothefullpathofthesourcedirectory.Thepropertydoesnothavetoexistintheinstallerdatabaseatcreationtime;itcouldbecreatedatinstallationtimebyacustomaction,onthecommandline,etc.ThisattributecannotbespecifiedinconjunctionwiththeDirectoryattribute.

SeeAlsoWixSchema,CopyFile

Version2.0.4820.0

Page 357: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RemoveFilesElement

Description

RemovesfilespreviouslyinstalledbytheInstallFilesaction.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 358: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RemoveFolderElement

Description

Removeanemptyfolderiftheparentcomponentisselectedforinstallationorremoval.Bydefault,thefolderisthedirectoryoftheparentcomponent.ThiscanbeoverriddenbyspecifyingtheDirectoryattributewithavaluecorrespondingtotheIdofthedirectory,orbyspecifyingthePropertyattributewithavaluecorrespondingtoapropertythatwillhaveavaluethatresolvestothefullpathofthefolder.

WindowsInstallerreferencesRemoveFileTable

ParentsComponent,Include

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String Primarykeyusedtoidentifythis

particularentry.Yes

Directory String OverridesthedirectoryoftheparentcomponentwithaspecificDirectory.ThisDirectorymustexistintheinstallerdatabaseatcreationtime.ThisattributecannotbespecifiedinconjunctionwiththePropertyattribute.

On Enumeration Thisvaluedeterminesthetimeatwhichthefoldermayberemoved.

Yes

Page 359: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Thisattribute'svalueshouldbeoneofthefollowing:install

Removesthefolderonlywhentheparentcomponentisbeinginstalled(msiInstallStateLocalormsiInstallStateSource).

uninstallRemovesthefolderonlywhentheparentcomponentisbeingremoved(msiInstallStateAbsent).

bothRemovesthefolderwhentheparentcomponentisbeinginstalledorremoved.

Property String Overridesthedirectoryoftheparentcomponentwiththevalueofthespecifiedproperty.Thepropertyshouldhaveavaluethatresolvestothefullpathofthesourcedirectory.Thepropertydoesnothavetoexistintheinstallerdatabaseatcreationtime;itcouldbecreatedatinstallationtimebyacustomaction,onthecommandline,etc.ThisattributecannotbespecifiedinconjunctionwiththeDirectoryattribute.

SeeAlsoWixSchema,CreateFolder

Version2.0.4820.0

Page 360: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RemoveFoldersElement

Description

Removesanyfolderslinkedtocomponentssettoberemovedorrunfromsource.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 361: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RemoveIniValuesElement

Description

Removes.inifileinformationspecifiedforremovalintheRemoveIniFiletableifthecomponentissettobeinstalledlocallyorrunfromsource.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 362: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RemoveODBCElement

Description

Removesthedatasources,translators,anddriverslistedforremovalduringtheinstallation.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 363: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RemoveRegistryValuesElement

Description

Removesaregistryvaluethathasbeenauthoredintotheregistrytableiftheassociatedcomponentwasinstalledlocallyorasrunfromsource,andisnowsettobeuninstalled.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 364: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RemoveShortcutsElement

Description

Managestheremovalofanadvertisedshortcutwhosefeatureisselectedforuninstallationoranonadvertisedshortcutwhosecomponentisselectedforuninstallation.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 365: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ReplacePatchElement

Description

Apatchthatisdeprecatedbythispatch.

WindowsInstallerreferencesNone

ParentsPatchCreation

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId Uuid PatchGUIDtobeunregisteredifit

existsonthemachinetargetedbythispatch.

Yes

SeeAlsoWixSchema

Version2.0.4820.0

Page 366: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ReserveCostElement

Description

Diskcosttoreserveinafolderforrunninglocallyand/orfromsource

WindowsInstallerreferencesReserveCostTable

ParentsComponent,Include

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String YesDirectory String DefaultstoDirectoryofparent

Component.

RunFromSource Integer Thenumberofbytesofdiskspacetoreserveifthecomponentisinstalledtorunfromsource.

Yes

RunLocal Integer Thenumberofbytesofdiskspacetoreserveifthecomponentisinstalledtorunlocally.

Yes

SeeAlsoWixSchema

Version2.0.4820.0

Page 367: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ResolveSourceElement

Description

DeterminesthelocationofthesourceandsetstheSourceDirpropertyifthesourcehasnotbeenresolvedyet.Specialactionsdon'thaveabuilt-insequencenumberandthusmustappearrelativetoanotheraction.ThesuggestedwaytodothisisbyusingtheBeforeorAfterattribute.InstallExecuteandInstallExecuteAgaincanoptionallyappearanywherebetweenInstallInitializeandInstallFinalize.

WindowsInstallerreferencesNone

ParentsAdminExecuteSequence,InstallExecuteSequence,InstallUISequence

InnerText(xs:string)Textnodespecifiestheconditionoftheaction.

ChildrenNone

Attributes

Name Type Description RequiredAfter String Thenameofanactionthatthis

actionshouldcomeafter.

Before String Thenameofanactionthatthisactionshouldcomebefore.

Sequence Integer Avalueusedtoindicatethepositionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Page 368: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Version2.0.4820.0

Page 369: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RMCCPSearchElement

Description

Usesfilesignaturestovalidatethatqualifyingproductsareinstalledonasystembeforeanupgradeinstallationisperformed.TheRMCCPSearchactionshouldbeauthoredintotheInstallUISequencetableandInstallExecuteSequencetable.TheinstallerpreventsRMCCPSearchfromrunningintheInstallExecuteSequencesequenceiftheactionhasalreadyruninInstallUISequencesequence.TheRMCCPSearchactionrequirestheCCP_DRIVEpropertytobesettotherootpathontheremovablevolumethathastheinstallationforanyofthequalifyingproducts.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence,InstallUISequence

InnerText(xs:string)Textnodespecifiestheconditionoftheaction.

ChildrenNone

Attributes

Name Type Description RequiredAfter String Thenameofanactionthatthis

actionshouldcomeafter.

Before String Thenameofanactionthatthisactionshouldcomebefore.

Sequence Integer Avalueusedtoindicatethepositionofthisactioninasequence.

Page 370: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema,CCPSearch,ComplianceCheck

Version2.0.4820.0

Page 371: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RowElement

Description

RowdataforaCustomTable

WindowsInstallerreferencesNone

ParentsCustomTable

InnerTextNone

ChildrenSequence(min:1,max:1)

1. Data(min:1,max:unbounded)

AttributesNone

SeeAlsoWixSchema

Version2.0.4820.0

Page 372: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ScheduleRebootElement

Description

Promptstheusertorestartthesystemattheendofinstallation.Specialactionsdon'thaveabuilt-insequencenumberandthusmustappearrelativetoanotheraction.ThesuggestedwaytodothisisbyusingtheBeforeorAfterattribute.InstallExecuteandInstallExecuteAgaincanoptionallyappearanywherebetweenInstallInitializeandInstallFinalize.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence,InstallUISequence

InnerText(xs:string)Textnodespecifiestheconditionoftheaction.

ChildrenNone

Attributes

Name Type Description RequiredAfter String Thenameofanactionthatthis

actionshouldcomeafter.

Before String Thenameofanactionthatthisactionshouldcomebefore.

Sequence Integer Avalueusedtoindicatethepositionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 373: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

SelfRegModulesElement

Description

ProcessesallmoduleslistedintheSelfRegtableandregistersallinstalledmoduleswiththesystem.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 374: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

SelfUnregModulesElement

Description

UnregistersallmoduleslistedintheSelfRegtablethatarescheduledtobeuninstalled.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 375: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ServiceArgumentElement

Description

ArgumentusedinServiceControlparent

WindowsInstallerreferencesServiceControlTable

ParentsServiceControl

SeeAlsoWixSchema

Version2.0.4820.0

Page 376: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ServiceConfigElement

Description

Serviceconfigurationinformationforfailureactions.

WindowsInstallerreferencesNone

ParentsComponent,Include,ServiceInstall

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredFirstFailureActionType Enumeration Actiontotake

onthefirstfailureoftheservice.Thisattribute'svalueshouldbeoneofthefollowing:none

reboot

restart

runCommand

Yes

ProgramCommandLine String Ifanyofthethree*ActionTypeattributesis"runCommand",

Page 377: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

thisspecifiesthecommandtorunwhendoingso.

RebootMessage String Ifanyofthethree*ActionTypeattributesis"reboot",thisspecifiesthemessagetobroadcasttoserverusersbeforedoingso.

ResetPeriodInDays Integer Numberofdaysafterwhichtoresetthefailurecounttozeroiftherearenofailures.

RestartServiceDelayInSeconds Integer Ifanyofthethree*ActionTypeattributesis"restart",thisspecifiesthenumberofsecondstowaitbeforedoingso.

SecondFailureActionType Enumeration Actiontotakeonthesecondfailureoftheservice.Thisattribute'svalueshouldbeone

Yes

Page 378: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ofthefollowing:none

reboot

restart

runCommand

ServiceName String RequiredifnotunderaServiceInstallelement.

ThirdFailureActionType Enumeration Actiontotakeonthethirdfailureoftheservice.Thisattribute'svalueshouldbeoneofthefollowing:none

reboot

restart

runCommand

Yes

RemarksNestingaServiceConfigelementunderaServiceInstallelementwillresultintheservicebeinginstalledtobeconfigured.

NestingaServiceConfigelementunderacomponentelementwillresultinanalreadyinstalledservicetobeconfigured.IftheservicedoesnotexistpriortotheinstalloftheMSIpackage,theinstallwillfail.

SeeAlsoWixSchema

Version2.0.4820.0

Page 379: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ServiceControlElement

Description

Starts,stops,andremovesservicesforparentComponent.ThiselementisusedtocontrolthestateofaserviceinstalledbytheMSIorMSMfilebyusingthestart,stopandremoveattributes.Forexample,Start='install'Stop='both'Remove='uninstall'wouldmean:starttheserviceoninstall,removetheservicewhentheproductisuninstalled,andstoptheservicebothoninstallanduninstall.

WindowsInstallerreferencesServiceControlTable

ParentsComponent,Include

InnerTextNone

ChildrenSequence(min:1,max:1)

1. ServiceArgument(min:0,max:unbounded):Orderedlistofargumentsusedwhenmodifyingservices.

Attributes

Name Type Description RequiredId String YesName String Nameoftheservice. YesRemove Enumeration Specifieswhethertheservice

shouldberemovedoninstall,uninstallorboth.Thisattribute'svalueshouldbeoneofthefollowing:install

uninstall

Page 380: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

both

Start Enumeration Specifieswhethertheserviceshouldbestartedoninstall,uninstallorboth.Thisattribute'svalueshouldbeoneofthefollowing:install

uninstall

both

Stop Enumeration Specifieswhethertheserviceshouldbestoppedoninstall,uninstallorboth.Thisattribute'svalueshouldbeoneofthefollowing:install

uninstall

both

Wait YesNoType Specifieswhetherornottowaitfortheservicetocompletebeforecontinuing.

SeeAlsoWixSchema

Version2.0.4820.0

Page 381: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ServiceDependencyElement

Description

Serviceorgroupofservicesthatmuststartbeforetheparentservice.

WindowsInstallerreferencesServiceInstallTable

ParentsServiceInstall

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String Thevalueofthisattributeshouldbe

oneofthefollowing:1. Thename(notthedisplay

name)ofapreviouslyinstalledservice.

2. AforeignkeyreferringtoanotherServiceInstall/@Id.

3. Agroupofservices(inwhichcasetheGroupattributeshouldbesetto'yes').

Yes

Group YesNoType Setto'yes'toindicatethatthevalueintheIdattributeisthenameofagroupofservices.

SeeAlso

Page 382: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WixSchemaVersion2.0.4820.0

Page 383: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ServiceInstallElement

Description

AddsandremovesservicesforparentComponent.

WindowsInstallerreferencesServiceInstallTable

ParentsComponent,Include

InnerTextNone

ChildrenSequence(min:1,max:1)

1. Permission(min:0,max:unbounded):Permissionsforthisservice.

2. ServiceConfig(min:0,max:1):ServiceConfig:failureactionsforservice

3. ServiceDependency(min:0,max:unbounded):orderedlistofdependencieswheninstallingservices

Attributes

Name Type Description RequiredId String Uniqueidentifierforthis

service.Yes

Account String Theacountunderwhichtostarttheservice.ValidonlywhenServiceTypeisownProcess.

Arguments String Containsanycommandlineargumentsorpropertiesrequiredtoruntheservice.

Description String Setsthedescriptionofthe

Page 384: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

service.DisplayName String Thiscolumnisthe

localizablestringthatuserinterfaceprogramsusetoidentifytheservice.

EraseDescription YesNoType Determineswhethertheexistingservicedescriptionwillbeignored.If'yes',theservicedescriptionwillbenull,eveniftheDescriptionattributeisset.

ErrorControl Enumeration Determineswhatactionshouldbetakenonanerror.Thisattribute'svalueshouldbeoneofthefollowing:ignore

normal

critical

Yes

Interactive YesNoType Whetherornottheserviceinteractswiththedesktop.

LoadOrderGroup String Theloadorderinggroupthatthisserviceshouldbeapartof.

Name String Thiscolumnisthestringthatgivestheservicenametoinstall.

Yes

Password String Thepasswordfortheaccount.Validonlywhentheaccounthasapassword.

Start Enumeration Determineswhentheserviceshouldbestarted.TheWindowsInstaller

Yes

Page 385: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

doesnotsupportbootorsystem.Thisattribute'svalueshouldbeoneofthefollowing:auto

demand

disabled

boot

system

Type Enumeration TheWindowsInstallerdoesnotcurrentlysupportkernelDriverorsystemDriverThisattribute'svalueshouldbeoneofthefollowing:ownProcess

shareProcess

kernelDriver

systemDriver

Yes

Vital YesNoType Theoverallinstallshouldfailifthisservicefailstoinstall.

RemarksTheserviceexecutableinstalledwillpointtotheKeyPathfortheComponent.Therefore,youmustensurethatthecorrectexecutableiseitherthefirstchildFileelementunderthisComponentorexplicitlymarktheappropriateFileelementasKeyPath='yes'.

SeeAlsoWixSchema

Version2.0.4820.0

Page 386: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

SetODBCFoldersElement

Description

ChecksforexistingODBCdriversandsetsthetargetdirectoryforeachnewdrivertothelocationofanexistingdriver.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 387: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

SFPCatalogElement

Description

Addsasystemfileprotectionupdatecatalogfile

WindowsInstallerreferencesSFPCatalogTable

ParentsFragment,Include,Module,Product,SFPCatalog

InnerText(xs:string)Elementvaluecanbehex-encodedhashvalue

ChildrenChoiceofelements(min:0,max:unbounded)SFPCatalog(min:0,max:unbounded)SFPFile(min:0,max:unbounded):PrimaryKeytoFileTable.

Attributes

Name Type Description RequiredDependency String Usedtodefinedependencyoutside

ofthepackage.

Name String Filenameforcatalogfilewheninstalled.

SourceFile String Pathtocatalogfileinbinary.

SeeAlsoWixSchema

Version2.0.4820.0

Page 388: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

SFPFileElement

Description

Providesamany-to-manymappingfromtheSFPCatalogtabletotheFiletable

WindowsInstallerreferencesFileSFPCatalogTable

ParentsSFPCatalog

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String PrimaryKeytoFileTable. Yes

SeeAlsoWixSchema

Version2.0.4820.0

Page 389: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ShortcutElement

Description

Shortcut,defaulttargetisparentFile,CreateFolder,orComponent'sDirectory

WindowsInstallerreferencesShortcutTable

ParentsComponent,CreateFolder,File,Include

InnerTextNone

ChildrenSequence(min:1,max:1)

1. Icon(min:0,max:1)

Attributes

Name Type DescriptionId String Uniqueidentifierforthe

shortcut.Thisvaluewillserveastheprimarykeyfortherow.

Advertise YesNoType Specifiesiftheshortcutshouldbeadvertisedornot.Notethatadvertisedshortcutsalwayspointataparticularapplication,identifiedbyaProductCode,andshouldnotbesharedbetweenapplications.Advertisedshortcuts

Page 390: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

onlyworkforthemostrecentlyinstalledapplication,andareremovedwhenthatapplicationisremoved.

Arguments String Thecommand-lineargumentsfortheshortcut.NotethattheresolutionofpropertiesintheArgumentsfieldislimited.Apropertyformattedas[Property]inthisfieldcanonlyberesolvedifthepropertyalreadyhastheintendedvaluewhenthecomponentowningtheshortcutisinstalled.Forexample,fortheargument"[#MyDoc.doc]"toresolvetothecorrectvalue,thesameprocessmustbeinstallingthefileMyDoc.docandthecomponentthatownstheshortcut.

Description String Thelocalizabledescriptionfortheshortcut.

DescriptionResourceDll String TheFormattedstringprovidingthefullpathtothelanguageneutralfilecontainingtheMUIManifest.Generallyauthoredusing[#filekey]form.When

Page 391: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

thisattributeisspecified,theDescriptionResourceIdattributemustalsobeprovided.

ThisattributeisonlyusedonWindowsVistaandabove.IfthisattributeisnotspecifiedandtheinstallisrunningonVistaandabove,thevalueintheNameattributeisused.IfthisattributeisprovidedandtheinstallisrunningonVistaandabove,thevalueintheNameattributeisignored.

DescriptionResourceId Integer Thedescriptionnameindexfortheshortcut.Thismustbeanon-negativenumber.Whenthisattributeisspecified,theDescriptionResourceDllattributemustalsobepopulated.

ThisattributeisonlyusedonWindowsVistaandabove.IfthisattributeisnotspecifiedandtheinstallisrunningonVistaandabove,thevalueintheNameattributeisused.Ifthisattributeis

Page 392: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

populatedandtheinstallisrunningonVistaandabove,thevalueintheNameattributeisignored.

Directory String IdentifierreferencetoDirectoryelementwhereshortcutistobecreated.

DisplayResourceDll String TheFormattedstringprovidingthefullpathtothelanguageneutralfilecontainingtheMUIManifest.Generallyauthoredusing[#filekey]form.Whenthisattributeisspecified,theDisplayResourceIdattributemustalsobeprovided.

ThisattributeisonlyusedonWindowsVistaandabove.IfthisattributeisnotpopulatedandtheinstallisrunningonVistaandabove,thevalueintheNameattributeisused.IfthisattributeispopulatedandtheinstallisrunningonVistaandabove,thevalueintheNameattributeisignored.

Page 393: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

DisplayResourceId Integer Thedisplaynameindexfortheshortcut.Thismustbeanon-negativenumber.Whenthisattributeisspecified,theDisplayResourceDllattributemustalsobeproviced.

ThisattributeisonlyusedonWindowsVistaandabove.IfthisattributeisnotspecifiedandtheinstallisrunningonVistaandabove,thevalueintheNameattributeisused.IfthisattributeisspecifiedandtheinstallisrunningonVistaandabove,thevalueintheNameattributeisignored.

Hotkey Integer Thehotkeyfortheshortcut.Thelow-orderbytecontainsthevirtual-keycodeforthekey,andthehigh-orderbytecontainsmodifierflags.Thismustbeanon-negativenumber.Authorsofinstallationpackagesaregenerallyrecommendnottosetthisoption,becausethiscanaddduplicatehotkeystoausers

Page 394: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

desktop.Inaddition,thepracticeofassigninghotkeystoshortcutscanbeproblematicforusersusinghotkeysforaccessibility.

Icon String IdentifierreferencetoIconelement.TheIconidentifiershouldhavethesameextensionasthefilethatitpointsat.Forexample,ashortcuttoanexecutable(e.g."my.exe")shouldreferenceanIconwithidentifierlike"MyIcon.exe"

IconIndex Integer IdentifierreferencetoIconelement.

LongName LongFileNameType Localizablelongnameforshortcutifanamelongerthan8.3formatisdesired.

Name ShortFileNameType Localizableshortnamefortheshortcut.Mustbean8.3filename.

Show Enumeration Thisattribute'svalueshouldbeoneofthefollowing:normal

minimized

maximized

Target String Thetargetforanon-Advertisedshortcut.

Page 395: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ThisattributeisnotvalidforAdvertisedshortcuts.ThevaluewillbedefaultedtotheparentFilewhennestedunderaFileelement.Ifyouspecifythisvaluethenuseaformattedfileidentifier,forexample:[!TargetFileId].

WorkingDirectory String Directoryidentifier(orPropertyidentifierthatresolvestoadirectory)thatresolvestothepathoftheworkingdirectoryfortheshortcut.

SeeAlsoWixSchema

Version2.0.4820.0

Page 396: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ShowElement

Description

None

WindowsInstallerreferencesNone

ParentsAdminUISequence,InstallUISequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredAfter String Before String Dialog String YesOnExit Enumeration mutuallyexclusivewithBefore,

After,andSequenceattributesThisattribute'svalueshouldbeoneofthefollowing:success

cancel

error

suspend

Sequence Integer

SeeAlsoWixSchema

Page 397: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Version2.0.4820.0

Page 398: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

SqlDatabaseElement

Description

SQLDatabase

WindowsInstallerreferencesNone

ParentsComponent,Fragment,Include,Module,Product

InnerTextNone

ChildrenChoiceofelements(min:0,max:unbounded)SqlFileSpec(min:0,max:unbounded)SqlLogFileSpec(min:0,max:unbounded)SqlScript(min:0,max:unbounded)SqlString(min:0,max:unbounded)

Attributes

Name Type Description RequiredId String YesConfirmOverwrite YesNoType ContinueOnError YesNoType CreateOnInstall YesNoType CreateOnReinstall YesNoType Specifieswhetherto

createthedatabasewhentheassociatedcomponentisreinstalled.SettingCreateOnInstalltoyesdoesnotimplyCreateOnReinstallissettoyes.CreateOnReinstall

Page 399: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

mustbesetinadditiontoCreateOnInstallforittobecreatedduringbothinstallandreinstall.

CreateOnUninstall YesNoType Database String Thenameofthedatabase.

IfthenamedoesnotfollowtheSQLserver"RulesforRegularIdentifiers"(seeMSDN)itmustbesurroundedbyquotesorsquarebrackets.Sincethisvaluecanbeformattedtext,thismeansthatifyouchoosetousesquarebracketsyoumustusetheMSImethodforescapingsquarebrackets,forexample:[\[]blah[\]].

Yes

DropOnInstall YesNoType DropOnReinstall YesNoType Specifieswhethertodrop

thedatabasewhentheassociatedcomponentisreinstalled.SettingDropOnInstalltoyesdoesnotimplyDropOnReinstallissettoyes.DropOnReinstallmustbesetinadditiontoDropOnInstallforittobedroppedduringbothinstallandreinstall.

DropOnUninstall YesNoType Instance String Server String YesUser String

Page 400: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RemarksNestingSqlDatabaseunderaComponentelementwillresultinaSqlDatabasebeinginstalledtothemachineasthepackageisinstalled.

NestingSqlDatabaseunderProduct,Fragment,orModuleresultsinadatabase"locator"recordbeingcreatedintheSqlDatabasetable.ThismeansthatthedatabaseitselfisneitherinstallednoruninstalledbytheMSIpackage.ItdoesmakethedatabaseavailableforreferencingfromaSqlStringorSqlScriptrecord.ThisallowsMSItoinstallSqlScriptsorSqlStringstoalreadyexistingdatabasesonthemachine.Theinstallwillfailifthedatabasedoesnotexistinthesecases.

TheUserattributereferencescridentialsspecifiedinaUserelement.IfauserisnotspecifiedthenWindowsAuthenticationwillbeusedbydefaultusingthecridentialsoftheuserperformingtheinstalltoexecutesqlstrings,etc.

SeeAlsoWixSchema,User

Version2.0.4820.0

Page 401: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

SqlFileSpecElement

Description

FilespecificationforaSqldatabase.

WindowsInstallerreferencesNone

ParentsSqlDatabase

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String IDofthefilespecification. YesFilename String Specifiestheoperating-systemfile

nameforthedatabasefile.Yes

GrowthSize String Specifiesthegrowthincrementofthedatabasefile.TheGrowthSizesettingforafilecannotexceedtheMaxSizesetting.

MaxSize String Specifiesthemaximumsizetowhichthedatabasefilecangrow.

Name String Specifiesthelogicalnameforthedatabasefile.

Size String Specifiesthesizeofthedatabasefile.WhenaSizeisnotsuppliedforadatabasefile,SQLServerusesthesizeoftheprimaryfileinthemodeldatabase.

Page 402: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

SeeAlsoWixSchema

Version2.0.4820.0

Page 403: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

SqlLogFileSpecElement

Description

FilespecificationforaSqldatabase.

WindowsInstallerreferencesNone

ParentsSqlDatabase

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredFilename String Specifiestheoperating-systemfile

nameforthelogfile.

GrowthSize String Specifiesthegrowthincrementofthelogfile.TheGrowthSizesettingforafilecannotexceedtheMaxSizesetting.

Id String IDofthelogfilespecification. MaxSize String Specifiesthemaximumsizeto

whichthelogfilecangrow.

Name String Specifiesthelogicalnameforthelogfile.

Size String Specifiesthesizeofthelogfile.WhenaSizeparameterisnotspecifiedforalogfile,SQLServermakesthefile1MB.

SeeAlso

Page 404: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WixSchemaVersion2.0.4820.0

Page 405: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

SqlScriptElement

Description

SQLScript

WindowsInstallerreferencesNone

ParentsComponent,Include,SqlDatabase

InnerTextNone

ChildrenSequence(min:1,max:1)

1. Binary(min:0,max:1)

Attributes

Name Type Description RequiredId String YesBinaryKey String ReferencetoBinary

streamthatcontainstheSQLscripttoexecute.OnlyvalidifnoBinarychildelement.

ContinueOnError YesNoType Continueexecutingscriptsevenifthisonefails.

ExecuteOnInstall YesNoType Specifiestoexecutethescriptwhentheassociatedcomponentisinstalled.

ExecuteOnReinstall YesNoType Specifieswhethertoexecutethescriptwhentheassociated

Page 406: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

componentisreinstalled.SettingExecuteOnInstalltoyesdoesnotimplyExecuteOnReinstallissettoyes.ExecuteOnReinstallmustbesetinadditiontoExecuteOnInstallforittobeexecutedduringbothinstallandreinstall.

ExecuteOnReInstall YesNoType Thisattributehasbeendeprecated;pleaseusetheExecuteOnReinstallattributeinstead.

ExecuteOnUninstall YesNoType Specifiestoexecutethescriptwhentheassociatedcomponentisuninstalled.

RollbackOnInstall YesNoType Specifieswhethertoexecutethescriptonrollbackifanattemptismadetoinstalltheassociatedcomponent.

RollbackOnReinstall YesNoType Specifieswhethertoexecutethescriptonrollbackifanattemptismadetoreinstalltheassociatedcomponent.

RollbackOnUninstall YesNoType Specifieswhethertoexecutethescriptonrollbackifanattemptismadetouninstalltheassociatedcomponent.

Sequence Integer SpecifestheordertoruntheSQLScripts.Itisrecommendedthatrollbackscriptsbe

Page 407: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

scheduledbeforetheircomplementaryexecutionscript.ThisorderisalsorelativeacrosstheSqlStringelement.

SqlDb String RequiredwhennotchildofSqlDatabase.

User String

SeeAlsoWixSchema

Version2.0.4820.0

Page 408: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

SqlStringElement

Description

SQLString

WindowsInstallerreferencesNone

ParentsComponent,Include,SqlDatabase

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String YesContinueOnError YesNoType Continueexecuting

stringsevenifthisonefails.

ExecuteOnInstall YesNoType Specifiestoexecutethestringwhentheassociatedcomponentisinstalled.

ExecuteOnReinstall YesNoType Specifieswhethertoexecutethestringwhentheassociatedcomponentisreinstalled.SettingExecuteOnInstalltoyesdoesnotimplyExecuteOnReinstallissettoyes.ExecuteOnReinstall

Page 409: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

mustbesetinadditiontoExecuteOnInstallforittobeexecutedduringbothinstallandreinstall.

ExecuteOnReInstall YesNoType Thisattributehasbeendeprecated;pleaseusetheExecuteOnReinstallattributeinstead.

ExecuteOnUninstall YesNoType Specifiestoexecutethestringwhentheassociatedcomponentisuninstalled.

RollbackOnInstall YesNoType Specifieswhethertoexecutethestringonrollbackifanattemptismadetoinstalltheassociatedcomponent.

RollbackOnReinstall YesNoType Specifieswhethertoexecutethestringonrollbackifanattemptismadetoreinstalltheassociatedcomponent.

RollbackOnUninstall YesNoType Specifieswhethertoexecutethestringonrollbackifanattemptismadetouninstalltheassociatedcomponent.

Sequence Integer SpecifestheordertoruntheSQLStrings.Itisrecommendedthatrollbackstringsbescheduledbeforetheircomplementaryexecutionstring.ThisorderisalsorelativeacrosstheSqlScriptelement.

Page 410: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

SQL String YesSqlDb String User String

SeeAlsoWixSchema

Version2.0.4820.0

Page 411: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

StartServicesElement

Description

Startssystemservices.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 412: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

StopServicesElement

Description

Stopssystemservices.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 413: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

SubscribeElement

Description

SetsattributesforeventsintheEventMappingtable

WindowsInstallerreferencesEventMappingTable

ParentsControl

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredAttribute String ifnotpresentcanonlyhandleenable,

disable,hide,unhideevents

Event String mustbeoneofthestandardcontrolevents'

SeeAlsoWixSchema

Version2.0.4820.0

Page 414: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

SubstitutionElement

Description

Specifiestheconfigurablefieldsofamoduledatabaseandprovidesatemplatefortheconfigurationofeachfield.

WindowsInstallerreferencesNone

ParentsModule

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredColumn String Specifiesthetargetcolumnintherow

namedintheRowcolumn.Yes

Row String SpecifiestheprimarykeysofthetargetrowinthetablenamedintheTablecolumn.Ifmultiplekeys,separatedbysemicolons.

Yes

Table String Specifiesthenameofthetablebeingmodifiedinthemoduledatabase.

Yes

Value String ProvidesaformattingtemplateforthedatabeingsubstitutedintothetargetfieldspecifiedbyTable,Row,andColumn.

SeeAlsoWixSchema

Version2.0.4820.0

Page 415: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

SymbolPathElement

Description

Apathtosymbols.

WindowsInstallerreferencesNone

ParentsExternalFile,TargetFile,TargetImage,UpgradeFile,UpgradeImage

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredPath String Thepath. Yes

SeeAlsoWixSchema

Version2.0.4820.0

Page 416: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

TargetFileElement

Description

Informationaboutspecificfilesinatargetimage.

WindowsInstallerreferencesNone

ParentsTargetImage

InnerTextNone

ChildrenSequence(min:1,max:1)

1. SymbolPath(min:0,max:1)2. Choiceofelements(min:0,max:unbounded)

IgnoreRange(min:0,max:unbounded)ProtectRange(min:0,max:unbounded)

Attributes

Name Type Description RequiredId String ForeignkeyintotheFiletable. Yes

SeeAlsoWixSchema

Version2.0.4820.0

Page 417: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

TargetImageElement

Description

Containsinformationaboutthetargetimagesoftheproduct.

WindowsInstallerreferencesNone

ParentsUpgradeImage

InnerTextNone

ChildrenChoiceofelements(min:0,max:unbounded)SymbolPath(min:0,max:unbounded)TargetFile(min:0,max:unbounded)

Attributes

Name Type Description RequiredId String Identifierforthetarget

image.Yes

IgnoreMissingFiles YesNoType Filesmissingfromthetargetimageareignoredbytheinstaller.

Order Int Relativeorderofthetargetimage.

Yes

SourceFile String Fullpathtothelocationofthemsifileforthetargetimage.

src String Thisattributehasbeendeprecated;pleaseusetheSourceFileattributeinstead.

Page 418: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Validation String Productcheckingtoavoidapplyingirrelevanttransforms.

SeeAlsoWixSchema

Version2.0.4820.0

Page 419: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

TargetProductCodeElement

Description

Aproductcodeforaproductthatmayreceivethispatch(or'*'forallproducts).

WindowsInstallerreferencesNone

ParentsPatchCreation

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String Theproductcodeforaproductthat

canreceivethispatch(or'*'forallproducts).

Yes

SeeAlsoWixSchema

Version2.0.4820.0

Page 420: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

TextElement

Description

AlternativetoTextattributeswhenCDATAisneededtoescapeXMLdelimiters.

WindowsInstallerreferencesNone

ParentsControl,ListItem

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSourceFile String Instructsthetexttobeimportedfrom

afileinsteadoftheelementvalueduringthebindingprocess.

src String Thisattributehasbeendeprecated;pleaseusetheSourceFileattributeinstead.

SeeAlsoWixSchema

Version2.0.4820.0

Page 421: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

TextStyleElement

Description

None

WindowsInstallerreferencesTextStyleTable

ParentsUI

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String YesBlue Integer 0to255 Bold YesNoType FaceName String YesGreen Integer 0to255 Italic YesNoType Red Integer 0to255 Size Integer YesStrike YesNoType Underline YesNoType

SeeAlsoWixSchema

Version2.0.4820.0

Page 422: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

TypeLibElement

Description

Registeratypelibrary(TypeLib).Pleasenotethatinordertoproperlyusethisnon-advertised,youwillneedusethiselementwithAdvertise='no'andalsoauthortheappropriatechildInterfaceelementsbyextractingthemfromthetypelibraryitself.

WindowsInstallerreferencesTypeLibTable,RegistryTable

ParentsComponent,File,Include

InnerTextNone

ChildrenChoiceofelements(min:0,max:unbounded)AppId(min:0,max:unbounded)Class(min:0,max:unbounded)Interface(min:0,max:unbounded)

Attributes

Name Type Description RequiredId Uuid TheGUIDthatidentifesthe

typelibrary.Yes

Advertise YesNoType Valueof'yes'willcreatearowintheTypeLibtable.Valueof'no'willcreaterowsintheRegistrytable.

Control YesNoType Valueof'yes'meansthetypelibrarydescribescontrols,andshouldnotbedisplayedintypebrowsersintendedfornonvisualobjects.This

Page 423: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

attributecanonlybesetifAdvertise='no'.

Cost Int Thecostassociatedwiththeregistrationofthetypelibraryinbytes.ThisattributecannotbesetifAdvertise='no'.

Description String Thelocalizabledescriptionofthetypelibrary.

HasDiskImage YesNoType Valueof'yes'meansthetypelibraryexistsinapersistedformondisk.ThisattributecanonlybesetifAdvertise='no'.

HelpDirectory String TheidentifieroftheDirectoryelementforthehelpdirectory.

Hidden YesNoType Valueof'yes'meansthetypelibraryshouldnotbedisplayedtousers,althoughitsuseisnotrestricted.Shouldbeusedbycontrols.Hostsshouldcreateanewtypelibrarythatwrapsthecontrolwithextendedproperties.ThisattributecanonlybesetifAdvertise='no'.

Language Integer Thelanguageofthetypelibrary.Thismustbeanon-negativeinteger.

Yes

MajorVersion String Themajorversionofthetypelibrary.Thevalueshouldbeanintegerfrom0-255.

MinorVersion String Theminorversionofthetypelibrary.Thevalueshouldbeanintegerfrom0-255.

ResourceId Integer Theresourceidofatypelib.Thevalueisappendedtotheendofthetypelibpathinthe

Page 424: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

registry.

Restricted YesNoType Valueof'yes'meansthetypelibraryisrestricted,andshouldnotbedisplayedtousers.ThisattributecanonlybesetifAdvertise='no'.

SeeAlsoWixSchema

Version2.0.4820.0

Page 425: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

UIElement

Description

EnclosingelementtocompartmentalizeUIspecifications.

WindowsInstallerreferencesNone

ParentsFragment,Include,Module,Product

InnerTextNone

ChildrenChoiceofelements(min:0,max:unbounded)BillboardAction(min:0,max:unbounded):BillboardtableitemwithchildControlsBinary(min:0,max:unbounded)ComboBox(min:0,max:unbounded):ComboBoxtablewithListItemchildrenDialog(min:0,max:unbounded):Dialogspecification,calledfromSequenceDialogRef(min:0,max:unbounded):ReferencetoaDialogspecification.Error(min:0,max:unbounded):ErrortextassociatedwithinstallerrorListBox(min:0,max:unbounded):ListBoxtablewithListItemchildrenListView(min:0,max:unbounded):ListViewtablewithListItemchildrenProgressText(min:0,max:unbounded):ActionTextentryassociatedwithanactionProperty(min:0,max:unbounded)RadioButtonGroup(min:0,max:unbounded):RadioButtontablewith

Page 426: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RadioButtonchildrenTextStyle(min:0,max:unbounded):TextStyleentryforuseincontroltextUIText(min:0,max:unbounded):valuesforUITextproperty,notinstallerPropertySequence(min:1,max:1)

1. AdminUISequence(min:0,max:1)2. InstallUISequence(min:0,max:1)

Attributes

Name Type Description RequiredId String

SeeAlsoWixSchema,UIRef

Version2.0.4820.0

Page 427: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

UIRefElement

Description

ReferencetoaUIelement.ThiswillforcetheentirereferencedFragment'scontentstobeincludedintheinstallerdatabase.

WindowsInstallerreferencesNone

ParentsFragment,Include,Module,Product

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String Yes

SeeAlsoWixSchema,UI

Version2.0.4820.0

Page 428: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

UITextElement

Description

Textassociatedwithcertaincontrols

WindowsInstallerreferencesUITextTable

ParentsUI

InnerText(xs:string)Elementvalueistext,mayuseCDATAifneededtoescapeXMLdelimiters

ChildrenNone

Attributes

Name Type Description RequiredId String Yes

SeeAlsoWixSchema

Version2.0.4820.0

Page 429: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

UnpublishComponentsElement

Description

ManagestheunadvertisementofcomponentslistedinthePublishComponenttable.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 430: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

UnpublishFeaturesElement

Description

Removesselection-stateandfeature-componentmappinginformationfromtheregistry.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 431: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

UnregisterClassInfoElement

Description

ManagestheremovalofCOMclassinformationfromthesystemregistry.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 432: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

UnregisterComPlusElement

Description

RemovesCOM+applicationsfromtheregistry.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 433: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

UnregisterExtensionInfoElement

Description

Managestheremovalofextension-relatedinformationfromthesystemregistry.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 434: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

UnregisterFontsElement

Description

Removesregistrationinformationaboutinstalledfontsfromthesystem.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 435: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

UnregisterMIMEInfoElement

Description

UnregistersMIME-relatedregistryinformationfromthesystem.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 436: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

UnregisterProgIdInfoElement

Description

ManagestheunregistrationofOLEProgIdinformationwiththesystem.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 437: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

UnregisterTypeLibrariesElement

Description

Unregisterstypelibrariesfromthesystem.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 438: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

UpgradeElement

Description

UpgradeinfoforaparticularUpgradeCode

WindowsInstallerreferencesUpgradeTable

ParentsFragment,Include,Product

InnerTextNone

ChildrenChoiceofelements(min:0,max:unbounded)Property(min:0,max:unbounded):PropertytableentryfortheActionPropertycolumnassociatedwiththisUpgraderowUpgradeVersion(min:0,max:unbounded)

Attributes

Name Type Description RequiredId Uuid Thisvaluespecifiestheupgradecode

fortheproductsthataretobedetectedbytheFindRelatedProductsaction.

Yes

SeeAlsoWixSchema

Version2.0.4820.0

Page 439: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

UpgradeFileElement

Description

Specifiesfilestoeitherignoreortospecifyoptionaldataaboutafile.

WindowsInstallerreferencesNone

ParentsUpgradeImage

InnerTextNone

ChildrenChoiceofelements(min:0,max:unbounded)SymbolPath(min:0,max:unbounded)

Attributes

Name Type Description RequiredAllowIgnoreOnError YesNoType Specifieswhether

patchingthisfileisvital.

File String ForeignkeyintotheFiletable.

Yes

Ignore YesNoType Ifyes,thefileisignoredduringpatching,andthenexttwoattributesareignored.

Yes

WholeFile YesNoType Whetherthewholefileshouldbeinstalled,ratherthancreatingabinarypatch.

SeeAlsoWixSchema

Version2.0.4820.0

Page 440: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

UpgradeImageElement

Description

Containsinformationabouttheupgradedimagesoftheproduct.

WindowsInstallerreferencesNone

ParentsFamily

InnerTextNone

ChildrenSequence(min:1,max:1)

1. TargetImage(min:1,max:unbounded)2. Choiceofelements(min:0,max:unbounded)

SymbolPath(min:0,max:unbounded)UpgradeFile(min:0,max:unbounded)

Attributes

Name Type Description RequiredId String Identifiertoconnecttargetimages

withupgradedimage.Yes

SourceFile String Fullpathtolocationofmsifileforupgradedimage.

SourcePatch String Modifiedcopyoftheupgradedinstallationdatabasethatcontainsadditionalauthoringspecifictopatching.

src String Thisattributehasbeendeprecated;pleaseusetheSourceFileattributeinstead.

srcPatch String Thisattributehasbeen

Page 441: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

deprecated;pleaseusetheSourcePatchattributeinstead.

SeeAlsoWixSchema

Version2.0.4820.0

Page 442: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

UpgradeVersionElement

Description

None

WindowsInstallerreferencesUpgradeTable

ParentsUpgrade

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredExcludeLanguages YesNoType Setto"yes"todetectall

languages,excludingthelanguageslistedintheLanguageattribute.

IgnoreRemoveFailure YesNoType Setto"yes"tocontinueinstallationuponfailuretoremoveaproductorapplication.

IncludeMaximum YesNoType Setto"yes"tomaketherangeofversionsdetectedincludethevaluespecifiedinMaximum.

IncludeMinimum YesNoType Setto"yes"tomaketherangeofversionsdetectedincludethevaluespecifiedin

Page 443: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Minimum.Thisattributeis"yes"bydefault.

Language String SpecifiesthesetoflanguagesdetectedbyFindRelatedProducts.Enteralistofnumericlanguageidentifiers(LANGID)separatedbycommas(,).Leavethisvaluenulltospecifyalllanguages.SetExcludeLanguagesto"yes"inorderdetectalllanguages,excludingthelanguageslistedinthisvalue.

Maximum String SpecifiestheupperboundaryoftherangeofproductversionsdetectedbyFindRelatedProducts.

MigrateFeatures YesNoType Setto"yes"tomigratefeaturestatesfromupgradedproductsbyenablingthelogicintheMigrateFeatureStatesaction.

Minimum String SpecifiesthelowerboundontherangeofproductversionstobedetectedbyFindRelatedProducts.

OnlyDetect YesNoType Setto"yes"todetectproductsandapplicationsbutdonotuninstall.

Property String Whenthe

Page 444: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

FindRelatedProductsactiondetectsarelatedproductinstalledonthesystem,itappendstheproductcodetothepropertyspecifiedinthisfield.ThepropertyspecifiedinthisfieldmustbeapublicpropertyandthepackageauthormustaddthepropertytotheSecureCustomPropertiesProperty.EachUpgradeVersionmusthaveauniquePropertyvalue.AfterFindRelatedProductsthevalueofthispropertyisalistproductcodes,separatedbysemicolons(;),detectedonthesystem.

RemoveFeatures String TheinstallersetstheREMOVEpropertytofeaturesspecifiedinthiscolumn.Thefeaturestoberemovedcanbedeterminedatruntime.TheFormattedstringenteredinthisfieldmustevaluatetoacomma-delimitedlistoffeaturenames.Forexample:[Feature1],[Feature2],[Feature3].Nofeaturesareremovedifthefieldcontainsformattedtext

Page 445: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

thatevaluatestoanemptystring.TheinstallersetsREMOVE=ALLonlyiftheRemovefieldisempty.

Anyattributenamespace='##other'processContents='lax'

SeeAlsoWixSchema

Version2.0.4820.0

Page 446: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

UserElement

Description

Userforallkindsofthings.WhenitisnotnestedunderacomponentitisincludedintheMSIsoitcanbereferencedbyotherelementssuchastheUserattributeintheAppPoolelement.WhenitisnestedunderaComponentelement,theUserwillbecreatedoninstallandcanalsobeusedforreference.

WindowsInstallerreferencesNone

ParentsComponent,Fragment,Include,Module,Product

InnerTextNone

ChildrenSequence(min:1,max:1)

1. GroupRef(min:0,max:unbounded)

Attributes

Name Type Description RequiredId String YesCanNotChangePassword YesNoType CreateUser YesNoType Indicateswhether

ornottocreatetheuser.Usercreationcanbeskippedifallthatisdesiredistojoinausertogroups.

Disabled YesNoType Domain String FailIfExists YesNoType Indicatesifthe

Page 447: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

installshouldfailiftheuseralreadyexists.

Name String YesPassword String UsuallyaProperty

thatispassedinonthecommand-linetokeepitmoresecure.

PasswordExpired YesNoType Indicateswhethertheusermustchangetheirpasswordontheirfirstlogin.

PasswordNeverExpires YesNoType RemoveOnUninstall YesNoType Indicateswhether

theuseraccountshouldbeleftbehindonuninstall.

UpdateIfExists YesNoType Indicatesiftheuseraccountpropertiesshouldbeupdatediftheuseralreadyexists.

SeeAlsoWixSchema,Group,GroupRef

Version2.0.4820.0

Page 448: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ValidateProductIDElement

Description

SetstheProductIDpropertytothefullproductidentifier.ThisactionmustbesequencedbeforetheuserinterfacewizardintheInstallUISequencetableandbeforetheRegisterUseractionintheInstallExecuteSequencetable.Iftheproductidentifierhasalreadybeenvalidatedsuccessfully,theValidateProductIDactiondoesnothing.TheValidateProductIDactionalwaysreturnsasuccess,whetherornottheproductidentifierisvalid,sothattheproductidentifiercanbeenteredonthecommandlinethefirsttimetheproductisrun.TheproductidentifiercanbevalidatedwithouthavingtheuserreenterthisinformationbysettingthePIDKEYpropertyonthecommandlineorbyusingatransform.ThedisplayofthedialogboxrequestingtheusertoentertheproductidentifiercanthenbemadeconditionaluponthepresenceoftheProductIDproperty,whichissetwhenthePIDKEYpropertyisvalidated.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence,InstallUISequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

Page 449: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

SeeAlsoWixSchema

Version2.0.4820.0

Page 450: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

VerbElement

Description

VerbdefinitionforanExtension.Whenadvertised,thiselementcreatesarowintheVerbtable.Whennotadvertised,thiselementcreatestheappropriaterowsinRegistrytable.

WindowsInstallerreferencesVerbTable,RegistryTable

ParentsExtension

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String Theverbforthecommand. YesArgument String Valueforthecommandarguments.

NotethattheresolutionofpropertiesintheArgumentfieldislimited.Apropertyformattedas[Property]inthisfieldcanonlyberesolvedifthepropertyalreadyhastheintendedvaluewhenthecomponentowningtheverbisinstalled.Forexample,fortheargument"[#MyDoc.doc]"toresolvetothecorrectvalue,thesameprocessmustbeinstallingthefileMyDoc.docandthecomponentthatownstheverb.

Command String Thelocalizedtextdisplayedonthe

Page 451: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

contextmenu.Sequence Integer Thesequenceofthecommands.

OnlyverbsforwhichtheSequenceisspecifiedareusedtoprepareanorderedlistforthedefaultvalueoftheshellkey.TheVerbwiththelowestvalueinthiscolumnbecomesthedefaultverb.UsedonlyforAdvertisedverbs.

Target String Targetfiletobeexecutedfortheverb.ThevalueshouldbeaformattedPropertytorefertotheshortpathtothefile,forexample:[!TargetFileId].Onlyvalidfornon-Advertisedverbs.

SeeAlsoWixSchema

Version2.0.4820.0

Page 452: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WebAddressElement

Description

WebAddressforWebSite

WindowsInstallerreferencesNone

ParentsWebSite

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String YesHeader String IP String ForIPaddress"AllUnassigned",do

notspecifythisattributeorspecifyitsvalueas"*".

KeyPath YesNoType Port String YesSecure YesNoType

SeeAlsoWixSchema

Version2.0.4820.0

Page 453: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WebApplicationElement

Description

Definespropertiesforawebapplication.Thesepropertiescanbeusedformorethanoneapplicationdefinedinawebsite,directory,orvroot,bydefiningthiselementinacommonlocationandreferringtoitbysettingtheWebApplicationattributeoftheWebSite,WebDir,andWebVirtualDirelements.

WindowsInstallerreferencesNone

ParentsFragment,Include,Module,Product,WebSite,WebVirtualDir

InnerTextNone

ChildrenSequence(min:1,max:1)

1. WebApplicationExtension(min:0,max:unbounded)

Attributes

Name Type Description RequiredId String YesAllowSessions YesNoDefaultType SetstheEnable

SessionStateoption.Whenenabled,youcansetthesessiontimeoutusingtheSessionTimeoutattribute.

Buffer YesNoDefaultType Setstheoptionthatenablesresponsebufferinginthe

Page 454: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

application,whichallowsASPscripttosetresponseheadersanywhereinthescript.

ClientDebugging YesNoDefaultType EnableASPclient-sidescriptdebugging.

DefaultScript Enumeration Setsthedefaultscriptlanguageforthesite.Thisattribute'svalueshouldbeoneofthefollowing:VBScript

JScript

Isolation Enumeration Setstheapplicationisolationlevelforthisapplicationforpre-IIS6applications.Thisattribute'svalueshouldbeoneofthefollowing:low

MeanstheapplicationexecuteswithintheIISprocess.

mediumExecutespooledinaseparateprocess.

highMeans

Page 455: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

executionaloneinaseparateprocess.

Name String Setsthenameofthisapplication.

Yes

ParentPaths YesNoDefaultType Setstheparentpathsoption,whichallowsaclienttouserelativepathstoreachparentdirectoriesfromthisapplication.

ScriptTimeout Integer SetsthetimeoutvalueforexecutingASPscripts.

ServerDebugging YesNoDefaultType EnableASPserver-sidescriptdebugging.

SessionTimeout Integer Setsthetimeoutvalueforsessionsinminutes.

WebAppPool String ReferencestheIdattributeofaWebAppPoolelementtouseastheapplicationpoolforthisapplicationinIIS6applications.

SeeAlsoWixSchema

Version2.0.4820.0

Page 456: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WebApplicationExtensionElement

Description

ExtensionforWebApplication

WindowsInstallerreferencesNone

ParentsWebApplication

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredCheckPath YesNoType Executable String usuallyaPropertythatresolvesto

shortfilenamepathYes

Extension String Extensionbeingregistered.Donotprefixwitha'.'(e.g.youshoulduse"html",not".html").Toregisterforallextensions,useExtension="*".Toregisterawildcardapplicationmap(whichhandlesallrequests,eventhosefordirectoriesorfileswithnoextension)omittheExtensionattributecompletely.

Script YesNoType Verbs String

SeeAlso

Page 457: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WixSchemaVersion2.0.4820.0

Page 458: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WebAppPoolElement

Description

IIS6ApplicationPool

WindowsInstallerreferencesNone

ParentsComponent,Fragment,Include,Module,Product

InnerTextNone

ChildrenSequence(min:1,max:1)

1. RecycleTime(min:0,max:unbounded)

Attributes

Name Type Description RequiredId String IdoftheAppPool. YesCpuAction Enumeration Actiontakenwhen

CPUexceedsmaximumCPUuse(asdefinedwithMaxCpuUsageandRefreshCpu).Thisattribute'svalueshouldbeoneofthefollowing:none

shutdown

Identity Enumeration IdentityyouwanttheAppPooltorununder.Usethe'other'value

Page 459: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

inconjunctionwiththeUserattributetospecifynon-standarduser.Thisattribute'svalueshouldbeoneofthefollowing:networkService

localService

localSystem

other

IdleTimeout Integer Shutdownworkerprocessafterbeingidlefor(timeinminutes).

MaxCpuUsage PercentType MaximumCPUusage(percent).

MaxWorkerProcesses Integer Maximumnumberofworkerprocesses.

Name String NameoftheAppPooltobeshowninIIs.

Yes

PrivateMemory Integer Specifiestheamountofprivatememory(inKB)thataworkerprocesscanusebeforetheworkerprocessrecycles.Themaximumvaluesupportedforthisattributeis4,294,967KB.

QueueLimit Integer Limitthekernelrequestqueue(numberofrequests).

RecycleMinutes Integer Howoften,inminutes,youwantthe

Page 460: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

AppPooltoberecycled.

RecycleRequests Integer Howoften,inrequests,youwanttheAppPooltoberecycled.

RefreshCpu Integer RefreshCPUusagenumbers(inminutes).

User String UseraccounttoruntheAppPoolas.Tousethis,youmustsettheIdentityattributeto'other'.

VirtualMemory Integer Specifiestheamountofvirtualmemory(inKB)thataworkerprocesscanusebeforetheworkerprocessrecycles.Themaximumvaluesupportedforthisattributeis4,294,967KB.

SeeAlsoWixSchema

Version2.0.4820.0

Page 461: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WebDirElement

Description

DefinesasubdirectorywithinanIISwebsite.WhenthiselementisachildofWebSite,thewebdirectoryisdefinedwithinthatwebsite.OtherwisethewebdirectorymustreferenceaWebSiteelementviatheWebSiteattribute.

WindowsInstallerreferencesNone

ParentsComponent,Include,WebSite

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String YesDirProperties String ReferencestheIdattributefora

WebDirPropertieselementthatspecifiesthesecurityandaccesspropertiesforthiswebdirectory.

Yes

Path String Specifiesthenameofthiswebdirectory.

Yes

WebSite String ReferencestheIdattributeforaWebSiteelementinwhichthisdirectorybelongs.RequiredwhenthiselementisnotachildofaWebSiteelement.

SeeAlsoWixSchema

Page 462: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Version2.0.4820.0

Page 463: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WebDirPropertiesElement

Description

WebDirProperitesusedbyoneormoreWebSites.ListspropertiescommontoIISwebsitesandvroots.CorrespondingpropertiescanbeviewedthroughtheIISManagersnap-in.OnepropertyentrycanbereusedbymultiplesitesorvrootsusingtheIdfieldasareference,usingWebVirtualDir.DirProperties,WebSite.DirProperties,orWebDir.DirProperties.

WindowsInstallerreferencesNone

ParentsFragment,Include,Module,Product

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String YesAccessSSL YesNoType Avalueoftrueindicates

thatfileaccessrequiresSSLfilepermissionprocessing,withorwithoutaclientcertificate.ThiscorrespondstoAccessSSLflagforAccessSSLFlagsIISmetabaseproperty.

AccessSSL128 YesNoType Avalueoftrueindicates

Page 464: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

thatfileaccessrequiresSSLfilepermissionprocessingwithaminimumkeysizeof128bits,withorwithoutaclientcertificate.ThiscorrespondstoAccessSSL128flagforAccessSSLFlagsIISmetabaseproperty.

AccessSSLMapCert YesNoType ThiscorrespondstoAccessSSLMapCertflagforAccessSSLFlagsIISmetabaseproperty.

AccessSSLNegotiateCert YesNoType ThiscorrespondstoAccessSSLNegotiateCertflagforAccessSSLFlagsIISmetabaseproperty.

AccessSSLRequireCert YesNoType ThiscorrespondstoAccessSSLRequireCertflagforAccessSSLFlagsIISmetabaseproperty.

AnonymousAccess YesNoType SetstheEnableAnonymousAccesscheckbox,whichmapsanonymoususerstoaWindowsuseraccount.Whensettingthisto'yes'youshouldalsoprovidetheuseraccountusingtheAnonymousUserattribute,anddeterminewhatsettingtousefortheIIsControlledPasswordattribute.Defaultsto'no.'

AnonymousUser String ReferencetotheIdattributeontheUser

Page 465: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

elementtobeusedastheanonymoususerforthedirectory.SeetheUserelementformoreinformation.

AspDetailedError YesNoType SetstheoptionforwhethertosenddetailedASPerrorsbacktotheclientonscripterror.Defaultis'no.'

AuthenticationProviders String Commadelimitedlist,inorderofprecedence,ofWindowsauthenticationprovidersthatIISwillattempttouse:NTLM,Kerberos,Negotiate,andothers.

BasicAuthentication YesNoType SetstheBasicAuthenticationoption,whichallowsclientstoprovidecredentialsinplaintextoverthewire.Defaultsto'no.'

CacheControlCustom String CustomHTTP1.1cachecontroldirectives.

CacheControlMaxAge Integer Integervaluespecifyingthecachecontrolmaximumagevalue.

ClearCustomError YesNoType SpecifieswhetherIIswillreturncustomerrorsforthisdirectory.

DefaultDocuments String Thelistofdefaultdocumentstosetforthiswebdirectory,incomma-delimitedformat.

DigestAuthentication YesNoType SetstheDigestAuthenticationoption,

Page 466: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

whichallowsusingdigestauthenticationwithdomainuseraccounts.Defaultsto'no.'

Execute YesNoType HttpExpires String Valuetosetthe

HttpExpiresattributetoforaWebDirinthemetabase.

IIsControlledPassword YesNoType SetswhetherIISshouldcontrolthepasswordusedfortheWindowsaccountspecifiedintheAnonymousUserattribute.Defaultsto'no.'

Index YesNoType SetstheIndexResourceoption,whichspecifieswhetherthiswebdirectoryshouldbeindexed.Defaultsto'no.'

LogVisits YesNoType Setswhethervisitstothissiteshouldbelogged.Defaultsto'no.'

PassportAuthentication YesNoType SetsthePassportAuthenticationoption,whichallowsclientstoprovidecredentialsviaa.NetPassportaccount.Defaultsto'no.'

Read YesNoType Script YesNoType WindowsAuthentication YesNoType SetstheWindows

Authenticationoption,whichenablesintegratedWindowsauthenticationtobeusedonthesite.Defaultsto'no.'

Page 467: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Write YesNoType

SeeAlsoWixSchema

Version2.0.4820.0

Page 468: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WebErrorElement

Description

CustomWebErrorsusedbyWebSitesandVirtualDirectories.

WindowsInstallerreferencesNone

ParentsWebSite,WebVirtualDir

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredErrorCode Integer HTTP1.1errorcode. YesFile String Filetobesenttotheclientforthis

errorcodeandsubcode.Thiscanbeformatted.Forexample:[#FileId].

SubCode Integer Errorsubcode.Setto0togetthewildcard"*".

Yes

URL String URLtobesenttotheclientforthiserrorcodeandsubcode.Thiscanbeformatted.

RemarksYoucanonlyuseerrorcodeandsubcodecombinationswhicharesupportedbyIIS.AttemptingtosetacustomerrorforanerrorcodeandsubcodecombinationthatisnotsupportedbyIIS(inthedefaultlistoferrorcodes)willresultinaninstallationfailure.

SeeAlsoWixSchema

Page 469: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Version2.0.4820.0

Page 470: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WebFilterElement

Description

IIsFilterforaComponent

WindowsInstallerreferencesNone

ParentsComponent,Include,WebSite

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String TheuniqueIdforthewebfilter. YesDescription String Descriptionofthefilter. Flags Integer SetstheMD_FILTER_FLAGS

metabasekeyforthefilter.Thismustbeaninteger.SeeMSDN'FilterFlags'documentationformoredetails.

LoadOrder String Allowedvalues:"first","last",number

Name String ThenameofthefiltertobeusedinIIS.

Yes

Path String UsuallyaPropertythatresolvestoshortfilenamepath

Yes

WebSite String RequiredifnotfoundaschildofWebSiteelement

SeeAlso

Page 471: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WixSchemaVersion2.0.4820.0

Page 472: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WebLogElement

Description

WebLogdefinition.

WindowsInstallerreferencesNone

ParentsFragment,Include,Module,Product

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String IdentifierfortheWebLog. YesType Enumeration Thisattribute'svalueshouldbe

oneofthefollowing:IIS

MicrosoftIISLogFileFormat

NCSANCSACommonLogFileFormat

noneDisableslogging.

ODBCODBCLogging

W3CW3CExtendedLogFileFormat

Yes

Page 473: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

SeeAlsoWixSchema

Version2.0.4820.0

Page 474: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WebPropertyElement

Description

IISProperties

WindowsInstallerreferencesNone

ParentsComponent,Include

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId Enumeration Thisattribute'svalueshouldbeone

ofthefollowing:ETagChangeNumber

IIs5IsolationMode

MaxGlobalBandwidth

LogInUTF8

Value String ThevaluetobeusedfortheWebPropertyspecifiedintheIdattribute.SeetheremarkssectionforinformationonacceptablevaluesforeachId.

RemarksHereisanexplanationoftheacceptablevaluesforeachpropertyandtheirmeaning:FortheIdsIIs5IsolationModeandLogInUTF8,novalueshouldbe

Page 475: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

specifiedsincethepresenceofthispropertyindicatesthatthesettingshouldbeset.FortheMaxGlobalBandwidthId,thevalueshouldbespecifiedinkilobytes.Thevalueshouldbeabase10number.ETagChangeNumbersetsthemachine-specificportionofETagasanumber.Thisvalue,whensynchronizedacrossserversinawebfarm,allowsthewebfarmtoreturnanidenticalETagforagivenresourceregardlessoftheserverthathandledtherequest.Thevalueshouldbeabase10number.

SeeAlsoWixSchema

Version2.0.4820.0

Page 476: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WebServiceExtensionElement

Description

TheWebServiceExtensionpropertyisusedbytheWebservertodeterminewhetheraWebserviceextensionispermittedtorun.

WindowsInstallerreferencesNone

ParentsComponent,Include

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String YesAllow YesNoType Indicatesiftheextensionis

allowedordenied.Yes

Description String Descriptionoftheextension. File String UsuallyaPropertythatresolves

toshortfilenamepathYes

Group String Stringusedtoidentifygroupsofextensions.

UIDeletable YesNoType IndicatesiftheUIisallowedtodeletetheextensionfromthelistofnot.Default:Notdeletable.

SeeAlsoWixSchema

Version2.0.4820.0

Page 477: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WebSiteElement

Description

IIsWebSite

WindowsInstallerreferencesNone

ParentsComponent,Fragment,Include,Module,Product

InnerTextNone

ChildrenSequence(min:1,max:1)

1. WebAddress(min:1,max:unbounded)2. WebApplication(min:0,max:1)3. Choiceofelements(min:0,max:unbounded)

CertificateRef(min:0,max:unbounded)HttpHeader(min:0,max:unbounded)WebDir(min:0,max:unbounded)WebError(min:0,max:unbounded)WebFilter(min:0,max:unbounded)WebVirtualDir(min:0,max:unbounded)

Attributes

Name Type Description RequiredId String Identifierforthe

WebSite.UsedwithintheMSIpackageonly.

Yes

AutoStart YesNoType Specifieswhethertoautomaticallystartthewebsite.

Page 478: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ConfigureIfExists YesNoType Specifieswhethertoconfigurethewebsiteifitalreadyexists.Note:Thiswillnotaffectuninstallbehavior.Ifthewebsiteexistsonuninstall,itwillberemoved.

ConnectionTimeout NonNegativeInteger Setsthetimeoutvalueforconnectionsinseconds.

Description String ThisisthenameofthewebsitethatwillshowupintheIISmanagementconsole.

Yes

Directory String Rootdirectoryofthewebsite.ResolvedtoadirectoryintheDirectorytableatinstalltimebytheservercustomactions.

DirProperties String ReferencetoWebDirPropertieselement.

Sequence Integer Sequencethatthewebsiteistobecreatedin.

StartOnInstall YesNoType Specifieswhethertostartthewebsiteoninstall.

Page 479: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WebApplication String ReferencetoaWebApplicationthatistobeinstalledaspartofthiswebsite.

WebLog String ReferencetoWebLogdefinition.

RemarksNestingWebSiteunderaComponentelementwillresultinaWebSitebeinginstalledtothemachineasthepackageisinstalled.

NestingWebSiteunderProduct,Fragment,orModuleresultsinawebsite"locator"recordbeingcreatedintheIIsWebSitetable.ThismeansthatthewebsiteitselfisneitherinstallednoruninstalledbytheMSIpackage.ItdoesmakethedatabaseavailableforreferencingfromaWebApplication,WebVirtualDirorWebDirrecord.ThisallowsanMSItoinstallWebApplications,WebVirtualDirsorWebDirstoalreadyexistingwebsitesonthemachine.Theinstallwillfailifthewebsitedoesnotexistinthesecases.

SeeAlsoWixSchema

Version2.0.4820.0

Page 480: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WebVirtualDirElement

Description

DefinesanIISvirtualdirectory.WhenthiselementisachildofWebSiteelement,thevirtualdirectoryisdefinedwithinthatwebsite.OtherwisethisvirtualdirectorymustreferenceaWebSiteelementviatheWebSiteattribute

WindowsInstallerreferencesNone

ParentsComponent,Include,WebSite,WebVirtualDir

InnerTextNone

ChildrenSequence(min:1,max:1)

1. WebApplication(min:0,max:1)2. WebError(min:0,max:unbounded)3. WebVirtualDir(min:0,max:unbounded)4. HttpHeader(min:0,max:unbounded)5. MimeMap(min:0,max:unbounded)

Attributes

Name Type Description RequiredId String YesAlias String Setstheapplicationname,which

istheURLrelativepathusedtoaccessthisvirtualdirectory

Yes

Directory String ReferencestheIdattributeforaDirectoryelementthatpointstothecontentforthisvirtualdirectory.

Yes

Page 481: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

DirProperties String ReferencestheIdattributeforaWebDirPropertieselementthatspecifiesthesecurityandaccesspropertiesforthisvirtualdirectory.

WebApplication String ReferencestheIdattributeforaWebApplicationelementthatspecifieswebapplicationsettingsforthisvirtualdirectory.IfaWebApplicationchildisnotspecified,thevirtualdirectorydoesnothostwebapplications.

WebSite String ReferencestheIdattributeforaWebSiteinwhichthisvirtualdirectorybelongs.RequiredwhenthiselementisnotachildofWebSiteelement.

SeeAlsoWixSchema

Version2.0.4820.0

Page 482: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WixElement

Description

Thisisthetop-levelcontainerelementforeverywxsfile.Amongstthepossiblechildren,theProduct,Module,andPatchCreationelementsareanalogoustothemainfunctioninaCprogram.Therecanonlybeoneofthesepresentwhenlinkingoccurs.Productcompilesintoanmsifile,Modulecompilesintoanmsmfile,PatchCreationcompilesintoapcpfile.TheFragmentelementisanatomicunitwhichultimatelylinksintoeitheraProduct,Module,orPatchCreation.TheFragmentcaneitherbecompletelyincludedorexcludedduringlinking.

WindowsInstallerreferencesNone

ParentsNone

InnerTextNone

ChildrenChoiceofelements(min:0,max:1)PatchCreation(min:0,max:1)Sequence(min:1,max:1)

1. Choiceofelements(min:0,max:1)Module(min:0,max:1)Product(min:0,max:1)

2. Fragment(min:0,max:unbounded)

Attributes

Name Type Description RequiredRequiredVersion VersionType Requiredversionofthe

WiXtoolsettocompilethisinputfile.

Page 483: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

SeeAlsoWixSchema

Version2.0.4820.0

Page 484: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WriteEnvironmentStringsElement

Description

Modifiesthevaluesofenvironmentvariables.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 485: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WriteIniValuesElement

Description

Writesthe.inifileinformationthattheapplicationneedswrittentoits.inifiles.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 486: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WriteRegistryValuesElement

Description

Setsupanapplication'sregistryinformation.Theconditionforthisactionmaybespecifiedintheelement'sinnertext.

WindowsInstallerreferencesNone

ParentsInstallExecuteSequence

InnerText(xs:string)Thiselementmayhaveinnertext.

ChildrenNone

Attributes

Name Type Description RequiredSequence Integer Avalueusedtoindicatethe

positionofthisactioninasequence.

Suppress YesNoType Ifyes,thisactionwillnotoccur.

SeeAlsoWixSchema

Version2.0.4820.0

Page 487: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

XmlFileElement

Description

Addsorremoves.xmlfileentries.IfyouusetheXmlFileelementyoumustlinkwithwixca.wixlibbecauseitrequirestheXmlFilecustomactions.

WindowsInstallerreferencesNone

ParentsComponent

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String Identifierforxmlfile

modification.Yes

Action Enumeration ThetypeofmodificationtobemadetotheXMLfilewhenthecomponentisinstalled.Thisattribute'svalueshouldbeoneofthefollowing:createElement

CreatesanewelementundertheelementspecifiedinElementPath.TheNameattributeisrequiredinthiscaseandspecifiesthename

Yes

Page 488: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ofthenewelement.TheValueattributeisnotnecessarywhencreateElementisspecifiedastheaction.IftheValueattributeisset,itwillcausethenewelement'stextvaluetobeset.

deleteValueDeletesavaluefromtheelementspecifiedintheElementPath.IfNameisspecified,theattributewiththatnameisdeleted.IfNameisnotspecified,thetextvalueoftheelementspecifiedintheElementPathisdeleted.TheValueattributeisignoredifdeleteValueistheactionspecified.

setValueSetsavalueintheelementspecifiedintheElementPath.IfNameisspecified,andattributewiththatnameissettothevaluespecifiedinValue.IfNameisnotspecified,thetextvalueoftheelementisset.ValueisarequiredattributeifsetValueistheactionspecified.

CreateElement YesNoType Specifieswhetherornotto

Page 489: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

createanElementwiththenamespecifiedintheNameattribute.

ElementPath String TheXPathoftheelementtobemodified.Notethatthisisaformattedfieldandtherefore,squarebracketsintheXPathmustbeescapted.

Yes

File String Pathofthe.xmlfiletoconfigure.

Yes

Name String NameofXMLnodetoset/addtothespecifiedelement.Notsettingthisattributecausestheelement'stextvaluetobeset.Otherwisethisspecifiedtheattributenamethatisset.

Permanent YesNoType Specifieswhetherornotthemodificationshouldberemovedonuninstall.ThishasnoeffectonuninstalliftheactionwasdeleteValue.

Sequence Integer SpecifiestheorderinwhichthemodificationistobeattemptedontheXMLfile.Itisimportanttoensurethatnewelementsarecreatedbeforeyouattempttoaddanattributetothem.

Value String Thevaluetobewritten.

SeeAlsoWixSchema

Version2.0.4820.0

Page 490: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

MmcSchema

Copyright(c)MicrosoftCorporation.Allrightsreserved.TheuseanddistributiontermsforthissoftwarearecoveredbytheCommonPublicLicense1.0(http://opensource.org/licenses/cpl.php)whichcanbefoundinthefileCPL.TXTattherootofthisdistribution.Byusingthissoftwareinanyfashion,youareagreeingtobeboundbythetermsofthislicense.Youmustnotremovethisnotice,oranyother,fromthissoftware.

ThesourcecodeschemafortheWindowsInstallerXMLToolsetMMCExtension.

TargetNamespacehttp://schemas.microsoft.com/wix/MmcExtension

AllElementsExtendedNodeTypePublishedNodeTypeResourcesSnapIn

Page 491: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ExtendedNodeTypeElement

Description

Publishednodetypethatisextendedbythissnap-in.

WindowsInstallerreferencesNone

ParentsSnapIn

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId Uuid Theguidrepresentingtheextended

node.Yes

Description String Thedescriptionoftheextension.

SeeAlsoMmcSchema

Version2.0.4820.0

Page 492: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

PublishedNodeTypeElement

Description

Publishednodetypethatcanbeextendedbyextensionsnap-ins.

WindowsInstallerreferencesNone

ParentsSnapIn

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId Uuid Theguidrepresentingtheextensible

node.Yes

Description String Thedescriptionoftheextensiblenode.

SeeAlsoMmcSchema

Version2.0.4820.0

Page 493: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ResourcesElement

Description

Elementdescribingthelocalizedresourcesforthissnap-in.

WindowsInstallerreferencesNone

ParentsSnapIn

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredDescriptionId Integer TheresourceIDfor

thedescriptionofthesnap-inintheresourcesDLL.

DisplayNameId Integer TheresourceIDforthedisplaynameofthesnap-inintheresourcesDLL.

DllName String ThenameoftheDLLcontainingtheembeddedresourcesforthissnap-in.

Yes

FolderBitmapsColorMask Integer Thecolormaskfortransparencyinfolderbitmaps.

Page 494: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

IconId Integer TheresourceIDfortheiconofthesnap-inintheresourcesDLL.UsedfortheiconofasavedMSCfile,andtheiconinthetopleftoftheMMCwindow,notforthesnap-inselectiondialog.

LargeFolderBitmapId Integer TheresourceIDforthelargefolderbitmapofthesnap-inintheresourcesDLL.Usedforthesnap-inselectiondialogwhenAdd/RemoveSnap-insischosen.

SmallFolderBitmapId Integer TheresourceIDforthesmallfolderbitmapofthesnap-inintheresourcesDLL.Usedforthesnap-inselectiondialogwhenAdd/RemoveSnap-insischosen.

SmallFolderSelectedBitmapId Integer TheresourceIDforthesmallselectedfolderbitmapofthesnap-inintheresourcesDLL.Usedforthesnap-inselectiondialog

Page 495: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

whenAdd/RemoveSnap-insischosen.

VendorId Integer TheresourceIDforthevendorofthesnap-inintheresourcesDLL.

VersionId Integer TheresourceIDfortheversionofthesnap-inintheresourcesDLL.

SeeAlsoMmcSchema

Version2.0.4820.0

Page 496: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

SnapInElement

Description

AmanagedMMCsnap-in,withoptionalpublishedextendiblenodes.

WindowsInstallerreferencesNone

ParentsFile

InnerTextNone

ChildrenChoiceofelements(min:0,max:unbounded)ExtendedNodeType(min:0,max:unbounded):Nodetypeofanothersnap-inthatisextendedbythissnap-in.PublishedNodeType(min:0,max:unbounded):Publishednodetypesthatcanbeextendedbyextensionsnap-ins.Resources(min:0,max:unbounded):Elementdescribingthelocalizedresourcesforthissnap-in.

Attributes

Name Type Description RequiredId Uuid Theguid

representingthesnap-in'sidentity.

Yes

About Uuid Theguidrepresentingthesnap-in'shelptopic.Defaultsto{00000000-0000-0000-0000-000000000000}.

AssemblyName String Thenameofthe

Page 497: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

assemblyinwhichthesnap-inisdefined.

ClassType String Thefully-qualifiedtypenameofthesnap-in.

Yes

DefaultCulture String Thecultureofthesnap-inassembly.Defaultstoneutral.

DefaultPublicKeyToken String Thepublickeytokenofthesnap-in.Defaultstonull.

DefaultVersion String Theversionofthesnap-inassembly.Defaultsto1.0.0.0.

Description String Thedescriptionofthesnap-in,whichwillbeshowntousersintheAdd/Removesnap-indialog.

ExtensionType Enumeration Specifiesthetypeoftheextension.Thisattribute'svalueshouldbeoneofthefollowing:ContextMenu

NameSpace

PropertySheet

Task

ToolBar

View

MmcVersion String TheversionofMMCthatthissnap-inwas

Page 498: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

compiledto.Defaultsto3.0.0.0.

Name String Thenameofthesnap-inasshowntousersintheAdd/Removesnap-indialog.

Yes

Provider String Theproviderofthesnap-inasshowntousersintheAdd/Removesnap-indialog.

RuntimeVersion String TheversionoftheCLRthatthissnap-inwascompiledto.Defaultsto2.0.50727.

SeeAlsoMmcSchema

Version2.0.4820.0

Page 499: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

NetfxSchema

Copyright(c)MicrosoftCorporation.Allrightsreserved.TheuseanddistributiontermsforthissoftwarearecoveredbytheCommonPublicLicense1.0(http://opensource.org/licenses/cpl.php)whichcanbefoundinthefileCPL.TXTattherootofthisdistribution.Byusingthissoftwareinanyfashion,youareagreeingtobeboundbythetermsofthislicense.Youmustnotremovethisnotice,oranyother,fromthissoftware.

ThesourcecodeschemafortheWindowsInstallerXMLToolset.NETFrameworkExtension.

TargetNamespacehttp://schemas.microsoft.com/wix/NetFxExtension

AllElementsNativeImage

Page 500: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

NativeImageElement

Description

Improvestheperformanceofmanagedapplicationsbycreatingnativeimages.Requiresthe.NETFramework2.0tobeinstalledonthetargetmachinesinceitrunsNGen.

WindowsInstallerreferencesNone

ParentsFile

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String Theidentifierforthis

NativeImage.Yes

AppBaseDirectory String Theidentifierofthedirectorytouseforlocatingdependentassemblies.ForDLLassembliesandassembliesinstalledtotheGAC,thisattributeshouldbesettothedirectoryoftheapplicationwhichloadsthisassembly.ForEXEassemblies,thisattributedoesnotneedtobesetbecauseNGenwillusethedirectoryoftheassemblyfilebydefault.

Page 501: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

AssemblyApplication String Theidentifieroftheapplicationwhichwillloadthisassembly.ForDLLassemblieswhichareloadedviareflection,thisattributeshouldbesettoindicatetheapplicationwhichwillloadthisassembly.Theconfigurationoftheapplication(usuallyspecifiedviaanexe.configfile)willbeusedtodeterminehowtoresolvedependenciesforthisassembly.Whenasharedcomponentisloadedatruntime,usingtheLoadmethod,theapplication'sconfigurationfiledeterminesthedependenciesthatareloadedforthesharedcomponent—forexample,theversionofadependencythatisloaded.Thisattributegivesguidanceonwhichdependencieswouldbeloadedatruntimeinordertofigureoutwhichdependencyassemblieswillalsoneedtohavenativeimagesgenerated(assumingtheDependencyattributeisnotsetto"no").ThisattributecannotbesetiftheAssemblyApplication

Page 502: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

attributeissetontheparentFileelement(pleasenotethattheseattributesbothrefertothesameapplicationassemblybutdoverydifferentthings:specifiyingFile/@AssemblyApplicationwillforceanassemblytoinstalltoaprivatelocationnexttotheindicatedapplication,whereasthisAssemblyApplicationattributewillbeusedtohelpresolvedependentassemblieswhilegeneratingnativeimagesforthisassembly).

Debug YesNoType Setto"yes"togeneratenativeimagesthatcanbeusedunderadebugger.Thedefaultvalueis"no".

Dependencies YesNoType Setto"no"togeneratetheminimumnumberofnativeimages.Thedefaultvalueis"yes".

Platform Enumeration Setstheplatform(s)forwhichnativeimageswillbegenerated.Thisattribute'svalueshouldbeoneofthefollowing:32bit

Generatenativeimagesonlyforthe32-bitversionofthe.NETFrameworkonthetargetmachine.Thisisthedefault

Page 503: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

value.

64bitGeneratenativeimagesonlyfortheia64orx86versionofthe.NETFrameworkonthetargetmachine.Ifno64-bit.NETFrameworkisavailableonthetargetmachine,attemptingtogeneratenativeimageswillfail.

allGeneratenativeimagesforallplatformsofthe.NETFrameworkavailableonthetargetmachine.

Priority Enumeration Setsthepriorityofgeneratingthenativeimagesforthisassembly.Thisattribute'svalueshouldbeoneofthefollowing:0

Thisisthehighestpriority,itmeansthatimagegenerationoccurssyncronouslyduringthesetupprocess.Thisoptionwillslowdownsetupperformance.

1Thiswillqueueimage

Page 504: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

generationtotheNGenservicetooccurimmediately.Thisoptionwillslowdownsetupperformance.

2ThiswillqueueimagegenerationtotheNGenservicetooccurafterallpriority1assemblieshavecompleted.Thisoptionwillslowdownsetupperformance.

3Thisisthelowestpriority,itwillqueueimagegenerationtooccurwhenthemachineisidle.Thisoptionshouldnotslowdownsetupperformance.Thisisthedefaultvalue.

Profile YesNoType Setto"yes"togeneratenativeimagesthatcanbeusedunderaprofiler.Thedefaultvalueis"no".

RemarksNativeimagesarefilescontainingcompiledprocessor-specificmachinecode,whichareinstalledintothenativeimagecacheonthelocalcomputer.Theruntimecanusenativeimagesfromthecacheinsteadusingthejust-in-time(JIT)compilertocompiletheoriginalassembly.

SeeAlsoNetfxSchema

Page 505: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Version2.0.4820.0

Page 506: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

VsSchema

Copyright(c)MicrosoftCorporation.Allrightsreserved.TheuseanddistributiontermsforthissoftwarearecoveredbytheCommonPublicLicense1.0(http://opensource.org/licenses/cpl.php)whichcanbefoundinthefileCPL.TXTattherootofthisdistribution.Byusingthissoftwareinanyfashion,youareagreeingtobeboundbythetermsofthislicense.Youmustnotremovethisnotice,oranyother,fromthissoftware.

ThesourcecodeschemafortheWindowsInstallerXMLToolsetVisualStudioExtension.

TargetNamespacehttp://schemas.microsoft.com/wix/VSExtension

AllElementsHelpCollectionHelpCollectionRefHelpFileHelpFileRefHelpFilterHelpFilterRefPlugCollectionInto

Page 507: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

HelpCollectionElement

Description

HelpNamespaceforahelpcollection.TheparentfileisthekeyfortheHxC(Collection)file.

WindowsInstallerreferencesNone

ParentsFile

InnerTextNone

ChildrenChoiceofelements(min:0,max:unbounded)HelpFileRef(min:0,max:unbounded)HelpFilterRef(min:0,max:unbounded)PlugCollectionInto(min:0,max:unbounded)

Attributes

Name Type Description RequiredId String PrimaryKeyforHelpNamespace. YesDescription String FriendlynameforNamespace. Name String InternalMicrosoftHelpIDforthis

Namespace.Yes

SeeAlsoVsSchema

Version2.0.4820.0

Page 508: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

HelpCollectionRefElement

Description

CreateareferencetoaHelpCollectionelementinanotherFragment.

WindowsInstallerreferencesNone

ParentsFragment,Product

InnerTextNone

ChildrenChoiceofelements(min:0,max:unbounded)HelpFileRef(min:0,max:unbounded)

Attributes

Name Type Description RequiredId String PrimaryKeyforHelpNamespace

Table.Yes

SeeAlsoVsSchema

Version2.0.4820.0

Page 509: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

HelpFileElement

Description

FileforHelpNamespace.TheparentfileisthekeyforHxS(Title)file.

WindowsInstallerreferencesNone

ParentsFile

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String PrimaryKeyforHelpFileTable. YesAttributeIndex String KeyforHxR(Attributes)file. Index String KeyforHxI(Index)file. Language Integer LanguageIDforcontentfile. Name String InternalMicrosoftHelpIDfor

thisHelpFile.Yes

SampleLocation String Keyforafilethatisinthe"root"ofthesamplesdirectoryforthisHelpFile.

Search String KeyforHxQ(Query)file.

SeeAlsoVsSchema

Version2.0.4820.0

Page 510: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

HelpFileRefElement

Description

CreateareferencetoaHelpFileelementinanotherFragment.

WindowsInstallerreferencesNone

ParentsHelpCollection,HelpCollectionRef

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String PrimaryKeyforHelpFileTable. Yes

SeeAlsoVsSchema

Version2.0.4820.0

Page 511: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

HelpFilterElement

Description

FilterforHelpNamespace.

WindowsInstallerreferencesNone

ParentsFragment,Product

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String PrimaryKeyforHelpFilter. YesFilterDefinition String QueryStringforHelpFilter. Name String FriendlynameforFilter. Yes

SeeAlsoVsSchema

Version2.0.4820.0

Page 512: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

HelpFilterRefElement

Description

CreateareferencetoaHelpFileelementinanotherFragment.

WindowsInstallerreferencesNone

ParentsHelpCollection

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String PrimaryKeyforHelpFilter. Yes

SeeAlsoVsSchema

Version2.0.4820.0

Page 513: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

PlugCollectionIntoElement

Description

PluginforHelpNamespace.

WindowsInstallerreferencesNone

ParentsHelpCollection

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredAttributes String KeyforHxA(Attributes)

fileofchildnamespace.

TableOfContents String KeyforHxTfileofchildnamespace.

TargetCollection String ForiegnKeyintoHelpNamespacetablefortheparentnamespaceintowhichthechildwillbeinserted.

Yes

TargetTableOfContents String KeyforHxTfileofparentnamespacethatnowincludesthenewchildnamespace.

SeeAlsoVsSchema

Version2.0.4820.0

Page 514: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

PubcaSchema

Copyright(c)MicrosoftCorporation.Allrightsreserved.

TheuseanddistributiontermsforthissoftwarearecoveredbytheCommonPublicLicense1.0(http://opensource.org/licenses/cpl.php)whichcanbefoundinthefileCPL.TXTattherootofthisdistribution.Byusingthissoftwareinanyfashion,youareagreeingtobeboundbythetermsofthislicense.

Youmustnotremovethisnotice,oranyother,fromthissoftware.

SchemafordescribingstandardactionsintheWindowsInstaller.

RootElementsComPlusPartitionMessageQueue

TargetNamespacehttp://schemas.microsoft.com/wix/2005/02/pubca

DocumentShouldLookLike<?xmlversion="1.0"?><ComPlusPartitionxmlns="http://schemas.microsoft.com/wix/2005/02/pubca">...</ComPlusPartition><?xmlversion="1.0"?><MessageQueuexmlns="http://schemas.microsoft.com/wix/2005/02/pubca">...</MessageQueue>

AllElements

Page 515: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ComPlusApplicationComPlusApplicationRoleComPlusAssemblyComPlusAssemblyDependencyComPlusComponentComPlusGroupInApplicationRoleComPlusGroupInPartitionRoleComPlusInterfaceComPlusMethodComPlusPartitionComPlusPartitionRoleComPlusPartitionUserComPlusRoleForComponentComPlusRoleForInterfaceComPlusRoleForMethodComPlusSubscriptionComPlusUserInApplicationRoleComPlusUserInPartitionRoleMessageQueueMessageQueuePermission

Page 516: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ComPlusApplicationElement

Description

DefinesaCOM+application.IfthiselementisadescendentofaComponentelement,theapplicationwillbecreatedinassociationwiththiscomponent.IftheelementisachildofanyoftheFragment,ModuleorProductelementsitisconsideredtobealocater,referencinganexistingapplication.

IftheelementisachildofaComPlusPartitionelement,orhaveitsPartitionattributeset,theapplicationwillbeinstalledunderthereferencedpartition.

WindowsInstallerreferencesNone

ParentsComPlusPartition

InnerTextNone

ChildrenSequence(min:1,max:1)

1. Choiceofelements(min:0,max:unbounded)ComPlusApplicationRole(min:0,max:unbounded)ComPlusAssembly(min:0,max:unbounded)

Attributes

Name Type DescriptionId String Identifierfortheelement.AccessChecksLevel Enumeration Thisattribute'svalue

shouldbeoneofthefollowing:applicationLevel

applicationComponentLevel

Page 517: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Activation Enumeration Thisattribute'svalueshouldbeoneofthefollowing:inproc

local

ApplicationAccessChecksEnabled YesNoType ApplicationDirectory String ApplicationId String Idfortheapplication.This

attributecanbeomitted,inwhichcaseanidwillbegeneratedoninstall.Iftheelementisalocater,thisattributecanbeomittedifavalueisprovidedfortheNameattribute.

Authentication Enumeration Thisattribute'svalueshouldbeoneofthefollowing:default

none

connect

call

packet

integrity

privacy

AuthenticationCapability Enumeration Thisattribute'svalueshouldbeoneofthefollowing:none

secureReference

staticCloaking

Page 518: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

dynamicCloaking

Changeable YesNoType CommandLine String ConcurrentApps Int CreatedBy String CRMEnabled YesNoType CRMLogFile String Deleteable YesNoType Description String DumpEnabled YesNoType DumpOnException YesNoType DumpOnFailfast YesNoType DumpPath String EventsEnabled YesNoType Identity String ImpersonationLevel Enumeration Thisattribute'svalue

shouldbeoneofthefollowing:anonymous

identify

impersonate

delegate

IsEnabled YesNoType MaxDumpCount Int Name String Nameoftheapplication.

Thisattributecanbeomittediftheelementisalocater,andavalueisprovidedforthePartitionIdattribute.

Partition String IftheelementisnotachildofaComPlusPartition

Page 519: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

element,thisattributecanbeprovidedwiththeidofaComPlusPartitionelementrepresentingthepartitiontheapplicationbelongsto.

Password String QCAuthenticateMsgs Enumeration Thisattribute'svalue

shouldbeoneofthefollowing:secureApps

off

on

QCListenerMaxThreads Int QueueListenerEnabled YesNoType QueuingEnabled YesNoType RecycleActivationLimit Int RecycleCallLimit Int RecycleExpirationTimeout Int RecycleLifetimeLimit Int RecycleMemoryLimit Int Replicable YesNoType RunForever YesNoType ShutdownAfter Int SoapActivated YesNoType SoapBaseUrl String SoapMailTo String SoapVRoot String SRPEnabled YesNoType SRPTrustLevel Enumeration Thisattribute'svalue

shouldbeoneofthefollowing:disallowed

Page 520: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

fullyTrusted

ThreeGigSupportEnabled String

SeeAlsoPubcaSchema

Version2.0.4820.0

Page 521: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ComPlusApplicationRoleElement

Description

Definesanapplicationrole.IfthiselementisadescendentofaComponentelement,theapplicationrolewillbecreatedinassociationwiththiscomponent.IftheelementisachildofanyoftheFragment,ModuleorProductelementsitisconsideredtobealocater,referencinganexistingapplicationrole.

WindowsInstallerreferencesNone

ParentsComPlusApplication

InnerTextNone

ChildrenSequence(min:1,max:1)

1. Choiceofelements(min:0,max:unbounded)ComPlusGroupInApplicationRole(min:0,max:unbounded)ComPlusUserInApplicationRole(min:0,max:unbounded)

Attributes

Name Type Description RequiredId String Identifierfortheelement. YesApplication String Iftheelementisnotachildofa

ComPlusApplicationelement,thisattributeshouldbeprovidedwiththeidofaComPlusApplicationelementrepresentingtheapplicationtherolebelongsto.

Description String Name String Nameoftheapplicationrole. Yes

Page 522: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

SeeAlsoPubcaSchema

Version2.0.4820.0

Page 523: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ComPlusAssemblyElement

Description

RepresentsaDLLorassemblytoberegisteredwithCOM+.IfthiselementisachildofaComPlusApplicationelement,theassemblywillberegisteredinthisapplication.OtherwaystheApplicationattributemustbesettoanapplication.TheelementmustbeadescendentofaComponentelement,itcannotbeachildofaComPlusApplicationlocatorelement.

WindowsInstallerreferencesNone

ParentsComPlusApplication

InnerTextNone

ChildrenSequence(min:1,max:1)

1. Choiceofelements(min:0,max:unbounded)ComPlusAssemblyDependency(min:0,max:unbounded)ComPlusComponent(min:0,max:unbounded)

Attributes

Name Type Description RequiredId String Identifierfortheelement. YesApplication String Iftheelementisnota

childofaComPlusApplicationelement,thisattributeshouldbeprovidedwiththeidofaComPlusApplicationelementrepresentingthe

Page 524: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

applicationtheassemblyistoberegisteredin.Thisattributecanbeomittedfora.NETassemblyeveniftheapplicationisnotachildofaComPlusApplicationelement.

AssemblyName String ThenameoftheassemblyusedtoidentifytheassemblyintheGAC.ThisattributecanbeprovidedonlyifDllPathFromGACissetto“yes”.

DllPath String ThepathtolocatetheassemblyDLLduringregistration.ThisattributeshouldbeprovidedifDllPathFromGACisnotsetto“yes”.

DllPathFromGAC YesNoType IndicatesthattheDLLpathshouldbeextractedfromtheGACinsteadforbeingprovidedintheDllPathattribute.Ifthisattributeissetto“yes”,thenameoftheassemblycanbeprovidedusingtheAssemblyNameattribute.Or,ifthisAssemblyNameattributeismissing,thenamewillbeextractedfromtheMsiAssemblyNametableusingtheidoftheparentComponentelement.

EventClass YesNoType Indicatesthatthe

Page 525: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

assemblyistobeinstalledasaneventclassDLL.Thisattributeisonlyvalidfornativeassemblies.TheassemblywillbeinstalledwiththeCOM+catalog’sInstallEventClass()function.

PSDllPath String Anoptionalpathtoanexternalproxy/stubDLLfortheassembly.

RegisterInCommit YesNoType Indicatesthattheassemblyshouldbeinstalledinthecommitcustomactioninsteadofthenormaldeferredcustomaction.Thisisnecessarywheninstalling.NETassembliestotheGACinthesameinstallation,astheassembliesarenotvisibleintheGACuntilaftertheInstallFinalizeactionhasrun.

TlbPath String Anoptionalpathtoanexternaltypelibfortheassembly.ThisattributemustbeprovidediftheTypeattributeissetto“.net”.

Type Enumeration Thisattribute'svalueshouldbeoneofthefollowing:native

.net

Yes

Page 526: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Remarks

Wheninstallinganativeassembly,allcomponentscontainedintheassemblymustberepresentedasComPlusComponentelementsunderthiselement.Anycomponentnotlistedwillnotberemovedduringuninstall.

ThefieldsDllPath,TlbPathandPSDllPathareformattedfieldsthatshouldcontainfilepathstothererespectivefiletypes.AtypicalvalueforDllPathforexample,shouldbesomethinglike“[#MyAssembly_dll]”,where“MyAssembly_dll”isthekeyofthedllfileintheFiletable.

Warning:TheassemblynameprovidedintheAssemblyNameattributemustbeafullyspecifiedassemblyname,ifapartialnameisprovidedarandomassemblymatchingthepartialnamewillbeselected.

SeeAlsoPubcaSchema

Version2.0.4820.0

Page 527: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ComPlusAssemblyDependencyElement

Description

Definesadependencybetweentwoassemblies.Thiselementaffectstheorderinwhichassemblesareregistered.Anyassembliesreferencedbythiselementareguarantiedtoberegisteredbefore,andunregisteredafter,theassemblyreferencedbytheparentComPlusAssemblyelement.

WindowsInstallerreferencesNone

ParentsComPlusAssembly

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredRequiredAssembly String Referencetotheidofthe

assemblyrequiredbytheparentComPlusAssemblyelement.

Yes

RemarksItisonlynecessarytoexplicitlyspecifydependenciesbetweenassembliescontainedinthesamepackage(MSIorMSM).Assembliesmergedintoapackagefromamergemodulewillalwaysbeinstalledbeforeanyassembliesspecifiedinthebasepackage.AssembliesmergedinfromdifferentmergemodulesaresequencedusingtheModuleDependencyMSItable.Itisnotpossibletohavecrossdependenciesbetweenmergemodulesorhaveanassemblyinamergemoduledependonanassemblyinthe

Page 528: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

basepackage.

SeeAlsoPubcaSchema

Version2.0.4820.0

Page 529: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ComPlusComponentElement

Description

RepresentsaCOM+componentinanassembly.

WindowsInstallerreferencesNone

ParentsComPlusAssembly

InnerTextNone

ChildrenSequence(min:1,max:1)

1. Choiceofelements(min:0,max:unbounded)ComPlusInterface(min:0,max:unbounded)ComPlusRoleForComponent(min:0,max:unbounded)ComPlusSubscription(min:0,max:unbounded)

Attributes

Name Type DescriptionId String Identifierforthe

element.AllowInprocSubscribers YesNoType CLSID Uuid CLSIDofthe

component.ComponentAccessChecksEnabled YesNoType ComponentTransactionTimeout YesNoType ComponentTransactionTimeoutEnabled YesNoType COMTIIntrinsics YesNoType ConstructionEnabled YesNoType ConstructorString String

Page 530: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

CreationTimeout Int Description String EventTrackingEnabled YesNoType ExceptionClass String FireInParallel YesNoType IISIntrinsics YesNoType InitializesServerApplication YesNoType IsEnabled YesNoType IsPrivateComponent YesNoType JustInTimeActivation YesNoType LoadBalancingSupported YesNoType MaxPoolSize Int MinPoolSize Int MultiInterfacePublisherFilterCLSID String MustRunInClientContext YesNoType MustRunInDefaultContext YesNoType ObjectPoolingEnabled YesNoType PublisherID String SoapAssemblyName String SoapTypeName String Synchronization Enumeration Thisattribute's

valueshouldbeoneofthefollowing:ignored

none

supported

required

requiresNew

Transaction Enumeration Thisattribute'svalueshouldbe

Page 531: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

oneofthefollowing:ignored

none

supported

required

requiresNew

TxIsolationLevel Enumeration Thisattribute'svalueshouldbeoneofthefollowing:any

readUnCommitted

readCommitted

repeatableRead

serializable

SeeAlsoPubcaSchema

Version2.0.4820.0

Page 532: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ComPlusGroupInApplicationRoleElement

Description

Thiselementrepresentsasecuritygroupmembershipinanapplicationrole.Whentheparentcomponentofthiselementisinstalled,theuserwillbeaddedtotheassociatedapplicationrole.ThiselementmustbeadescendentofaComponentelement;itcannotbeachildofaComPlusApplicationRolelocaterelement.ToreferencealocaterelementusetheApplicationRoleattribute.

WindowsInstallerreferencesNone

ParentsComPlusApplicationRole

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String Identifierfortheelement. YesApplicationRole String Iftheelementisnotachildofa

ComPlusApplicationRoleelement,thisattributeshouldbeprovidedwiththeidofaComPlusApplicationRoleelementrepresentingtheapplicationroletheuseristobeaddedto.

Group String ForeignkeyintotheGrouptable. Yes

SeeAlso

Page 533: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

PubcaSchemaVersion2.0.4820.0

Page 534: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ComPlusGroupInPartitionRoleElement

Description

Thiselementrepresentsasecuritygroupmembershipinapartitionrole.Whentheparentcomponentofthiselementisinstalled,thesecuritygroupwillbeaddedtotheassociatedpartitionrole.

WindowsInstallerreferencesNone

ParentsComPlusPartitionRole

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String Identifierfortheelement. YesGroup String ForeignkeyintotheGrouptable. YesPartitionRole String TheidofaComPlusPartitionRole

elementrepresentingthepartitiontheusershouldbeaddedto.

SeeAlsoPubcaSchema

Version2.0.4820.0

Page 535: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ComPlusInterfaceElement

Description

RepresentsaninterfaceforaCOM+component.

WindowsInstallerreferencesNone

ParentsComPlusComponent

InnerTextNone

ChildrenSequence(min:1,max:1)

1. Choiceofelements(min:0,max:unbounded)ComPlusMethod(min:0,max:unbounded)ComPlusRoleForInterface(min:0,max:unbounded)

Attributes

Name Type Description RequiredId String Identifierfortheelement. YesDescription String IID Uuid IIDoftheinterface. YesQueuingEnabled YesNoType

SeeAlsoPubcaSchema

Version2.0.4820.0

Page 536: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ComPlusMethodElement

Description

Representsamethodforaninterface.

WindowsInstallerreferencesNone

ParentsComPlusInterface

InnerTextNone

ChildrenSequence(min:1,max:1)

1. ComPlusRoleForMethod(min:0,max:unbounded)

Attributes

Name Type Description RequiredId String Identifierfortheelement. YesAutoComplete YesNoType Description String Index Int Dispatchidofthemethod.If

thisattributeisnotsetavaluemustbeprovidedfortheNameattribute.

Name String Nameofthemethod.IfthisattributeisnotsetavaluemustbeprovidedfortheIndexattribute.

SeeAlsoPubcaSchema

Version2.0.4820.0

Page 537: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ComPlusPartitionElement

Description

DefinesaCOM+partition.IfthiselementisachildofaComponentelement,thepartitionwillbecreatedinassociationwiththiscomponent.IftheelementisachildofanyoftheFragment,ModuleorProductelementsitisconsideredtobealocater,referencinganexistingpartition.

WindowsInstallerreferencesNone

ParentsNone

InnerTextNone

ChildrenSequence(min:1,max:1)

1. Choiceofelements(min:0,max:unbounded)ComPlusApplication(min:0,max:unbounded)ComPlusPartitionRole(min:0,max:unbounded)ComPlusPartitionUser(min:0,max:unbounded)

Attributes

Name Type Description RequiredId String Identifierfortheelement. YesChangeable YesNoType Deleteable YesNoType Description String Name String Nameofthepartition.This

attributecanbeomittediftheelementisalocater,andavalueisprovidedforthePartitionId

Page 538: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

attribute.PartitionId String Idforthepartition.Thisattribute

canbeomitted,inwhichcaseanidwillbegeneratedoninstall.Iftheelementisalocater,thisattributecanbeomittedifavalueisprovidedfortheNameattribute.

SeeAlsoPubcaSchema

Version2.0.4820.0

Page 539: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ComPlusPartitionRoleElement

Description

DefinesaCOM+partitionrole.Partitionrolescannotbecreated;thiselementcanonlybeusedasalocatertoreferenceanexistingrole.

WindowsInstallerreferencesNone

ParentsComPlusPartition

InnerTextNone

ChildrenSequence(min:1,max:1)

1. Choiceofelements(min:0,max:unbounded)ComPlusGroupInPartitionRole(min:0,max:unbounded)ComPlusUserInPartitionRole(min:0,max:unbounded)

Attributes

Name Type Description RequiredId String Identifierfortheelement. YesName String Nameofthepartitionrole. YesPartition String TheidofaComPlusPartitionelement

representingthepartitiontherolebelongsto.

SeeAlsoPubcaSchema

Version2.0.4820.0

Page 540: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ComPlusPartitionUserElement

Description

Representsadefaultpartitiondefinitionforauser.Whentheparentcomponentofthiselementisinstalled,thedefaultpartitionoftheuserwillbesettothereferencedpartition.

WindowsInstallerreferencesNone

ParentsComPlusPartition

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String Identifierfortheelement. YesPartition String TheidofaComPlusPartitionelement

representingthepartitionthatwillbethedefaultpartitionfortheuser.

User String ForeignkeyintotheUsertable. Yes

SeeAlsoPubcaSchema

Version2.0.4820.0

Page 541: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ComPlusRoleForComponentElement

Description

RepresentsaroleassignmenttoaCOM+component.

WindowsInstallerreferencesNone

ParentsComPlusComponent

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String Identifierfortheelement. YesApplicationRole String Idofthe

ComPlusApplicationRoleelementrepresentingtherolethatshallbegrantedaccesstothecomponent.

Yes

Component String IftheelementisnotachildofaComPlusComponentelement,thisattributeshouldbeprovidedwiththeidofaComPlusComponentelementrepresentingthecomponenttheroleistobeaddedto.

SeeAlsoPubcaSchema

Version2.0.4820.0

Page 542: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ComPlusRoleForInterfaceElement

Description

Representsaroleassignmenttoaninterface.

WindowsInstallerreferencesNone

ParentsComPlusInterface

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String Identifierfortheelement. YesApplicationRole String Idofthe

ComPlusApplicationRoleelementrepresentingtherolethatshallbegrantedaccesstotheinterface.

Yes

Interface String IftheelementisnotachildofaComPlusInterfaceelement,thisattributeshouldbeprovidedwiththeidofaComPlusInterfaceelementrepresentingtheinterfacetheroleistobeaddedto.

SeeAlsoPubcaSchema

Version2.0.4820.0

Page 543: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ComPlusRoleForMethodElement

Description

RepresentsaroleassignmenttoaCOM+method.

WindowsInstallerreferencesNone

ParentsComPlusMethod

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String Identifierfortheelement. YesApplicationRole String Idofthe

ComPlusApplicationRoleelementrepresentingtherolethatshallbegrantedaccesstothemethod.

Yes

Method String IftheelementisnotachildofaComPlusMethodelement,thisattributeshouldbeprovidedwiththeidofaComPlusMethodelementrepresentingthemethodtheroleistobeaddedto.

SeeAlsoPubcaSchema

Version2.0.4820.0

Page 544: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ComPlusSubscriptionElement

Description

DefinesaneventsubscriptionforaCOM+component.

WindowsInstallerreferencesNone

ParentsComPlusComponent

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String Identifierforthe

element.Yes

Component String IftheelementisnotachildofaComPlusComponentelement,thisattributeshouldbeprovidedwiththeidofaComPlusComponentelementrepresentingthecomponentthesubscriptionistobecreatedfor.

Description String Enabled YesNoType EventClassPartitionID String EventCLSID String CLSIDoftheevent

Page 545: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

classforthesubscription.Ifavalueforthisattributeisnotprovided,avalueforthePublisherIDattributemustbeprovided.

FilterCriteria String InterfaceID String MachineName String MethodName String Name String Nameofthe

subscription.Yes

PerUser YesNoType PublisherID String Publisheridforthe

subscription.Ifavalueforthisattributeisnotprovided,avaluefortheEventCLSIDattributemustbeprovided.

Queued YesNoType SubscriberMoniker String SubscriptionId String Idofthesubscription.If

avalueisnotprovidedforthisattribute,anidwillbegeneratedduringinstallation.

UserName String

SeeAlsoPubcaSchema

Version2.0.4820.0

Page 546: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ComPlusUserInApplicationRoleElement

Description

Thiselementrepresentsausermembershipinanapplicationrole.Whentheparentcomponentofthiselementisinstalled,theuserwillbeaddedtotheassociatedapplicationrole.ThiselementmustbeadescendentofaComponentelement;itcannotbeachildofaComPlusApplicationRolelocaterelement.ToreferencealocaterelementusetheApplicationRoleattribute.

WindowsInstallerreferencesNone

ParentsComPlusApplicationRole

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String Identifierfortheelement. YesApplicationRole String Iftheelementisnotachildofa

ComPlusApplicationRoleelement,thisattributeshouldbeprovidedwiththeidofaComPlusApplicationRoleelementrepresentingtheapplicationroletheuseristobeaddedto.

User String ForeignkeyintotheUsertable. Yes

SeeAlso

Page 547: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

PubcaSchemaVersion2.0.4820.0

Page 548: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ComPlusUserInPartitionRoleElement

Description

Thiselementrepresentsausermembershipinapartitionrole.Whentheparentcomponentofthiselementisinstalled,theuserwillbeaddedtotheassociatedpartitionrole.

WindowsInstallerreferencesNone

ParentsComPlusPartitionRole

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String Identifierfortheelement. YesPartitionRole String TheidofaComPlusPartitionRole

elementrepresentingthepartitiontheusershouldbeaddedto.

User String ForeignkeyintotheUsertable. Yes

SeeAlsoPubcaSchema

Version2.0.4820.0

Page 549: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

MessageQueueElement

Description

None

WindowsInstallerreferencesNone

ParentsNone

InnerTextNone

ChildrenSequence(min:1,max:1)

1. MessageQueuePermission(min:0,max:unbounded)

Attributes

Name Type Description RequiredId String YesAuthenticate YesNoType Default:No. BasePriority Integer Component String Journal YesNoType Default:No. JournalQuota Integer Label String YesMulticastAddress String PathName String YesPrivLevel Enumeration Thisattribute'svalue

shouldbeoneofthefollowing:none

body

Page 550: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

optional

Quota Integer ServiceTypeGuid String Transactional YesNoType Default:No.

SeeAlsoPubcaSchema

Version2.0.4820.0

Page 551: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

MessageQueuePermissionElement

Description

None

WindowsInstallerreferencesNone

ParentsMessageQueue

InnerTextNone

ChildrenNone

Attributes

Name Type Description RequiredId String YesChangeQueuePermissions YesNoType DeleteJournalMessage YesNoType DeleteMessage YesNoType DeleteQueue YesNoType GetQueuePermissions YesNoType GetQueueProperties YesNoType Group String MessageQueue String PeekMessage YesNoType QueueGenericAll YesNoType QueueGenericExecute YesNoType QueueGenericRead YesNoType QueueGenericWrite YesNoType ReceiveJournalMessage YesNoType

Page 552: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ReceiveMessage YesNoType SetQueueProperties YesNoType TakeQueueOwnership YesNoType User String WriteMessage YesNoType

SeeAlsoPubcaSchema

Version2.0.4820.0

Page 553: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ToolsPreprocessorCompiler(candle)Linker(light)Decompiler(dark)

Page 554: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Preprocessor

IntroductionOftenyouwillneedtoadddifferentpiecesofyoursetupduringbuildtimedependingonmanyfactorssuchastheSKUbeingbuilt.ThisisdonebyusingconditionalstatementsthatwillfilterthexmlbeforeitissenttotheWiXcompiler(candle).Ifthestatementevaluatestotrue,theblockofxmlwillbesenttocandle.Ifthestatementevaluatestofalse,candlewillneverseethatsectionofxml.

TheconditionalstatementsareBooleanexpressionsbasedonenvironmentvariables,variablesdefinedinthexml,literalvalues,andmore.

Example

Let’sstartwithanexample.Sayyouwanttoincludeafileifyou’rebuildingthe“EnterpriseSKU.”Yourbuildusesanenvironmentvariable%MySku%=Enterprisetospecifythissku.

Whenyoubuildtheenterprisesku,thisfilewillbeincludedinthexmlpassedontocandle.Whenyoubuildadifferentsku,thexmlfromEnterpriseFeature.wxswillbeignored.

<?if$(env.MySku)=Enterprise?>

<?includeEnterpriseFeature.wxs?>

<?endif?>

Page 555: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

IncludeFiles<?include?>Asshownintheexampleabove,filescanbeincludedbyusingtheincludetag.Thefilenamereferencedinthetagwillbeprocessedasifitwerepartofthisfile.

Therootelementoftheincludefilemustbe<Include>.Therearenootherrequirementsbeyondtheexpectedwixschema.Forexample,

<Include>

<FeatureId='MyFeature'Title='My1stFeature'Level='1'>

<ComponentRefId='MyComponent'/>

</Feature>

</Include>

Page 556: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

VariablesAnyvariablecanbetestedforitsvalueorsimplyitsexistence.Customvariablescanalsobedefinedinyourxml.

Threetypesofvariablesaresupported:

$(env._NtPostBld)Getstheenvironmentvariable%_NtPostBld%

$(sys.CurrentDir)Getsthesystemvariableforthecurrentdirectory

$(var.A)GetsthevariableAthatwasdefinedinthisxml

Thepreprocessorevaluatesvariablesthroughouttheentiredocument,includingin<?if?>expressionsandattributevalues.

EnvironmentVariables

Anyenvironmentvariablecanbereferencedwiththesyntax$(env.VarName).Forexample,ifyouwanttoretrievetheenvironmentvariable%_BuildArch%,youwoulduse$(env._BuildArch).Environmentvariablenamesarecase-insensitive.

SystemVariables

WiXhassomebuilt-invariables.Theyarereferencedwiththesyntax$(sys.VARNAME)andarealwaysinuppercase.

CURRENTDIR-thecurrentdirectorywherethebuildprocessisrunningSOURCEFILEPATH–thefullpathtothefilebeingprocessedSOURCEFILEDIR–thedirectorycontainingthefilebeingprocessedNOTE:Allbuilt-indirectoryvariablesare“\”terminated.

Customvariables<?define?>

Ifyouwanttodefinecustomvariables,youneedtousethe<?define?>

Page 557: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

statement.Later,thevariablesarereferredtointhe<?if?>statementswiththesyntax$(var.VarName).Variablenamesarecase-sensitive.

Howtodefinetheexistenceofavariable:<?defineMyVariable?>

Howtodefinethevalueofavariable(Quotesareonlyrequiredifitcontainsspaces):<?defineMyVariable=“HelloWorld”?>

Therightsideofthedefinitioncanalsorefertoanothervariable:<?defineMyVariable=$(var.BuildPath)\x86\bin\?>

Howtoundefineavariable:<?undefMyVariable?>

Page 558: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ConditionalStatementsThereareseveralconditionalstatements,theyinclude:<?if?><?ifdef?><?ifndef?><?else?><?elseif?><?endif?>

Thepurposeoftheconditionalstatementistoallowyoutoincludeorexcludeasegmentofxmlatbuildtime.Iftheexpressionevaluatestotrue,itwillbeincluded.Ifitevaluatestofalse,itwillbeignored.

Theconditionalstatementsalwaysbeginwitheitherthe<?if?>,<?ifdef?>,or<?ifndef?>tags.Theyarefollowedbyanxmlblock,anoptional<?else?>or<?elseif?>tag,andmustendwithan<?endif?>tag.

Expressions(usedin<?if?>and<?elseif?>)

Forexample:<?if[expression]?>

Theexpressionfoundinsidethe<?if?>and<?elseif?>tagsisaBooleanexpression.Itadherestoasimplegrammarthatfollowstheserules:

TheexpressionisevaluatedlefttorightExpressionsarecase-sensitivewiththefollowingexceptions:

EnvironmentalvariablenamesThesekeywords:and,or,not

Allvariablesmustusethe$()syntaxorelsetheywillbeconsideredaliteralvalue.Ifyouwanttousealiteral$(,escapethedollarsignwithasecondone.Forexample,$$(VariablescanbeusedtocheckforexistenceVariablescanbecomparedtoaliteraloranothervariable

Page 559: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Comparisonswith=and!=arestringcomparisons.Comparisonswithinequalityoperators(<,<=,>,>=)mustbedoneonintegers.Ifthevariabledoesn'texist,evaluationwillfailandanerrorwillberaised.

Theoperatorprecedenceisasfollows.Notethat“and”and“or”havethesameprecedence:

""(),$()<,>,<=,>=,=,!=NotAnd,Or

Nestedparenthesisareallowed.Literalscanbesurroundedbyquotes,althoughquotesarenotrequired.Quotes,leading,andtrailingwhitespacearestrippedoffliteralvalues.Invalidexpressionswillcauseanexceptiontobethrown.

Variables(usedin<ifdef?>and<ifndef?>)

Forexample:<?ifdef[variable]?>

For<ifdef?>,ifthevariablehasbeendefined,thisstatementwillbetrue.<ifndef?>worksintheexactoppositeway.

MoreExamplesNotethattheseexampleswillactuallyeachbeano-opbecausetherearen’tanytagsbetweentheifandendiftags.

<?definemyValue="3"?>

<?definesystem32=$(env.windir)\system32?>

<?defineB="goodvar"?>

<?defineC=3?>

<?defineIExist?>

<?if$(var.Iexist)?><?endif?><!--true-->

<?if$(var.myValue)=6?><?endif?><!--false-->

<?if$(var.myValue)!=3?><?endif?><!--false-->

<?ifnot"x"="y"?><?endif?><!--true-->

<?if$(env.systemdrive)=a?><?endif?><!--false-->

<?if3<$(var.myValue)?><?endif?><!--false-->

Page 560: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

<?if$(var.B)="goodVAR"?><?endif?><!--false-->

<?if$(var.A)andnot$(env.MyEnvVariable)?><?endif?><!--false-->

<?if$(var.A)Or($(var.B)And$(var.myValue)>=3)?><?endif?><!--true-->

<?ifdefIExist?><!--true-->

<?else?><!--false-->

<?endif?>

Page 561: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

IterationStatementsThereisasingleiterationstatement,<?foreachvariable-nameinsemi-colon-delimited-list?><?endforeach?>.WhenthisoccursthepreprocessorwillcreateaprivatecopyofthevariablecontextsetthevariableintheforeachstatementtoaniterationonthesemicolondelimitedlistgenerateafragmentwiththevariablesubstitutedTheaffectofthisprocessisthatthefragmentauthoredisjusttemplateforwhichthepreprocessorwilldotheiterationtogeneratetheliteraloffragments.WiXnativelyonlysupportsusingLCIDasavariablenameinthe?foreachstatementhowever,onecanusethepreprocessorextensions(morebelow)toprovidecustomsupport.Thevariablenameinthe?foreachstatementcanbeproceededwitha"var.".Whenthevariableisusedinthefragment,itmustbeproceededwitha"var."

Anfewexamples:

<?foreachLCIDin"1033;1041;1055"?>

<FragmentId='Fragment.$(var.LCID)'>

<DirectoryRefId='TARGETDIR'>

<ComponentId='MyComponent.$(var.LCID)'/>

</DirectoryRef>

</Fragment>

<?endforeach?>

or

<?defineLcidList=1033;1041;1055?>

<?foreachLCIDin$(var.LcidList)?>

<FragmentId='Fragment.$(var.LCID)'>

<DirectoryRefId='TARGETDIR'>

<ComponentId='MyComponent.$(var.LCID)'/>

</DirectoryRef>

</Fragment>

<?endforeach?>

or

Page 562: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

filename:ExtentOfLocalization.wxi

<Include>

<?defineLcidList=1033;1041;1055?>

</Include>

and

<?includeExtentOfLocalization.wxi?>

<?foreachLCIDin$(var.LcidList)?>

<FragmentId='Fragment.$(var.LCID)'>

<DirectoryRefId='TARGETDIR'>

<ComponentId='MyComponent.$(var.LCID)'/>

</DirectoryRef>

</Fragment>

<?endforeach?>

AnalternativetotheforeachprocesswouldbetowritethetemplateWiXfragmentintoaseparatefileandhaveanotherprocessgeneratetheauthoringthatwillbepassedtoWiX.Thegreatestmeritofthisalternativeisthatit'seasiertodebug.

Page 563: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ExtensionsWiXhassupportforpreprocessorextensionsviathePreprocessorExtensionclass.ThePreprocessorExtensioncanprovidecallbackswithcontextatforeachinitialization,variableevaluation,andthelastcallbeforeinvokingthecompiler(forfullcustompreprocessing).Seethepreprocessor.cssourcefileandthepreprocessorextension.cssourcefileformoreinformation.

Page 564: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Compiler(candle)TheWindowsInstallerXMLcompilerisexposedbycandle.exe.candleisresponsibleforpreprocessingtheinput.wxsfilesintovalidwell-formedXMLdocumentsagainsttheWiXschema,wix.xsd.Then,eachpost-processedsourcefileiscompiledintoa.wixobjfile.

Thecompilationprocessisrelativelystraightforward.TheWiXschemalendsitselftoasimplerecursivedescentparser.Thecompilerprocesseseachelementinturncreatingnewsymbols,calculatingthenecessaryreferencesandgeneratingtherawdataforthe.wixobjfile.

Thesecondversionofcandleisnotsignificantlydifferentfromthefirstimplementation.Anychangeswereeithermadetoenablethenewsymbol/referencelinkingorbasedonfeedbackfromcustomers.Someofthedifferencesbetweenversionsinclude:thenewobjectfileformatisXMLinsteadofMSI,modularizationofprimarykeysnowhappensatlinktime,andbinarystreamsareimportedatlinktime.

Page 565: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Linker(light)TheWindowsInstallerXMLlinkerisexposedbylight.exe.lightisresponsibleforprocessingoneormore.wixobjfiles,retrievingmetadatafromvariousexternalfilesandcreatingaWindowsInstallerdatabase(MSIorMSM).Whennecessary,lightwillalsocreatecabinetsandembedstreamsinthecreatedWindowsInstallerdatabase.

Thelinkerbeginsbysearchingthesetofobjectfilesprovidedonthecommandlinetofindtheentrysection.Ifmorethanoneentrysectionisfound,lightfailswithanerror.ThisfailureisnecessarybecausetheentrysectiondefineswhattypeofWindowsInstallerdatabaseisbeingcreated,aMSI(<Product/>)orMSM(</Module/>).Itisnotpossibletocreatetwodatabasesfromasinglelinkoperation.

Whilethelinkerwasdeterminingtheentrysection,thesymbolsdefinedineachobjectfilearestoredinasymboltable.Aftertheentrysectionisfound,thelinkerattemptstoresolveallofthereferencesinthesectionbyfindingsymbolsinthesymboltable.Whenasymbolisfoundinadifferentsection,thelinkerrecursivelyattemptstoresolvereferencesinthenewsection.Thisprocessofgatheringthesectionsnecessarytoresolveallofthereferencescontinuesuntilallreferencesaresatisfied.Ifasymbolcannotbefoundinanyoftheprovidedobjectfiles,thelinkerabortsprocessingwithanerrorindicatingtheundefinedsymbol.

Afterallofthesectionshavebeenfound,complexandreversereferencesareprocessed.ThisprocessingiswhereComponentsandMergeModulesarehookedtotheirparentFeaturesor,inthecaseofMergeModules,ComponentsareaddedtotheModuleComponentstable.ThereversereferenceprocessingaddstheappropriateFeatureidentifiertothenecessaryfieldsforelementslike,Shortcut,Class,andTypeLib.

Onceallofthereferencesareresolved,thelinkerprocessesalloftherowsretrievingthelanguage,version,andhashforreferencedfiles,calculatingthemedialayout,andincludingthenecessarystandardactionstoensureasuccessfulinstallationsequence.ThispartoftheprocessingtypicallyendsupgeneratingadditionalrowsthatgetaddedassociatedwiththeentrysectiontoensuretheyareincludedinthefinalWindowsInstallerdatabase.

Page 566: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Finally,lightworksthroughthemechanicsofgeneratingIDTfilesandimportingthemintotheWindowsInstallerdatabase.Afterthedatabaseisfullycreated,thefinalpostprocessingisdonetomergeinanyMergeModulesandcreateacabinetifnecessary.TheresultisafullyfunctionalWindowsInstallerdatabase.

Page 567: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

DarkDarkisatoolforconvertinganMSIorMSMfileintoaWiXsourcefile.ThistoolisveryusefulforgettingallyourauthoringintoaWiXsourcefilewhenyouhaveanexistingMSIorMSM.However,youwillthenneedtotweakthisfiletoaccomodatedifferentlanguagesandbreakingthingsintofragments.

Page 568: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

VisualStudioPackage(Votive)VotiveisthecodenamefortheWiXVisualStudiopackagethatallowsyoutoeasilycreateWiXprojects,editWiXfilesusingIntelliSense,andcompile/linkyourproject.

Page 569: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

InstallationToinstallthepackageyoumustrunVotive.msi,whichcomesbundledwiththeWiXbinariesandgetsbuiltaspartoftheWiXsource.

IfyouhavetheVSIPSDKinstalled,youcanbuildthethedebugversionofVotive.msi,whichwillinstallVotiveintotheExperimentalHiveofVisualStudio.ThiswillallowyourretailversionofVisualStudiotocontinuetoworkasbefore(seethe"DevelopingforVotive"topicforanexplanationoftheexperimentalhive).

Page 570: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

DevelopingforVotiveIfyouwanttocontributecodetotheVotiveprojectordebugVotive,youmustdownloadandinstalltheVSIPSDK,availableathttp://www.vsipdev.com/downloads/.YouwillneedtheVSIPSDK2003andtheVSIPSDK2003Extras,installedinthatorder.TheSDKisfairlynon-invasiveandwillcreatean"ExperimentalHive"intheregistrythatwillkeepyourretailversionofVisualStudio2003unaffected.

TostartdebuggingVotive,setyourbreakpointsthenjusthit"F5"intheWix.slnforVisualStudio.ThecustombuildactionsintheVotiveprojectwillsetupandregisterVotiveontheexperimentalhive,sorunningtheVotive.msiisnotrequired,norsuggested.

Page 571: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

GettingStartedRobMenschinghaswrittenanexcellentMSDNarticleonusingVotivetogetstartedinWiX.

Page 572: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WiXFilesAllinputfilesandintermediatefilesforWiXarexmlfiles.OutputisintheformofstandardWindowsInstallerdatabasefiles.

Sourcefiles(.wxsand.wxi)arecompiled,producingobjectfiles(.wixobj).TheseobjectsfilesarethenconsumedbythelinkerwhichproducesWindowsInstallerdatabasefiles(.msior.msm).ThisisanalogoustotheC++modelofcompilingsourcecodetoobjectfiles,thenlinkingtoproduceexecutables.

InputFilesIncludeFiles(.wxs)SourceFiles(.wxs)IntermediateFilesObjectFiles(.wixobj)OutputFilesInstallerDatabase(.msi)MergeModule(.msm)

Page 573: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

IncludeFiles(.wxi)A.wxifileisanalogousto.hfilesforC++.Therootelementofthisfileis<Include/>.Everythingundertherootelementwillbeinsertedwhenthisfileisincludedinanothersourceorincludefile.

Page 574: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

SourceFiles(.wxs)All.wxsfilesarewell-formedXMLdocumentsthatcontainasinglerootelementnamed<Wix/>.TherestofthesourcefilemayormaynotadheretotheWiXschemabeforepreprocessing.However,afterbeingpreprocessedallsourcefilesmustconformtotheWiXschemaortheywillfailtocompile.

Theroot<Wix/>elementcancontainatmostoneofthefollowingtwoelementsaschildren:<Product/>,<Module/>.However,therecanbeanunboundednumber<Fragment/>elementsaschildrenoftheroot<Wix/>element.Whenasourcefileiscompiledintoanobjectfile,eachinstanceoftheseelementscreatesanewsectionintheobjectfile.Therefore,thesethreeelementsareoftenreferredtoassectionelements.

Itisimportanttonote,thattherecanbeonlyone<Product/>or<Module/>sectionelementpersourcefilebecausetheyarecompiledintospecialsectionscalledentrysections.Entrysectionsareusedasstartingpointsinthelinkingprocess.Sections,entrysections,andtheentirelinkingprocessaredescribedingreaterdetaillaterinthisdocument.

ThechildrenofthesectionelementsdefinethecontentsoftheWindowsInstallerdatabase.You’llrecognize<Property/>elementsthatmaptoentriesinthePropertytableandahierarchyof<Directory/>elementsthatbuilduptheDirectorytable.Mostelementscontainan“Id”attributethatwillactastheprimarykeyfortheresultingrowintheWindowsInstallerdatabase.Note,inthefirstreleaseoftheWiXschematheprimarykeywasrepresentedbythetextoftheelement.Thislocationfortheprimarykeywasundesirableforseveralreasonsandhasbeenmovedtothe“Id”attribute.Inmostcases,the“Id”attributealsodefinesasymbolwhenthesourcefileiscompiledintoanobjectfile.

Page 575: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ObjectFiles(.wixobj)A.wixobjfileiscreatedbythecompilerforeachsourcefilecompiled.The.wixobjfileisanXMLdocumentthatfollowstheobjects.xsdschemadefinedintheWiXproject.Asstatedabovethe.wixobjfilecontainsoneormoresectionsthat,inturn,containsymbolsandreferencestoothersymbols.

Whilethesymbolsandreferencesarearguablythemostimportantpiecesofdatainthe.wixobjfile,theyarerarelythebulkoftheinformation.Instead,themajorityofmost.wixobjfilesarecomposedof,andelementsthatprovidetherawdatatobeplacedintheWindowsInstallerdatabase.Inmanycases,thelinkerwillnotonlyprocessthesymbolsandreferencesbutalsouseandupdatetherawdatafromthe.wixobjfile.

Itisinterestingtonotethattheobjectfileschema,objects.xsd,usescamelcasingwherethesourcefileschema,wix.xsd,usesPascalcasing.Thiswasaconsciouschoicetoindicatethattheobjectfilesarenotintendedtobeeditedbytheuser.Infact,allschemasthatdefinesdatatobeprocessedonlybytheWiXtoolsusecamelcasing.

Page 576: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WindowsInstallerInstallationPackagesTheinstallationpackagefile(.msi)isthebasisforvehiclefordeliveringsetuplogictotheWindowsInstaller.Formoreinformationonmsifiles,pleaseseetheWindowsInstallerhelpfile(msi.chm)orvisitonlineatMSDN.

Page 577: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WindowsInstallerMergeModulesThemergemodulefile(.msm)isusedforsharingsetuplogicamongstdifferentgroups.Basically,amergemodulecanbecreatedbyonegroup,thenmergedintoanothergroup'sinstallationpackage.Formoreinformationonmsifiles,pleaseseetheWindowsInstallerhelpfile(msi.chm)orvisitonlineatMSDN.

Page 578: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

BuildingWiXSimplyrun"make.bat"intherootoftheWiXproject.Thiswillbuildintoarelease\debugdirectorybydefault.Specifying"make.batship"willcreateshipbinariesinrelease\ship.IfyouinstalledVS.NETtoanonstandarddirectory,specify"make.batdebugfullpathto\devenv.com"tobuild.

InordertofullybuildWiX,youmusthavethefollowingFrameworksandSDKsinstalled:

NAntversion0.85rc3orhigher.NETFramework1.1andSDK.NETFramework2.0(SDKisoptional)PlatformSDK(version3790.1830orhigher)

CoreSDKWebWorkshop(IE)SDKInternetInformationServer(IIS)SDKMicrosoftDataAccessServices(MDAC)SDKMicrosoftWindowsInstallerSDK

OneofthefollowingVisualStudio2005Editions:VisualC++ExpressEditionProfessionalorhigherwithVisualC++installed

HTMLHelpSDK1.4orhigher

TobuildSconceandVotive,youmusthavethefollowingSDKsinstalled:

VisualStudioPartnerIntegrationProgram(VSIP)SDK2003VSIPSDK2003ExtrasBothareavailableathttp://msdn.microsoft.com/vstudio/partners/default.aspx

ToinstallVotiveonVisualStudio2005,youmusthavetheStandardeditionorhigher.

TosuccessfullybuildtheWiXMSBuildtasks,youneedtomodifyNAnt.exe.configfiletosupportthereleaseversionofthe.NETFramework(insteadofthebeta1releasesupportedinNAnt0.85rc3).MakeabackupcopyofNant.exe.configandsearchforthefollowing

Page 579: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

<framework>element:

<framework

name="net-2.0"

...

Replaceitwiththefollowingelement:

<framework

name="net-2.0"

family="net"

version="2.0"

description="Microsoft.NETFramework2.0"

runtimeengine=""

sdkdirectory="${path::combine(sdkInstallRoot,'bin')}"

frameworkdirectory="${path::combine(installRoot,'v2.0.50727')}"

frameworkassemblydirectory="${path::combine(installRoot,'v2.0.50727')}"

clrversion="2.0.50727"

>

Page 580: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Blogs

RobMensching's"whensetupisn'tjustxcopy"RobMenschingisthe"benevolentdictator"fortheWindowsInstallerXMLtoolset.Hemaintainsablogcalled"whensetupisn'tjustxcopy".Selectedblogentriesarereprintedherewithhispermission.

Page 581: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

RobMensching's"whensetupisn'tjustxcopy"RobMenschingisthe"benevolentdictator"fortheWindowsInstallerXMLtoolset.Hemaintainsablogcalled"whensetupisn'tjustxcopy".Selectedblogentriesarereprintedherewithhispermission.

2004/04/05-WindowsInstallerXML(WiX)toolsethasreleasedasOpenSourceonSourceForge.net.2004/04/14-SoyouwanttobeaWindowsInstallerXMLdeveloper?2004/05/11-Sections,SymbolsandReferencesintheWindowsInstallerXML(WiX)toolset.2004/05/16-Myphilsophicalmusingsaboutbuildingsetupforsoftware.2004/05/20-VBScript(andJscript)MSICustomActionssuck.2004/11/22-LocalizationandyourMSIfile.2004/11/30-CreatinglocalizedMSIfilesusingWiXtoolsetand.wxlfiles.

Page 582: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WindowsInstallerXML(WiX)toolsethasreleasedasOpenSourceonSourceForge.netTheWindowsInstallerXml(WiX)toolset(pronounced“wickstoolset”)appearstohavefinishedpropagatingaroundtheSourceForge.netCVSservers,soIcanfinallystartwritingthisblogentry.Aspromisedinmybloghere,here,here,here,andheretheWiXtoolsetandallofitssourcecodehasbeenreleasedsothatyoucanbuildWindowsInstallerdatabases(MSIandMSMfiles)thesamewaymostgroupsinsideMicrosoftdo.However,afunnythinghappenedonthewaytotheforum.WiXbecamethefirstprojectfromMicrosofttobereleasedunderanOSSapprovedlicense,namelytheCommonPublicLicense.

BeforeeveryonegetssidetrackedbytheOpenSourceimplications,let’stalkaboutexactlywhatWiXis.WiXisatoolsetcomposedofacompiler,alinker,alibtoolandadecompiler.Thecompiler,calledcandle,isusedtocompileXMLsourcecodeintoobjectfilesthatcontainsymbolsandreferencestosymbols.Thelinker,calledlight,isfedoneormoreobjectfilesandlinksthereferencesintheobjectfilestotheappropriatesymbolsinotherobjectfiles.Lightisalsoresponsibleforcollectingallofthebinaries,packagingthemappropriately,andgeneratingthefinalMSIorMSMfile.Thelibtool,calledlit,isanoptionaltoolthatcanbeusedtocombinemultipleobjectfilesintolibrariesthatcanbeconsumedbylight.Finally,thedecompiler,calleddark,cantakeexistingMSIandMSMfilesandgenerateXMLsourcecodethatrepresentsthepackage.

So,letmestepthrougharealquickexamplebeforesendingyouofftotheSourceForgeprojecttogetthebinariesandsourcecode.First,thebelowisacompletesourcefilethatwillcreateaMSIfilethatinstallsatest.NETAssemblyintothe“ProgramFiles\TestAssembly”directory.

<?xmlversion='1.0'?>

<Wixxmlns='http://schemas.microsoft.com/wix/2003/01/wi'>

<ProductId='000C1109-0000-0000-C000-000000000046'Name='TestAssemblyProduct'Language='1033'Version='0.0.0.0'Manufacturer='MicrosoftCorporation'>

<PackageId='000C1109-0000-0000-C000-000000000046'Description='TestAssemblyinaProduct'Comments='Testfrom:wix\examples\test\assembly\product.wxs'InstallerVersion='200'Compressed='yes'/>

<MediaId='1'Cabinet='product.cab'EmbedCab='yes'/>

Page 583: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

<DirectoryId='TARGETDIR'Name='SourceDir'>

<DirectoryId='ProgramFilesFolder'Name='PFiles'>

<DirectoryId='TestAssemblyProductDirectory'Name='testassm'LongName='TestAssembly'>

<ComponentId='TestAssemblyProductComponent'Guid='00030829-0000-0000-C000-000000000046'>

<FileId='TestAssemblyProductFile'Name='assembly.dll'essembly='.net'KeyPath='yes'DiskId='1'src='$(env.WIX)\examples\data\assembly.dll'/>

</Component>

</Directory>

</Directory>

</Directory>

<FeatureId='TestAssemblyProductFeature'Title='Test"ssemblyProductFeature'Level='1'>

<ComponentRefId='TestAssemblyProductComponent'/>

</Feature>

</Product>

</Wix>

Now,tobuildtheMSIfilewecompileandlinkthesourcecodelikeso:

E:\wix\examples\test\assembly>candle.exeproduct.wxs

Microsoft(R)WindowsInstallerXmlCompilerversion2.0.1510.0

Copyright(C)MicrosoftCorporation2003.Allrightsreserved.

product.wxs

E:\wix\examples\test\assembly>light.exeproduct.wixobj

Microsoft(R)WindowsInstallerXmlLinkerversion2.0.1510.0

Copyright(C)MicrosoftCorporation2003.Allrightsreserved.

E:\wix\examples\test\assembly>dir

VolumeindriveEisNewVolume

VolumeSerialNumberis8AC4-6AD2

DirectoryofE:\wix\examples\test\assembly

04/05/200405:04<DIR>.

04/05/200405:04<DIR>..

02/23/200409:55891module.wxs

04/05/200405:0452,736product.msi

04/05/200405:044,976product.wixobj

02/23/200409:551,281product.wxs

4File(s)59,884bytes

2Dir(s)90,014,191,616bytesfree

E:\wix\examples\test\assembly>

I’lldiscussmorecomplicatedexamplesinfutureblogentriesandupdatethedocumentation(WiX.chm)bydistillinganydiscussionshere.Whilewe’reonthetopicofdocumentation,let’sdiscusswhereWiXisinits

Page 584: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

productlife-cycle.

Firstofall,IwouldsaythattheWiXtoolsetisprettyclosetoBeta2quality.Thatmeanscorescenarios(compiling/linking)areverysolid,lesscorescenarios(lib’ing/decompiling)stillhavesomebugs,andthedocumentationleavesmuchtobedesired.PartofmymotivationforpushingthetoolsetexternaltoMicrosoftistoencourageme(andmaybefindothers)toupdatethedocumentation.I’lltalkmoreaboutthatinfutureblogentries.

ThatsaidproductionqualityMSIandMSMfilescanbeproducedfromtheWiXtoolsettoday.Internally,teamssuchasOffice,SQLServer,BizTalk,VirtualPC,InstantMessenger,severalmsn.comproperties,andmanyothersuseWiXtobuildtheirMSIandMSMfilestoday.Whensomeoneencountersabug,thecommunitytrackstheissuedownandfixesit.Now,viaSourceForge.net,youhaveanopportunitytobeapartofthecommunityaswell.

Now,let’stalkaboutwhyWiXwasreleasedasOpenSource.First,workingonWiXhasneverbeenapartofmyjobdescriptionorreviewgoals.Iworkontheprojectinmyfreetime.Second,WiXisaverydeveloperorientedprojectandthusprovidingsourcecodeaccessincreasesthepoolofavailabledevelopers.Today,therearefivecoredevelopers(Robert,K,Reid,andDerek,thankyou!)regularlyworkingonWiXintheirfreetimewithanothertensubmittingfixesoccasionally.Finally,manypartsoftheOpenSourcedevelopmentprocessappealtome.Backin1999and2000,IdidnotfeelthatmanypeopleinsideMicrosoftunderstoodwhattheOpenSourcecommunitywasreallyaboutandIwantedtoimprovethatunderstandingbyprovidinganexample.

Afterfourandahalfyearsofpart-timedevelopment,theWiXdesign(andmostofthecode)maturedtoapointwhereIwascomfortabletryingtoreleaseitexternally.So,lastOctoberIstartedlookingforameanstoreleasenotonlythetoolsbutthesourcecodeaswell.IthoughtGotDotNetwastheplace.However,atthattime,noneoftheexistingSharedSourcelicenseswereflexibleenoughtoacceptcontributionsfromthecommunity.Then,inFebruary,IwasintroducedtoStephenWalliwhowasalsoworkingtoimproveMicrosoft’srelationshipwiththeOpenSourcecommunity.Fortunately,StephenwasmuchfartheralongthanIandhadthestep-by-stepplanhowtoreleaseanOpenSourceprojectfromMicrosoftusinganapprovedOSSlicense.

Page 585: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Today,viaWiXonSourceForge,yougettoseetheresultsofmanypeople’seffortstoimproveMicrosoftfromtheinsideout.I’mnotexactlysurewhatisgoingtohappennextbutI’msuretherearequiteafewpeoplewhoareinterestedtoseewherethisleads.Personally,allIhopeisthatifyoufindtheWiXtoolsetusefulthenyou’lljointhecommunityandhelpusimprovethetoolset.

Copyright©RobMensching

Page 586: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

SoyouwanttobeaWindowsInstallerXMLdeveloper?PeoplehavestartedexpressinginterestinjoiningtheWindowsInstallerXMLtoolsetdevelopmentcommunitysoIfiguredIshouldgetsomeadministrativedetailsoutoftheway.IfyouareinterestedincontributingcodetotheWindowsInstallerXMLtoolset,itisveryimportanttoreadthroughallfourofthesetopics.

1)TheWindowsInstallerXMLtoolsetcopyrightisheldbyMicrosoft.

IwanttobeveryupfrontaboutthecopyrightoftheWindowsInstallerXMLtoolsetandhowitaffectsusasdevelopers.MicrosoftisthesponsoroftheWindowsInstallerXMLproject.BeforeacontributioncanbeacceptedintotheWiXproject,thelawyershaveaskedthatweassignourrightstothosecontributionstoMicrosoft.Byhavingdeveloperssignacopyrightassignmentagreement,Microsoftcanmaintainsinglelegalcontroloftheproject.ThatsinglelegalcontrolenablesMicrosofttobestdefendtheprojectinthefutureiftherewaseveranysortoflegalchallenge.

Beforejumpingtoanyconspiracytheories,pleasenotethatthiscopyrightassignmentisexactlythesameprocesstheFreeSoftwareFoundationhasyougothroughifyouworkonaprojecttheysponsor.Also,inClause5oftheWindowsInstallerXMLassignmentagreementyourrightstoyourcontributionareexplicitlygrantedbacktoyou.Ifyouwouldlikeacopyoftheassignmentagreement,[email protected].

2)TheWindowsInstallerXMLprojectisabenevolentdictatorship.

Inordertoensureconsistencyintheschemaandmaintainthequalityofthetools,theWindowsInstallerXMLproject’sCVStreeislockeddown.Inotherwords,commitstothecode-basebythegeneralpopulaceareprevented.Ifyouattemptcommitchanges,CVSwillinformyouthatyouhave"InsufficientKarmatocompletethetask."

Tohaveyourcontributionsubmittedtotheproject,pleasesubmitanassignmentagreementasdescribedabove(youonlyneedtodoso

Page 587: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

once)thensendyourcodedifftoWiX-devs@lists.sourceforge.net.ThedeveloperstherewillreviewthechangesandsomeonewillapplythemtoCVSasquicklyaspossible.

3)TheWindowsInstallerXMLcommunityisameritocracy.

ThoseindividualsinthecommunitywhodemonstrateanunderstandingofthecodebasebyactivelyparticipatingontheWindowsInstallerXMLmailinglistsandconsistentlysubmittinghighqualitydiffswillbegivena“Karmaboost”.WithenoughKarmayouwillearntheabilitytocommitchangesdirectlytotheWindowsInstallerXMLproject’sCVStree.

Commitprivilegesshouldnotbetakenlightly.ItisveryimportantthattheWiXtoolsetmaintainahighqualitybarbecausemanypeopledependonthetoolsworkingproperly.Veryfewdevelopersearntheseprivileges.Infact,inoverfouryearsofdevelopment,onlyfivedevelopershaveearnedcommitprivilegestotheinternalWindowsInstallerXMLproject.

4)TheWindowsInstallerXMLdevelopersareallvolunteers.

Everyone(tothebestofmyknowledge)thatworksontheWindowsInstallerXMLtoolsetdoessoinhisorherfreetime.Pleasekeepthatfactinmindwhenaskingforhelp,submittingcodediffs,orinteractingwithanymembersoftheproject.WeallwanttohelptomaketheWindowsInstallerXMLtoolsetassolidatoolaspossible,butsometimes“realjobs”and“significantothers”havetotakeahigherprecedence.

Ifworsecomestoworse,youhaveaccesstothesourcecode.Tryreadingforawhile.:)

Copyright©RobMensching

Page 588: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Sections,SymbolsandReferencesintheWindowsInstallerXML(WiX)toolset.Thusfar,itseemseveryonehasbeencreatingonesingle.wxssourcefilefortheirentireMSIorMSMfile.Thisisunderstandable,sincethe"GettingStarted"topicintheWiX.chmonlyshowsone.wxsfileperMSIandMSM.AndifyoustartedlearningWiXbytryingtodecompileanexistingMSIorMSM,darkwillonlygenerateasingle.wxssourcefileforyourMSIorMSMfile.ButtherealpoweroftheWiXtoolsetonlybecomesapparentwhenyoubreakupyoursetupintodifferentsectionsthenletthesymbolsandreferencestieyoursourcefilesbackintoacohesivepackage.

I'llstartbyshowingyoutheWiXsourcecodethenI'lltrytoexplainwhatitdoes.Let'sassumewehaveafilecalled"product.wxs"thatlookslikethis:

<?xmlversion='1.0'?>

<Wixxmlns='http://schemas.microsoft.com/wix/2003/01/wi'>

<ProductId='00000000-0000-0000-0000-000000000000'Name='MyProduct'Language='1033'

Version='0.0.0.0'Manufacturer='MyCorporation'>

<PackageDescription='MyProduct'Comments='MyProductThatIsJustAnExample'

InstallerVersion='200'Compressed='yes'/>

<MediaId='1'Cabinet='product.cab'EmbedCab='yes'/>

<DirectoryId='TARGETDIR'Name='SourceDir'>

<DirectoryId='ProgramFilesFolder'Name='PFiles'>

<DirectoryId='MyDirectory'Name='MyDir'LongName='MyDirectory'/>

</Directory>

</Directory>

<FeatureId='MyFeature'Title='MyProductFeature'Level='1'>

<ComponentRefId='MyComponent'/>

</Feature>

</Product>

</Wix>

WhatI'vedefinedaboveistheskeletonofaMSIproduct.Atthetopistherequired<Product/>and<Package/>elementsthatprovidetheidentificationinformationforthispackagetotheWindowsInstaller.ThenIprovidethe<Media/>elementthatdefineshowanyfileResourcesthat

Page 589: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

areapartofthispackageshouldbelaidout.Inthiscase,IwantallthefilescompressedintoasinglecabinetandthatcabinetstoredasastreaminsidetheMSIfile.Next,IprovidemybarebonesDirectorytree.Finally,thispackageisfinishedoffwithaverysimpleFeaturetreewithoneFeaturecontainingoneComponent.

"Hey,wait!Where'stheComponentdefinitionfor'MyComponent'?"youmightask.BeforeIcananswerthatveryimportantquestionIneedtoaddacouplemoreexamplesfiles.First,let'saddanotherWiXsourcefilecalled"fragment.wxs"thatlookslikethis:

<?xmlversion="1.0"?>

<Wixxmlns='http://schemas.microsoft.com/wix/2003/01/wi'>

<FragmentId='MyFragment'>

<DirectoryRefId='MyDirectory'>

<ComponentId='MyComponent'Guid='00000000-0000-0000-0000-00000000000'DiskId='1'>

<FileId='MyFile'Name='myfile.txt'LongName='MyFile.txt'src='present.txt'/>

</Component>

</DirectoryRef>

</Fragment>

</Wix>

Ifweskipthe<Fragment/>elementtherestoftheWiXcodeshouldlookprettyfamiliar.I'vedefinedaComponentnamed"MyComponent"(withabogusGUID)inthe"MyDirectory"DirectoryandnotedthatanyfilescontainedbythisComponentwillbeapartoftheMediawithDiskIdlabeled1.ThenIdeclarethattheComponentcontainsasingletextfile.Forgoodmeasure,let'ssaythatthereisafilecalled"present.txt"thatlooksalotlikethis:

Eachdayisagift.That'swhywecallitthepresent.

Before(finally)explainingindetailhowthisallworks,let'sfirstprovethatitworks.Hereistheoutputfrommycompilationandlinking.

C:\example>candle.exeproduct.wxsfragment.wxs

Microsoft(R)WindowsInstallerXmlCompilerversion2.0.1621.0

Copyright(C)MicrosoftCorporation2003.Allrightsreserved.

product.wxs

fragment.wxs

C:\example>light.exeproduct.wixobjfragment.wixobj-oproduct.msi

Microsoft(R)WindowsInstallerXmlLinkerversion2.0.1621.0

Copyright(C)MicrosoftCorporation2003.Allrightsreserved.

Page 590: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

C:\example>

Nooutputfromthelightmeanstherewerenoerrorssoyoushouldnowhavea"product.msi"filesittinginthesamedirectorywithallyourotherfiles.YoucaninstallthatMSIandseeitshowupinyourAdd/RemoveProgramsifyoulike,buttrustmethisallworks.

"Buthowdiditwork?"

Well,whencandlecompilesyoursourcecodeitcreatesanobjectfile(.wixobj)thathaszeroormoresectionsinit.Theelementsthatarechildrenofthe<Wix/>element(namely:<Product/>,<Module/>,and<Fragment/>)defineanewsection.Sointheexampleabove,product.wxsdefinesonesectionandfragment.wxsdefinesanother.

Sectionscontaindataandreferences.Mostofthedatainthesectionisinformationthatwillendupinthefinalpackage(MSIfile).Someofthedataisjustinformationneededbythelinkerorbindertobuildthepackage.Forexample,the<File/>elementshownabovecontainsthenecessaryinformationtodefineafileResourceinthepackageaswellasthe"src"attributethattellsthebinderwheretofindthephysicalfileondisksothatthefilecanbeputintoacabinetandinsertedintothepackage.Finally,thedatainthesectionisusedtodefineallofthesymbolsforthesection.

AsymbolistheuniqueidentifierforaWiXelementinyour.wxssourcefile.Ingeneral,thesymbolforanelementmapstotheprimarykeycolumnsoftheMSItabletheWiXelementrepresents.Forexample,the<File/>element's"Id"attributeinWiXmapstotheMSIFiletable'sFilecolumnwhichistheprimarykeycolumn.Itisprettysafetoassumethatall"Id"attributesintheWiXschemarepresentsymbols.IfIwastotakeastabatthesymbolsdefinedintheexamplesourcefilesabove,Ithinkthiswouldbethelist:

product.wxs

Product:00000000-0000-0000-0000-000000000000

Media:1

Directory:TARGETDIR

Directory:ProgramFilesFolder

Directory:MyDirectory

Feature:MyFeature

Page 591: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

fragment.wxs

Fragment:MyFragment

Componet:MyComponent

File:MyFile

Ofcourse,Imightbemissingoneortwo,buthopefullyyougettheideaofwhatthecompilerthinksisasymbol.Ifyoureallywanttoknowforsure,takealookatthetables.xmlfileforthecolumnsmarked"symbol='yes'".

Symbolsexisttobereferenced.References,theonlythingotherthandatainasection,pointatsymbolsinthecurrentsectionorothersections.Thecompilercreatesreferencestosymbolswhennecessaryandstoresthereferencesatthetopofthesectionintheobjectfile.Obviouslyelementslike<ComponentRef/>or<DirectoryRef/>createreferencestoComponentsandDirectoriesrespectively,butthecompilerwillcreatereferencesinothercasesaswell.Forexample,the<Component/>element's"DiskId"attributecreatesreferencetoa<Media/>element's"Id"attribute.Since,the.wixobjfilecontainsthereferencesIcaneasilylistthemhereforyou:

product.wixobj

<referencetable="Component"symbol="MyComponent"/>

fragment.wixobj

<referencetable="Directory"symbol="MyDirectory"/>

<referencetable="Media"symbol="1"/>

Note:Ihavepurposelyskippedoverthecomplexreferencediscussionhere,butI'llcomebacktothatinsomefutureblogentry.

Thusfar,I'veonlytalkedaboutthecompiler.Nowthatweknowthebasicsbehindsections,symbolsandreferenceswecantalkaboutthedetailsofthelinker.ThisiswheretherealpoweroftheWiXtoolsetkicksin.IalsobelievethelinkerdifferentiatestheWiXtoolsetfromtheothertoolsIhaveseenand/orheardofthatcanbuildMSIfilestoday.

Thelinkerstartsbyprocessingallofthesectionsintheprovidedobjectfileslookingforanentrysection.Todaytherearetwotypesofentrysections:productsandmodules.Asyouwouldexpect,whenthelinkerencountersaproductentrysectionitknowsitisgeneratingaMSI.Ifthelinkerencountersamoduleentrysectionthelinkerknowsitiscreatinga

Page 592: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

MSMfile.Ifthelinkercomesacrosstwoentrysectionsintheobjectfiles,itgivesupwithanerrorsincethelinkercannotgeneratetwooutputsatthesametime.Considertheentrysectiontobelikethe"main()"functioninaCorC++program.That'swherethelinkerstartstheprogramsexecution.

Whiletheentrysectionisbeinglocated,thelinkerisalsobuildingupthetableofsymbolsfromeverysectionfromtheprovidedobjectfiles.Ifanysymbolsarefoundtobeduplicated,thelinkerwillgiveupwithanerror.IntheC/C++linker,thiserrorconditionisverysimilartothecasewhereyoudefinethesamevariableinthesamescope.Onceallofthesectionshavebeenprocessedandasingleentrysectionisfound,thelinkerstartsresolvingreferencesstartingattheentrysection.

Whenthecurrentsectionhasareferencethatresolvestoasymbolinanothersectiontheothernewsection'sreferencesareaddedtothelisttoberesolved.Theprocesscontinuesuntilallreferencesareresolved.Ifareferencecannotberesolveditcaussthelinkertobailwithanerror.ThiserrorcaseissimilartotheC/C++linkercannotfindamatchingfunctionimplementationforoneofyourcalls.Also,anysectionsthatarenotreferencedareignored.

Itisimportanttonotethatsectionsaretheatomicunitoflinking.Inotherwords,eitheralloftheinformationinasectionisincludedinyourfinaloutputornoneofitisincluded.ThisfactisimportanttokeepinmindwhensplittingyoursourcecodeintoFragments.YouonlyneedonesymbolinaFragmenttobereferencedandtheentirecontentsoftheFragmentwillbeapartofyourfinaloutput.

Beforewrappingupthisblogentry,let'sstepthroughtheexamplewe'veusedsofar.Remember,upabove,weprovidedlightthefragment.wixobjandtheproduct.wixobjobjectfilestolink.Thelinkerwouldloadallofthesymbolsinthosetwoobjectfiles(gettingalistmuchlikeIdescribedabove)andfigureoutthatthesectioncreatedbythe<Product/>elementisourentrysection.

Thelinkerwouldthentaketheonlyreferenceinthatsection(asshownabove)andstartlookingforthesymbol"MyComponent"intheComponenttable.Ofcourse,thatreferenceresolvesintoourfragment.wixobj.Thenthetworeferencesfromthefragment.wixobjwouldberesolved.Remember,referencesfromeachsectionmustbe

Page 593: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

resolved.Inthiscase,the"MyDirectory"intheDirectorytableand"1"intheMediatablereferencesareresolvedbysymbolsfromtheentrysection.ThelinkernowhappilygoesalongitsmerrywayfinishingthelinkingprocessusingthosetwosectionstobuildthefinalMSIfile.

HopefullythisblogentryhelpsexplainsomeoftheinnerworkingsoftheWiXtoolsetsothatyoucantakebetteradvantageofthetools.Thiswriteup(orsomethinglikeit)willbemakingitswayintotheWiXdocumentationsoIwouldappreciateanyfeedbackthatmakessections,symbols,andreferencesintheWindowsInstallerXMLtoolsetmakesense.

Copyright©RobMensching

Page 594: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

Myphilsophicalmusingsaboutbuildingsetupforsoftware.MikeGunderloy,whohaswrittenacouplearticlesabouttheWiXtoolset,postedacommentonapreviousblogentry.Inthecomment,hesuggeststhatsplittingasetupprojectintofragmentsonlymovestheproblembutdoesn'tsolveit.Thus,hearguedthataddingatooltogeneratethefragmentshasvalue.Istilldidn'tagree.ThenIrealizedthatIdisagreedbecauseIhavesomephilosophiesabouthowtobuildsoftwareandsetupforsoftwarethatI'veneverpostedhere.So,IthoughtI'dsharethosephilosophiestoday.PleasenotethattheseareguidelinesthatIusewhendiscussingsetupbuildprocesseswithotherpeoplenothardrules.

Thedeveloperthatwrotethefeatureknowsbestwhatneedstobeauthoredintosetup.

Thispartofmyphilosophyisbasedonthefactthatthepersonthatknowsthemostaboutaparticularresourceisthedeveloperthatwrotetheresource.Seriously,ifthedeveloperwhowrotethecodedoesn'tknowwherehisorherfilesneedtobeinstalledordoesn'tknowwhatregistrykeysarenecessarytomakethefeaturework(orwhateverotherresourcesarenecessary)whodoes?

Yes,therehavebeen(toomany)casesinmycareerwherethedeveloperwhowrotethecodesaid,"Uhh,Idon'tknowwhatmycodedependson."However,inthosecasesitwasprettyeasytolookathimorher(orhisorhermanager)andask,"Well,uhh,shouldn'tyou?"Ineverycase,theywentoffandfiguredoutwhatwasnecessarytogettheirsoftware"inthebox".

Fundamentally,ifdevelopersdon'tknowwhattheirdependenciesarethereisverylittlechancetheirprojectwillhaveasolidsecurity,performance,ordeploymentstory.Areaexpertsmaybenecessarytohelpdevelopersworkthroughcomplicatedissuesbut,ingeneral,developersmustbeawareofwhattheirsoftwareisdoing.

Setupauthoringisapartofthedevelopmentprocess.

EveryteamIhaveinteractedwith(thegrandmajorityofMicrosoftand

Page 595: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

somesmallercompanies),thedevelopersontheteamareexpectedtoaddtheirsourcefilestothemakefilebeforecheckinginnewfilestotheproject.Yet,manyofthoseteamshavepeoplewhoaresolelyresponsibleforaddingnewfilestothesetupproject.Inmanycases,onesetofdeveloperswriteregistrykeysintothecodeforSelfReg(thisisevil,andI'llexplainwhyoneday)andthesetupdevelopershavetoreverseengineertheregistrykeysoutofthebuiltexecutablestoauthorsetup.Whydidn'ttheoriginaldeveloperjustauthortheregistrykeyintosetupinthefirstplace?

Therewasapointintimewhereitwasarguablydifficulttodistributetheauthoringtoalldeveloperswhenyouhadtobuycustomtoolsthatdidn'tfitwellintothedevelopmentprocess.However,todaythereareafewalternativesoutthere(liketheWiXtoolset)thatallowsetuptobetreatedlikesourcecode.NowtherearenoexcusesI'veheardthatholdwaterwhysetupauthoringforthemajorityoftheresourcesinsetupcannotbedistributedacrossthedevelopersintheorganization.Doingthatdistributionleavesonlythe"lookandfeel"andintegrationbetweentheindividualpiecesofsetuptothecoresetupdevelopers.Allotherexcuseshavealwaysbeenjustwhinging(asPetermightsay).

ThispartofmyphilosophyandtheoneabovearethereasonsIdisagreewhenMikesaysthat"breakingupthepackageintomultiplesourcefragmentspushestheproblembackonelevel,butdoesn'tnecessarilysolveit."Breakingupyoursetupintomultipletextfilesenablesdeveloperstomaintainsetupauthoringthesamewaytheymaintainalltheothercodethatispartofaproject.Andthatbringsmetomyfinalpoint.

Textfilesshouldbetheonlyinputsintothebuildprocess.

Overtheyears,developershavecreatedfairlysignificantprocessesfortracking,merging,andrevertingchangestotextfiles.Forexample,ConcurrentVersionSystem(betterknownasCVS)isusedheavilybySourceForge.netcanshowyoutheindividuallineschangedinatextfileovertime.Forademonstration,takealookatCompiler.csfromv1.6tov1.7inCVSatSourceForge.netforWiX.Itisnotgenerallypossibletovisualizethedifferencesbetweentworevisionsofabinaryfile.

Everyinputintothebuildprocessthatismanipulatedbyahumanwilleventuallyhosetheprocessatleastonce.Beingabletotextsearch

Page 596: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

(usingeventhesimplesttoolslikegrep)fortheexactchangethatcausedtheproblemsignificantlyimprovesbuildthroughput.Binaryfilesusuallyhidetheinformationbyrequiringcustomtoolstobeopenedandqueriedtofindthebreak.

Ofcourse,onceyoufindthebreakitisreallynicetobeabletofixtheproblembylaunchingyourfavoritetexteditorandtweakingtheline(s)ofcodewiththefault.Requiringatooltobeinstalledonthebuildmachinesincreasesyourimpedancetofixingtheissue.

Ultimately,keepingbinaryfilesoutofyourbuildprocesssimplifiesyourlife.ThatfactiswhyIdisagreewithMikewhenhesuggestsitmakessenseto"putonemoretoolintothechain,somethingwithafriendlyinterfacethatcouldspitoutthesourcefragmentsasneeded?IcouldseedoingthatwithAccess/Excel,amongotherthings."

NoteIdothinkitisreasonablefordeveloperstousetoolsthathelpgeneratetextfiles.Thosetextfilesthencangetcheckedintosourcecontrolandbuiltaspartofthestandardprocess.However,thetoolsneedtogeneratehumanfriendlytextfiles.Textfilesthatcanonlybemodifiedwithacustomtoolareonlyhalfastepbetterthanrawbinaryfiles.

ThisisthephilosophythatIdevelopedduringmytenureinOfficeandhavepromotedacrossthecompanyforacoupleyearsnow.Manyteamshavehadanincredibleamountofsuccesswiththeirsetupprocesseswhenfollowingtheseguidelines.TherehavebeenmanycaseswhereIwasaskedbyotherteamstotalkaboutthephilosophy.AttheendofmytalkIalwaysleftthemwith,"Ifyouhavesomeoneresistingchange,havethemcontactme.I'llbehappytotalktohimorhertodiscusshowsuccessfulotherteamshavebeenwiththisprocessandseeifthereisn'tsomewaytoaddresstheirconcerns."I'dbehappytodothesameforyou.

PS:Thisphilosophyhasworkedoutextremelywellforme,butifyouhaveauniquesituationthatyouthinkwouldn'tworkusingtheseguidelines,I'dbeveryinterestedtohearaboutthem.I'malwayslookingforalternativeviews(aslongaspeoplearen'tjustwhinging<smile/>).

Copyright©RobMensching

Page 597: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

VBScript(andJscript)MSICustomActionssuck.Todaywasoneofthosedayswhereyoufinallygetaroundtolookingatthetimeandwonderwheretheheckthehourswent.Itwasn'tevenlikeIreallygotalotdone.Ithinkmycontextswitchcostshavebeenreallyhighlately.ItfeelsgoodtofinallybehomechillingouttothePerfectoChillsalbums.IthoughtI'drelateashortstorytoyouwhyVBScript(andJscriptforthatmatter)shouldnotbeusedforCustomActionsinanMSI.

Today,Irealizeditwas15:39whenafellowdeveloper,we'llcallhimJoe,calledmeatwork.Myfirstthoughtwas,"Jeez,it'salmost4o'clockandIhaven'tgotanythingdone!"Mysecondthoughtwas,"IbetJoeisscrewed."JoeonlycallsmewhentheWiXtoolsethascompletelyfailedorhehashitthewallwiththeWindowsInstaller.Today,Joehadhitthewall.

"Rob,haveyoubeentrackingtheemailthreadabouttheCustomActionofminethatisfailing?"IhadseenthisthreadearlierinthedayandrememberedJoementioningsomethingaboutaVBScriptCustomAction."Alittlebit,you'renotreallyusingVBScriptforyourCustomAction,areyou?"

Thatwasit.JoewasattemptingtodebugsomerathercomplexissueswithaVBScriptCustomActioninteractingwithsomeCOMcomponentsduringaninstall.EverythingseemedtoworkfineifherantheVBScript(slightlymodified)inthecscript.exeorwscript.exehosts.However,whenthescriptexecutedintheWindowsInstallersActiveScriptengineitfailedinrathermysteriousways.

Interestinglyenough,aWindowsInstallerdeveloperattachedoneofthemanyemailsthatIsendtopeoplewhentheyarehavingproblemsusingVBScriptforCustomActions.Inthoseemails,IalwayssuggestthatscriptneverbeusedforCustomActionsinMSI.So,Joecalledmeandasked,"SowhatcanIdo,Rob?"

Myanswerwassimple,"Joe,thereisareasonIrecommendneverusingVBScriptforCustomActions.It'sbecausethereisn'treallyawholelotyoucandowhenyougetintothiskindofsituation."ThenIprovidedhim

Page 598: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

afewideasthatstartedwithattemptingtogetthescriptdebuggertosomehowattachandtrytothendebugovertotheCOMcomponentandendedupsuggestinggettingthecommand-linedebuggerattachedtotheCOMcomponentonload.Noneofwhichistrivial.

WhatIdon'tunderstandiswhypeoplecompletelydisregarddirewarningsthatcertaintechnologiesshouldnotbeusedincertaincircumstances.Yes,IunderstanditisextremelyeasytowriteCustomActionsinVBScript.No,thatdoesn'tmakeitagoodthingtouseinyourinstall.

So,I'mbloggingheretonightattheendofaverylongdaytosharewithyouthreereasons,IrecommendyounotuseVBScriptorJscriptforCustomActions:

1.Robustcodeisdifficultwriteinscript.Setupcodemustoperateonmachinesthatareinanunknownstate.Insuchhostileenvironments,therearemanydifferentwaysthatcodecanfail.Properlyrecoveringfromerrorconditionsisveryimportant(evenifitjustresultsinrollback)."OnErrorResumeNext"isnotconducivetopropererrorhandlingincode.Forthisreasonalone,MicrosoftOfficebannedallscriptCustomActionsfromtheirMSIfiles.IamadmittedlybiasedbutIbelieveOfficehasoneofthemostimpressive,smooth,andstablesetupprogramsfortheWindowsplatform,especiallyconsideringitscomplexity.

2.DebuggingscriptintheWindowsInstallerisdifficult.SomemightevenargueitisimpossibletodebugscriptCustomActions.AsJoeisgoingtofindoutforthenextfewdays,debuggingtheinteractionsbetweentheWindowsInstaller,thescriptingengine,andanyotherobjectsisanon-trivialtaskbecausethetoolsaresoprimitive.TherearemanytoolsforC/C++codethatcanhaveverylowimpactonthemachineifyouaretrackingaparticularlyskittishbug.MaybeI'monlycalledinwhenbugsarereallyhard,buttherehavebeenmanytimesIwasthankfulforntsdandpageheap.exe.

3.Anti-virusproductskillthem.Thisonejustkilledme.AcoupleyearsafterOfficebannedtheuseofscriptingforCustomActions,VisualStudioshippedtheirfirstMSIsetup.TheydecideditwouldbeokayiftherewereafewscriptCustomActions.Whencustomersgottheproduct,PSSstartedgettingreportsoftheVisualStudiosetupmysteriouslyfailingandrollingback.Aftersomeverylongcalls,PSS

Page 599: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

discoveredthatiftheusers'anti-virusprogramsweredisabledtheinstallationswouldsucceed.Turnsoutmanyofthetopnameanti-virusprogramsconsideredthescriptshostedbytheWindowsInstallertobevirusandwouldkillthescriptsofffailingtheVisualStudioinstall.

Anyway,hopeyouenjoyedthestoriesandremember,"VBScriptandJscriptsuckforCustomActions."

Copyright©RobMensching

Page 600: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

LocalizationandyourMSIfile.JennysignedoffonmyMondaynightbloghourssoI'mcurledupinmybigcomfychairwithmylaptopreadytodiscusssomedetailsoftheWindowsInstaller.Honestly,everytimeIsitinthisbigchairIconsiderwritingthatbookagain.Butnottonight.FortonightwetalkaboutlocalizationandtheWindowsInstaller.

BeforeIgetstarted,Iwanttothrowoutaveryimportantdisclaimerupfront.IamnotalocalizationexpertandIpersonallyhaveneverfully-localizedaproduct.MostofwhatI'mpresentinghereisinformationthatI'vegleanedfromtalkingtoorjustwatchinglocalizers.TherestofitIstolefromtheWindowsInstallerSDK.

Forthoseofyouwhohavenotbeenindoctrinatedinbuildingglobalsoftware,knowthat"localization"istheprocessofmakingyoursoftwareavailableforother"locations"(orlocales)."Localizers"aretheindividualsresponsibleforlocalizingyoursoftware.Obviouslymost"localizers"speakorreadorcomprehendmorethanoneculture.ThisparticulartalentisoneofthemajorreasonsImakeareallylousylocalizer.IonlyreallyunderstandAmericanEnglish,C/C++,C#,VBScriptandabitofAustralianEnglish(fromlivingwithPeterforafewyears).ButIdigress.

Mostpeoplethinklocalizationisallabouttranslatingthetextintheirprogramfromonelanguagetoanother.Whilethisisanimportantpartoftheprocess,therearemanyotherfacetsoflocalization.Forexample,directlyrelatedtothetexttranslationprocessbutoftenneglectedistheplanningfortranslatedtexttotakemore(orless)spaceindialogboxesthanthefirstlanguagedid.Irememberalocalizermentioningtomeoncethat--ingeneral--adialogboxforGermantextneedstobesomewherearound1.5timeslargerthanadialogboxwiththesametextinEnglish.Anotherimportantfacetoflocalizationisadjustingtextandimagestobegeopoliticallyappropriate.Wordsandimagesacceptedinonepartoftheworldarenotalwaysappropriateforotherpartsoftheworld.Thusitisimportanttounderstandtheculturesnotjustthelanguageswhenlocalizingsoftware.

Okay,sothatisprobablyenoughtocoverthe"Localization"partofthisblogentry'stitle,nowlet'smoveon"yourMSIfile".Fortheremainderofthisblogentry,unlessIspecificallymentionit,theterm"MSIfile"willbe

Page 601: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

synonymouswith"WindowsInstallerdatabase"(whichincludesnotonlyMSIfilesbutMergeModules[.msmfiles]aswell).Sowhatwe'rereallytalkingabouthereislocalizingyour<Products/>and<Modules/>ifyouusetheWiXtoolset.

Aspromisedinthebeginning,muchofwhatI'mcoveringhereiscoveredinwhatIconsiderthe"WindowsInstallerBible",theWindowsInstallerSDK.WhenIhavequestionsaboutthewaytheWindowInstallerworks,Igobackandrefertothatdocumentation.Fortunately,formeandthisblog,theWindowsInstallerSDKcangetkinda'crypticattimes.SoI'mheretoaddmorewordstowhatalreadyexists.

Inparticular,theLocalizationOverviewintheWindowsInstallerSDKisagreatplacetostart(andIexpectIwillrefertoitseveraltimesinthisblogentry).Thathelptopicdoesaprettygoodjobprovidingacheck-listofthingstodowhenlocalizingyourMSIfile.Iparticularlylikethefirststep,planforlocalization.

Iamfullyawarethatmanypeoplesavesetupfortheendoftheproductcycle.Ipersonallybelievethispracticeisveryrecklessandill-advised(especiallyconsidertherearenowtoolsliketheWiXtoolsetthatcanintegratedirectlyintoyourbuildprocess).However,I'vealsonoticedthatlocalizationisoftenconsideredaftersetup!Thatdoublesdownthetroublebecauserightwhenyouneedtolock-intheComponentizationyourproductyou'regoingtobeaddingmorefiles.Badplanningcanmakethisahorriblechore.

So,here'smystandardtemplateforsuccesswithlocalization.First,breakoutallofthelocalizabletextinyourproductintoaseparateresource-onlyDLL.Second,putthatresource-onlyDLLinasub-directorynamedforthelanguageoftheresource-onlyDLL.Keepthenameoftheresource-onlyDLLthesamethough.SinceI'manoldOfficeguy,IusuallyusetheLCID(1033isAmericanEnglish)forthedirectorynamebutI'veseenthetrendtowardsusingtheISOlocalenames(en-usisAmericanEnglish)sincetheCommonLanguageRuntimegoesthatway.Third,storethedefaultinstallation'slanguageinyourper-applicationdatastore.Forexample,anHKLMregistrykeyisanokaystoreifyourproductwasinstalledper-machineandanHKUregistrykeywouldbeokayifyourproductwasinstalledper-user.TheRegistry/@Root="HKMU"valueinWindowsInstallerXMLsyntaxwasdesignedforthistypeofscenario.Fourth,storetheuser'scurrent

Page 602: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

languagepreferenceinaper-userdatastore(aper-userregistrykeyworksokay)whenitdiffersfromtheinstalledvalue.Finally,whenyoubootyourapplicationloadtheresource-onlyDLLfromtheappropriatesub-directorybasedontheper-userkeyifitexistsandtheper-applicationkeyifitdoesnotexist.

Youcanalsodomoreinterestingscenariosifyouwanttotakethesystem'scurrentlanguageintoaccount,butthat'sforpeoplethatknowmoreaboutlocalizationthatIdo.Ofcourse,youshouldalsohavesomefallbackplanifyourregistrykeysareallbusted.Forexample,iftheper-applicationregistrykeywasdeletedyoucouldrepairaportionofyourproduct.I'lltrytossingmoreadvancedscenariosinalaterblogentry.

Nowthatyouhaveaplanforyourproduct'sorganization,youcangobacktothinkingaboutyourMSIfile.Firstofall,you'llwanttothinkaboutthecodepageforyourMSIfile.RememberMSIfilesarenotUnicode.ThatmeansifyoupickthewrongcodepageforyourMSIfilethatyou'llgetsquareboxesorquestionmarksshowingupinyourdatabase.TheWindowsInstallerSDKtalksaboutsettingthecodepagebutifyouusetheWiXtoolsetyouonlyneedtospecifyyourcodepageLCIDintheProduct/@CodepageorModule/@CodepageattributeforyourMSIorMSMfilerespectively.Ifyou'recurious,youcanseethattheWiXtoolsetdoesexactlywhattheWindowsinstallerSDKsaysinBinder.csintheBinder'sSetDatabaseCodepage()method.

AlsonotethatbecausetheMSIfilesarenotUnicodefilestheycannotbetrulymulti-lingual.ThisisokaybecauseifweskipovertheOverview'ssteps3and4(I'lldiscussthosemorelater),weseeinstep5thattheMSIfilehasaProductLanguagePropertythatmustbesettotheLCIDoftheproduct.ThatProductLanguagePropertymapstotheProduct/@LanguageorModule/@Languageattributes.OneofthebugsIdiscussedinmypreviousblogentryisenablingthelocalizationofthoseattributes.

I'mgoingtolumpintheOverview'ssteps5,6,7,and8undertheheading"ThingsThatIdentifyYourProductasaUniqueIdentityintheWorld."Theworldisascaryplaceouttherewithlotsofotherproductstocollideandotherwisegetlostin.Makesureyoufollowallofthesestepstoensurethatyoucanfindyourproductwhenitcomestimetopatchorupgrade.I'veseenafewcaseswheresetupdeveloperswerebeingparticularlylazyandthoughttheycouldskipoversomeofthesesteps.

Page 603: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

TheyshowedupafewmonthsaftertheirproductsshippedaskinghowtheycantargettheappropriatelocalizedversionoftheirMSIfile.

Inoneparticularcase,aproducthadsomegeo-politicalissuepreventingtheproductfrombeingallowedacrosstheborderofsomecountry.Idon'trememberallofthefinerdetailsbutIbelievethefinalrecommendationwastobuildanew"politicallycorrect"MSIpackage,sendthatoffformanufacturingandeatthecostofthethousandsofCDsthathadalreadybeenstamped.Icanonlyimaginehowmuchfuntheyhadcreatingcoastersintheirmicrowave(orhowmuchexplainingtheyhadtodowiththeir"higher-ups").

IwasoriginallygoingtotosstheOverview'sstep9inwiththeabove,but(asmanyofyouknow)theComponentRulesareverynearanddeartomyheart.Followmystandardtemplatefororganizingyourproductandyou'llnaturallyhavetoputeachresource-onlyDLLinitsownComponent.Moreimportantlyyouwillonlyneedtoputthenon-localizedexecutablesintheirownComponents.Ifyouhadlocalizedtextintheexecutables,you'dbeintheunfortunatepositionofneedingtocreatedifferentComponentstoinstallthedifferentlanguageversionsofthefileeventhoughtheywouldallgetinstalledtothesamelocation(aComponentRuleviolation).Also,asmentionedabove,withthisproductlayoutI'llbeabletodemonstratesomeinterestingadvancedinstalltricks.

Finally,allthatisleftnowisthereallocalizationwork(steps3and4fromtheOverview).Iknowthisissomethingofaletdownaftersuchalongblogentry,butI'mgoingtosavethedetailsofhowtheWiXtoolsetcanhelpwiththelocalizationprocessforlater.Myhopeistore-finish(er,"un-break")thelocalizationfeaturesintheWiXtoolsettomorrownight.ThenIwilltrytowritethestep-by-stepprocessusingtheWiXtoolsetusingareallysimpleexample.Sometimeafterthat,I'llcreateamorecomplicatedexamplethattakesadvantageofsomeofthoseadvancedtricksIwastalkingabout.

Untilnexttime,takealookatthislocalizationexamplefromtheWindowsInstallerSDK,andkeepcoding.YouknowIam.

Copyright©RobMensching

Page 604: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

CreatinglocalizedMSIfilesusingWiXtoolsetand.wxlfiles.TonightwepickupwhereIleftofflastweekandcontinuewiththetopicoflocalizingyourMSIfile.Ifyouhaven'treadlastweek'sblogentry,youshoulddothatnow.Yes,it'sprettylong.Don'tworryI'llwait.There'slotsofgoodbackgroundinformationinthere.

Great,Iwanttocoveracouplemorethingsbeforewereallygetstarted.First,justlikeinmypreviousblogentryalloftheinformationpresentedhereworksequallywellforMergeModules(MSMfiles)asitdoesforMSIfiles.I'llbeusinganMSIfileinmyexampleandI'llusethewords"MSIfile"alot(that'showIgetsuchahighpagerankforWindowsInstallerstuff...justkidding)becauseI'mlazyandgettiredofwritingMSI/MSMfile.Second,IamusingthelatestbuildoftheWiXtoolsetv2.0.2328.0inmyexamples.Thisisimportantbecause,asyou'llnoteinthereleasenotes,Ifixedmanylocalizationissueswiththisreleaseofthetoolset.Ifyouwanttofollowalong,besureyouhavearecentversionoftheWiXtoolset.

TodaytherearereallytwowaystolocalizeyourMSIfile.Step3andstep4oftheLocalizationExampleintheWindowsInstallerSDKthatIpointedatlastweekdemonstratethosetwomethods.First,youcanexportyourMSIfile'stablestoIDTfileformat,localizethattextfilethenimporttheIDTfilebackintoyourMSI.ThismethodisthefastestwaytoupdateinformationinyourMSIfile.However,italsorequiresthemostcarebecauseyoumustensurethecodepageoftheIDTfilematchesthecodepageoftheMSIfileortheimportwillfailwithterriblyhelpfulerrormessageslike,"FailedtoimportyourIDTfileforsomereason.Haveaniceday"(note:::MsiGetLastErrorRecord()willgiveyoumoreinformationabouttheerrorbutitrarelygivesyoutheexactanswertotheissue).Itisinterestingtonotethattheremarksin::MsiDatabaseImport()functiondiscourageusingthismethodforupdatingyourMSIfilebecauseofthecodepageandotherIDTencodingissues(liketabsandcarriagereturns).

ThesecondwaytolocalizedatainyourMSIfileistousetheWindowsInstallerSQLSyntaxtoupdatetheappropriatecolumns.Thismethodisarguablyeasierthanthepreviousmethodbecauseyoudon'thaveto

Page 605: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

worryaboutencodingtabsorcarriagereturnsandtheAPIswillattempttoencodeyourtextthebestitcantomatchtheMSIfile'scurrentcodepage.Unfortunately,thismethodisalsoslowerthanthepreviousmethodbecausetheWindowsInstallerSQLprocessorisnotparticularlyspeedy.

Sohowaboutasolutionthatprovidesyou,thesetupdeveloper,withthefastestmethodtocreatelocalizedMSIfileswithoutneedingtoworrytoomuchaboutencodingallofyourdatainIDTfilescorrectly?Whatifallyouneededtodowastoprovidethelocalizeddataandthecodepageforthatdata(codepageisstillnecessarybecauseIdon'tknowhowtolookatseveralrandomstringsoftextandaccuratelyreverseengineerthecodepagefromthem)?Whatifyoucouldactuallycompileallofyoursourcecodefilesoncethenonlylinktheobjectfilestogetheronceforeachlanguage?How?WellwiththeWiXtoolset,ofcourse.

Admittedly,theWiXtoolset'slocalizationfeaturesaresomeoftheleastdocumentedfeaturesintheWiXtoolset.Infact,theonlydocumentationisWiXLocalizationfile,.wxlfiles,schema(wixloc.xsd)andthecodeinlight.csthatprocessesthe.wxlfiles.SoI'mherenowtoturnthatallaroundwithastep-by-stepexample.

Let'slookatasmallexamplesourcefilethatinstallsasimplefilewithashortcut.Let'scallthissourcefile"example.wxs":

<?xmlversion='1.0'?>

<Wixxmlns='http://schemas.microsoft.com/wix/2003/01/wi'>

<ProductId='????????-????-????-????-????????????'Name='ExampleProduct'

Language='1033'Version='1.0.0.0'Manufacturer='MicrosoftCorporation'>

<PackageId='????????-????-????-????-????????????'

Description='ExampleDescriptionforProduct'

Comments='ExampleProducttodemonstratelocalizedData'

InstallerVersion='200'Compressed='yes'/>

<MediaId='1'Cabinet='product.cab'EmbedCab='yes'/>

<DirectoryId='TARGETDIR'Name='SourceDir'>

<DirectoryId='ProgramFilesFolder'Name='PFiles'>

<DirectoryId='EXAMPLEDIR'Name='example'LongName='ExampleDirectory'>

<DirectoryId='LangDir'Name='1033'>

<ComponentId='ExampleComponent'Guid='PUT-GUID-HERE'DiskId='1'>

<FileId='ExampleFile'Name='example.txt'src='example.txt'>

<ShortcutId='ExampleShortcut'

Directory='ProgramMenuFolder'

Name='Example'LongName='ExampleShortcut'

Description='Shortcuttoexample.txt'/>

Page 606: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

</File>

</Component>

</Directory>

</Directory>

</Directory>

<DirectoryId='ProgramMenuFolder'Name='ProgMenu'/>

</Directory>

<FeatureId='ExampleFeature'Title='ExampleFeatureforProduct'Level='1'>

<ComponentRefId='ExampleComponent'/>

</Feature>

</Product>

</Wix>

Note,tocompilethecodeabovewithcandle.exe,you'llneedtoreplace"PUT-GUID-HERE"withyourownGUID.Idon'tprovideGUIDsinmyexamplesbecausepeopleliketocopytheexamplesthenforgettochangetheGUIDbeforeshipping.Ofcourse,thatwouldbeanimmediateComponentRuleviolationandIdon'twanttoberesponsibleforthat.Also,beforewecanlinkthatcodewithlight.exe,we'llneedtocreateatextfilecalled,"example.txt".Here'swhatmyexample.txtfilelookslike:

Eachdayisagift,that'swhywecallitthepresent.

Okay,aftercreatingexample.wxs(andaddingyourownGUID)andcreatingexample.txt,youshouldbeabletocreatean"example.msi"filebycompilingandlinkingthefileslikeso:

C:\wix>candleexample.wxs

Microsoft(R)WindowsInstallerXmlCompilerversion2.0.2328.0

Copyright(C)MicrosoftCorporation2003.Allrightsreserved.

example.wxs

C:\wix>lightexample.wixobj

Microsoft(R)WindowsInstallerXmlLinkerversion2.0.2328.0

Copyright(C)MicrosoftCorporation2003.Allrightsreserved.

C:\wix>

Asalways,nonewsfromlight.exeisgoodnews.YoucaninstallthenewlycreatedMSIfileusing"msiexec/iexample.msi"andshouldnotice

Page 607: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

anewshortcutinyourProgramMenuFolder("Start"->"AllPrograms"onWindowsXP).ButI'msureforyouoldWiXtoolsethacksouttherethisexampleisboring.So,let'sgettolocalizing.

Ifyouusedthepreprocessor,youarealreadyfamiliarwith$(var.VAR)fordefinedvariablesand$(env.VAR)forenvironmentvariables.LocalizationintheWiXtoolsetisdonebyinserting"localizationvariables".Localizationvariableslooklike$(loc.VAR).Let'slookatourmodifiedsourcefile:

<?xmlversion='1.0'?>

<Wixxmlns='http://schemas.microsoft.com/wix/2003/01/wi'>

<ProductId='????????-????-????-????-????????????'Name='ExampleProduct'

Language='$(loc.LANG)'Version='1.0.0.0'Manufacturer='MicrosoftCorporation'>

<PackageId='????????-????-????-????-????????????'

Description='$(loc.Description)'

Comments='$(loc.Comments)'

InstallerVersion='200'Compressed='yes'/>

<MediaId='1'Cabinet='product.cab'EmbedCab='yes'/>

<DirectoryId='TARGETDIR'Name='SourceDir'>

<DirectoryId='ProgramFilesFolder'Name='PFiles'>

<DirectoryId='EXAMPLEDIR'Name='$(loc.ShortDirName)'LongName='$(loc.LongDirName)'>

<DirectoryId='LangDir'Name='$(loc.LANG)'>

<ComponentId='ExampleComponent'Guid='PUT-GUID-HERE'DiskId='1'>

<FileId='ExampleFile'Name='$(loc.FileName)'src='example.txt'>

<ShortcutId='ExampleShortcut'

Directory='ProgramMenuFolder'

Name='Example'LongName='$(loc.ShortShortcutName)'

Description='$(loc.LongShortcutName)'/>

</File>

</Component>

</Directory>

</Directory>

</Directory>

<DirectoryId='ProgramMenuFolder'Name='ProgMenu'/>

</Directory>

<FeatureId='ExampleFeature'Title='$(loc.FeatureTitle)'Level='1'>

<ComponentRefId='ExampleComponent'/>

</Feature>

</Product>

</Wix>

Youshouldagainbeabletocompilethatfilebutifyoutrytolinkyoushouldseeerrormessagessuchas,"light.exe:fatalerrorLGHT0023:Localizationstring'FeatureTitle'unknown.Ensurethatthe

Page 608: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

$(loc.FeatureTitle)isdefined."ThaterrormessagebasicallymeanswedidnotprovideaLocalizationfilewithallofthelocalizableidentifiersandtext.So,nowweneedtocreateourfirst.wxlfile.I'vecalledmineexample1033.wxlanditgoesalittlelikethis:

<?xmlversion='1.0'?>

<WixLocalizationxmlns='http://schemas.microsoft.com/wix/2003/01/localization'Codepage='1252'>

<StringId='LANG'>1033</String>

<StringId='Description'>ExampleDescriptionforProduct</String>

<StringId='Comments'>ExampleProducttodemonstratelocalizedData</String>

<StringId='ShortDirName'>example</String>

<StringId='LongDirName'>ExampleDirectory</String>

<StringId='Filename'>example.txt</String>

<StringId='ShortShortcutName'>Example</String>

<StringId='LongShortcutName'>Shortcuttoexample.txt</String>

<StringId='FeatureTitle'>ExampleFeatureforProduct</String>

</WixLocalization>

Now,togetourMSIfileback.

C:\wix>candleexample.wxs

Microsoft(R)WindowsInstallerXmlCompilerversion2.0.2328.0

Copyright(C)MicrosoftCorporation2003.Allrightsreserved.

example.wxs

C:\wix>lightexample.wixobj-locexample1033.wxl

Microsoft(R)WindowsInstallerXmlLinkerversion2.0.2328.0

Copyright(C)MicrosoftCorporation2003.Allrightsreserved.

C:\wix>

Iwanttonotethat(barringanytypos)thisMSIfileshouldbeidenticaltothefirstMSIfilewecreated.Ialsowanttonotethatthiswillbethelasttimewecompiletheexample.wxs.SincewehavespecifiedallofourlocalizationvariableswenolongerneedtocompiletogetchangesinourMSIfile.Allweneedtodolocalizeourexample1033.wxlfileintootherlanguages.Since,Idon'tknowanyotherlanguages,I'mgoingtolocalizeourexample1033.wxlfileintothe"Foolanguage"andusetheJapaneseLCID,1041,sinceIhappentorememberthatone.Here'stheexample1041.wxlfilelocalizedintothe"Foolanguage":

Page 609: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

<?xmlversion='1.0'?>

<WixLocalizationxmlns='http://schemas.microsoft.com/wix/2003/01/localization'Codepage='932'>

<StringId='LANGID'>1041</String>

<StringId='Description'>FooFoofooFoo</String>

<StringId='Comments'>FooFoofoofoofooFoo</String>

<StringId='ShortDirName'>Foo</String>

<StringId='LongDirName'>FooFoo</String>

<StringId='Filename'>foo.txt</String>

<StringId='ShortShortcutName'>Foo</String>

<StringId='LongShortcutName'>Foofoofoo.txt</String>

<StringId='FeatureTitle'>FooFoofooFoo</String>

</WixLocalization>

Noticehowelegantthe"Foolanguage"is.Theelegancereallyislostintextformat.Somuchofthe"Foolanguage"istransmittedviathepitchanddurationofeachword.ButIdigress.Let'sbuildour"Foolanguage"example.msifile.Thiswilljuststompoverourpreviousexample.msisomakesureyouuninstallthepreviousexample.msifileusing"msiexec/xexample.msi"(oryou'llhavetogotoControlPanel->Add/RemovePrograms).Let'slink(andonlylink)ourMSIfile:

C:\wix>lightexample.wixobj-locexample1041.wxl

Microsoft(R)WindowsInstallerXmlLinkerversion2.0.2328.0

Copyright(C)MicrosoftCorporation2003.Allrightsreserved.

C:\wix>

NowifyouinstalltheMSIfileyouarelikelytoseesquareboxesfortheActionTextduringtheprogressdialogbox.Ibelievethisoccurswhenyoudon'thavetheJapanesefontsnecessarytodisplaytheWindowsInstaller'sdefaulttextmessages.Inanycase,Idon'thaveJapanesefontsinstalledonmymachinesoIseesquareboxes.However,squareboxesornosquareboxeseverythingshouldinstalljustfine.Afterinstalling,youtooshouldseea"Foo"shortcutinyourProgramMenuFolder.

That'sallthereisto.wxlfiles.Hopefully,youcanseehowtheLocalizationfilescangreatlysimplifytherelationshipbetweenyou,yourlocalizers,andyoursetup.Iwouldalsoliketonotethat.wxlfilesarerelativelynewconstructsintheWiXtoolsetsoifyouhavesuggestionshowtoimprovethempleasefeelfreetosendyourfeedbacktothe"wix-

Page 610: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

devsatsourceforge.net"mailinglist.

Andthatbringsmetomyfinalpoint.Thereisoneveryfatalflawinthecodeabove.Idebateddelayingthisblogentrytofixtheissuebutdecidedthecontentherewasvaluableevenwiththemistake.Haveyoufoundityet?LookcloselyattheComponent/@Guidattribute.DidthatvaluechangeeachtimeyoucreatedacompletelydifferentComponentlikethestep9intheLocalizationOverviewsuggests?Probablynotbecauseyoucan'tcurrentlylocalizeGUIDvaluesasdescribedbythisbugonSourceForge.However,thevalueshouldchangebecauseyouhaveverydifferentShortcutsinthetwoComponents(andtheexample.txtfileisinstalledtodifferentlocationssothereisnooverlap).So,IapologizeprofuselyforcreatinganexamplethatviolatestheComponentRulesandIwillfixthebugASAP.

Inthemeantime,havefunplayingwithyour.wxlfilesandkeepcoding.

Copyright©RobMensching

Page 611: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

GettingHelpPleaseseesourceforge.net/projects/wixformoreinformation.

Page 612: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

YesNoType(SimpleType)

Description

Valuesofthistypewilleitherbe"yes"or"no".

EnumerationTypePossiblevalues:{no,yes}

SeeAlsoWixSchema

Page 613: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

uuid(SimpleType)

Description

Valuesofthistypewilllooklike:"01234567-89AB-CDEF-0123-456789ABCDEF"or"{01234567-89AB-CDEF-0123-456789ABCDEF}".

PatternTypeMustmatchtheregularexpression:'[{(]?[0-9A-Fa-f]{8}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{12}[})]?'.

SeeAlsoWixSchema

Page 614: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ModularizeType(SimpleType)

Description

None

EnumerationTypePossiblevalues:{None,Column,Property,Condition,CompanionFile,SemicolonDelimited}

SeeAlsoWixSchema

Page 615: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ComponentGuid(SimpleType)

Description

Valuesofthistypewilllooklike:"01234567-89AB-CDEF-0123-456789ABCDEF"or"{01234567-89AB-CDEF-0123-456789ABCDEF}",butalsoallows"PUT-GUID-HERE"foruseinexamples.It'salsopossibletohaveanemptyvalue"".

PatternTypeMustmatchtheregularexpression:'[{(]?[0-9A-Fa-f]{8}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{12}[})]?|PUT\-GUID\-HERE|'.

SeeAlsoWixSchema

Page 616: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

LocalizableInteger(SimpleType)

Description

Valuesofthistypemustbeanintegerorthevaluecanbealocalizationvariablewiththeformat$(loc.VARIABLE).

PatternTypeMustmatchtheregularexpression:'[0-9][0-9]*|\$\(loc\.[_A-Za-z][0-9A-Za-z_]*\)'.

SeeAlsoWixSchema

Page 617: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

LongFileNameType(SimpleType)

Description

Valuesofthistypewilllooklike:"LongFileName.extension".Thefollowingcharactersarenotallowed:\?|>:/*"orless-than.Thenamemustbeshorterthan260characters.Thevaluecouldalsobealocalizationvariablewiththeformat$(loc.VARIABLE).

PatternTypeMustmatchtheregularexpression:'[^\\\?|><:/\*"]{1,259}|\$\(loc\.[_A-Za-z][0-9A-Za-z_.]*\)'.

SeeAlsoWixSchema

Page 618: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

ShortFileNameType(SimpleType)

Description

Valuesofthistypewilllooklike:"FileName.ext".Thefollowingcharactersarenotallowed:\?|>:/*"+,;=[]less-than,orwhitespace.Thenamecannotbelongerthan8charactersandtheextensioncannotexceed3characters.Thevaluecouldalsobealocalizationvariablewiththeformat$(loc.VARIABLE).

PatternTypeMustmatchtheregularexpression:'[^\\\?|><:/\*"\+,;=\[\]]{1,8}(\.[^\\\?|><:/\*"\+,;=\[\]]{0,3})?|\$\(loc\.[_A-Za-z][0-9A-Za-z_.]*\)'.

SeeAlsoWixSchema

Page 619: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WildCardLongFileNameType(SimpleType)

Description

Valuesofthistypewilllooklike:"LongFileN?me.extension*".Thefollowingcharactersarenotallowed:\|>:/"orless-than.Thenamemustbeshorterthan260characters.Thevaluecouldalsobealocalizationvariablewiththeformat$(loc.VARIABLE).

PatternTypeMustmatchtheregularexpression:'[^\\\|><:/"]{1,259}|\$\(loc\.[_A-Za-z][0-9A-Za-z_.]*\)'.

SeeAlsoWixSchema

Page 620: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

YesNoDefaultType(SimpleType)

Description

Valuesofthistypewilleitherbe"default","yes",or"no".

EnumerationTypePossiblevalues:{default,no,yes}

SeeAlsoWixSchema

Page 621: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

HexType(SimpleType)

Description

Thistypesupportsanyhexadecimalnumber.Bothupperandlowercaseisacceptableforlettersappearinginthenumber.Thistypealsoincludestheemptystring:"".

PatternTypeMustmatchtheregularexpression:'[0-9A-Fa-f]*'.

SeeAlsoWixSchema

Page 622: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

autogenuuid(SimpleType)

Description

Valuesofthistypewilllooklike:"01234567-89AB-CDEF-0123-456789ABCDEF"or"{01234567-89AB-CDEF-0123-456789ABCDEF}".AGUIDcanbeauto-generatedbywritingallquestionmarkslikethis:"????????-????-????-????-????????????".Alsoallows"PUT-GUID-HERE"foruseinexamples.

PatternTypeMustmatchtheregularexpression:'[{(]?[0-9A-Fa-f]{8}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{12}[})]?|[{(]?\?{8}\-\?{4}\-\?{4}\-\?{4}\-\?{12}[})]?|PUT\-GUID\-HERE'.

SeeAlsoWixSchema

Page 623: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

WildCardShortFileNameType(SimpleType)

Description

Valuesofthistypewilllooklike:"File?.*".Thefollowingcharactersarenotallowed:\|>:/"+,;=[]less-than,orwhitespace.Thenamecannotbelongerthan8charactersandtheextensioncannotexceed3characters.Thevaluecouldalsobealocalizationvariablewiththeformat$(loc.VARIABLE).

PatternTypeMustmatchtheregularexpression:'[^\\\|><:/"\+,;=\[\]]{1,8}(\.[^\\\|><:/"\+,;=\[\]]{0,3})?|\$\(loc\.[_A-Za-z][0-9A-Za-z_.]*\)'.

SeeAlsoWixSchema

Page 624: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

PercentType(SimpleType)

Description

Valuesofthistypeareanyintegersbetween0and100,inclusive.

xs:nonNegativeIntegerTypexs:maxInclusivevalue='100'

SeeAlsoWixSchema

Page 625: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

VersionType(SimpleType)

Description

Valuesofthistypewilllooklike:"x.x.x.x"wherexisanintegerfrom0to65534.

PatternTypeMustmatchtheregularexpression:'(\d{1,5}\.){3}\d{1,5}'.

SeeAlsoWixSchema

Page 626: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

uuid(SimpleType)

Description

Valuesofthistypewilllooklike:"01234567-89AB-CDEF-0123-456789ABCDEF"or"{01234567-89AB-CDEF-0123-456789ABCDEF}".

PatternTypeMustmatchtheregularexpression:'[{(]?[0-9A-Fa-f]{8}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{12}[})]?'.

SeeAlsoMmcSchema

Page 627: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

YesNoType(SimpleType)

Description

Valuesofthistypewilleitherbe"yes"or"no".

EnumerationTypePossiblevalues:{no,yes}

SeeAlsoNetfxSchema

Page 628: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

YesNoType(SimpleType)

Description

Valuesofthistypewilleitherbe"yes"or"no".

EnumerationTypePossiblevalues:{no,yes}

SeeAlsoPubcaSchema

Page 629: Introduction to WiX · The Windows Installer XML (WiX) platform is a set of tools and specifications that allow you to easily create Windows Installer database ... symbol/reference

uuid(SimpleType)

Description

Valuesofthistypewilllooklike:"01234567-89AB-CDEF-0123-456789ABCDEF".

PatternTypeMustmatchtheregularexpression:'[0-9A-Fa-f]{8}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{12}'.

SeeAlsoPubcaSchema


Recommended