introduction to wix · the windows installer xml (wix) platform is a set of tools and...
TRANSCRIPT
IntroductiontoWiX
WhatisWiX?TheWindowsInstallerXML(WiX)platformisasetoftoolsandspecificationsthatallowyoutoeasilycreateWindowsInstallerdatabasefiles(MSIandMSM).TheWiXtoolsmodelthetraditionalcompileandlinkmodelusedtocreateexecutablesfromsourcecode.ForWiX,sourcecodeiswritteninxmlfiles.Thesefilesarevalidatedagainstaschema,wix.xsd,thenprocessedbyapreprocessor,compiler,andlinkertocreatethedesiredresult.TheWiXplatformhasbeendesignedtoallowfortheeasycreationofmultipleWindowsInstallerdatabasesfromasmallsetofsourcefiles.
SchemaOverviewAuthoringToolsWiXFilesBuildingWiXBlogsGettingHelp
WindowsInstallerXMLOverview
IntroductionWindowsInstallerXML,orWiX,providesaschemathatdescribesaWindowsInstallerdatabase(MSIorMSM),aswellastoolstoconverttheXMLdescriptionfilesintoausabledatabase.Thesecondversionoftheschema,wix.xsd,addsextracontenttoeasethecreationofmultipleWindowsInstallerdatabasesfromasinglesetofXMLdocuments.TheWiXtoolsmodelthetraditionalcompileandlinkmodelusedtocreateexecutablesfromsourcecode.ThisdocumentprovidesabriefintroductionhowtousethetoolstocompileandlinkWiXsourcecodeintoWindowsInstallerdatabases.
Note:ThisdocumentassumesyouhaveaworkingknowledgeoftheWindowsInstallerdatabaseformat.
.wxs&.wixobj–WindowsInstallerXmlFilesA.wxsfileistheextensionusedbyallsourcefilesintheWindowsInstallerXMLsystem.These.wxsfilesareanalogousto.cppfilesforC++or.csfilesforC#.The.wxsfilesarepreprocessedthencompiledintoWiXobjectfileswhichusetheextension.wixobj.Whenallofthesourcefileshavebeencompiledintoobjectfiles,thelinkerisusedtocollecttheobjectfilestogetherandcreateaWindowsInstallerdatabase.Moredetailsonthecompilerandlinkerareprovidedlaterinthisdocument.
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.
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
tokensareunique.
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.
candle–WindowsInstallerXMLCompilerWindowsInstallerXMLcompilerisexposedbycandle.exe.candleisresponsibleforpreprocessingtheinput.wxsfilesintovalidwell-formedXMLdocumentsagainsttheWiXschema,wix.xsd.Then,eachpost-processedsourcefileiscompiledintoa.wixobjfile.
Thecompilationprocessisrelativelystraightforward.TheWiXschemalendsitselftoasimplerecursivedescentparser.Thecompilerprocesseseachelementinturncreatingnewsymbols,calculatingthenecessaryreferencesandgeneratingtherawdataforthe.wixobjfile.
Thesecondversionofcandleisnotsignificantlydifferentfromthefirstimplementation.Anychangeswereeithermadetoenablethenewsymbol/referencelinkingorbasedonfeedbackfromcustomers.Someofthedifferencesbetweenversionsinclude:thenewobjectfileformatisXMLinsteadofMSI,modularizationofprimarykeysnowhappensatlinktime,andbinarystreamsareimportedatlinktime.
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
associatedwiththeentrysectiontoensuretheyareincludedinthefinalWindowsInstallerdatabase.
Finally,lightworksthroughthemechanicsofgeneratingIDTfilesandimportingthemintotheWindowsInstallerdatabase.Afterthedatabaseisfullycreated,thefinalpostprocessingisdonetomergeinanyMergeModulesandcreateacabinetifnecessary.TheresultisafullyfunctionalWindowsInstallerdatabase.
AuthoringAuthoringistheprocessofwritingtheWiXsourcefilesnecessarytocreateaWindowsInstallerdatabase.Thesourcefiles,whichusuallyhavetheextension.wxs,areXMLdocumentsthatmustconformtotheWiXschema(foundinwix.xsd).
GettingStartedWiXStandardCustomActionsWiXOnlineTutorialExtensionsPatchBuildingUsingtheWixUIdialoglibraryWiXSchemaReferencePubCASchemaReference
GettingStartedWiXcancreateWindowsInstallerdatabaseswhichinclude:WindowsInstallerpackages,MSIfiles,andMergeModules,MSMfiles.We’llstartbycreatingaWindowsInstallerpackagesothatyou’llhavesomethingthatyoucaninstallanduninstallquickly.Then,we’llcreateaMergeModuleandmergeitintoourexampleWindowsInstallerpackage.Finally,I’llcoverafewmoreadvancedtopicssuchashowtodefineCustomActionsandadeeperlookintosymbolsandreferences.
Topics:1. Yourfirst.wxsfile2. CreatingMergeModules3. AddingCustomActions4. MsiTablestoWiXSchemaTranslationGuide
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:
<?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
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>
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.
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>
</Wix>
That'sit!YounowhaveaMergeModulethatcanbesharedwithotherteamstoinstallyour"readme2.txt"file.NowthatwehaveaMergeModule,let'sactuallyuseitinaWindowsInstallerpackage.
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.
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'
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.
<?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
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.
MsiTablestoWiXSchemaIntheWiXschema,itsnotalwaysentirelyobvioushowthetablesfromtheWindowsInstallerschemamaptotheWiXschema.Belowaresomehelpfulhintsonhowtofigureouttherelationshipsbetweenthetwoschemas.
DuplicateFileTableThisisauthoredusingaCopyFilenodenestedunderaFilenode.YouonlyneedtosettheId,DestinationFolder,andDestinationNameattributes.
LaunchConditionTableThisisauthoredusingaConditionnodeauthoredunderFragmentorProduct.YouonlyneedtosettheMessageattribute.
LockPermissionsTableThisisauthoredusingPermission.
MoveFileTableThisisauthoredusingaCopyFilenodenestedunderaComponentnode.YouwillneedtosetallattributesexceptDelete.SetDeleteto'yes'inordertousethemsidbMoveFileOptionsMoveoption.
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>
RemoveIniFileThisisauthoredusingIniFile.JustsettheActionattributeto'removeLine'or'removeTag'asappropriate.
RemoveRegistryTableThisisauthoredusingRegistry.SimplysettheActionattributeto'remove'or'removeKey'(asappropriate)inordertogetanentryintheRemoveRegistrytable.
WindowsInstallerXMLOnlineTutorialsGaborDeakJahnmaintainsanimpressiveonlinetutorialabouttheWindowsInstallerXMLtoolset.ThattutorialisgreatwaytorampupontheWiXtoolsetifyouareneworlookingforanswerstocommonauthoringtask.
AdditionalResourcesRobMenschinghaswrittenanexcellentMSDNarticleonusingVotivetogetstartedinWiX.
WindowsInstallerXMLStandardCustomActionsTheWiXtoolsetcontainsseveralCustomActionstohandleconfiguringresourcessuchasInternetInformationServiceswebsitesandvirtualdirectories,SQLServerdatabasesandscripts,useraccounts,fileshares,andmore.TheseCustomActionsareprovidedintwoseparate.wixlibs:sca.wixlibandwixca.wixlib.Theformercontain"ServerCustomActions"whilethelatterhasmoregeneralinstallationCustomActions.Inthefuture,these.wixlib'smaymergetogetherbutfornow(formostlyhistoricalreasons)theyareseparate.
sca.wixlib-ServerCustomActionsInternetInformationServices(IIS)CustomAction-createandconfigurewebsites,virtualdirectories,webapplications,etc.SQLServerCustomAction-createdatabasesandexecuteSQLscriptsandstatements.UserCustomAction-createandconfigurenewusers.FileShareCustomAction-createandconfigurefileshares(SMB).PerformanceCounterCustomAction-installanduninstallperformancecounters.
wixca.wixlib-GeneralCustomActionsSecureObjectsCustomAction-secure(usingACLs)objectsthatstandardLockPermissiontablecannot.ForfurtherinformationseetheExtendedattributin<Permission/>.ServiceConfigurationCustomAction-configureattributesofaWindowsServicethattheServiceInstalltablecannot.QuietExecutionCustomAction-launchconsoleexecutableswithoutdisplayingawindow.XmlFileCustomAction-allowsyoutoconfigureXMLfilesaspartofyourinstallationpackage.Forfurtherinformationsee<XmlFile/>.
NewCustomActionsarealwaysunderdevelopment.OurgoalistoonedayhavestandardCustomActionsforjustaboutanyneed.FeelfreetoopenaFeatureRequestifyouhaveaCustomActionneed.
UsingtheServerCustomActionsThewixtoolsetcontainsalibraryofcustomactions.Thecenterpieceofthislibraryistheservercustomactionset.TheservercustomactionsextendthesetofresourcesthatanMSIcaninstalltoincludethingssuchaswebsites,fileshares,useraccounts,andmanyothers.Thesecustomactionsproperlyassociatetheseresourceswithcomponents,andfollowalltherulestoproperlyinstall,uninstallandrollbacktheinstallationoruninstallationoftheseresourcesaspartoftheirassociatedcomponents.Thisdocumentwilloutlinetheirusewithsomeexamples.
ThisdocumentassumesthatthereaderhasanunderstandingofMSIcustomactiontypes,andhasread"WiXOverview"and"WritinginWiX".
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.
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
usedinyourwxsfileare"linked"intotheMSI.
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.
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.
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
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
QuietExecutionCustomActionThereisaqtexeccustomactionthatispartofthewixcathatcanrunarbitrarycommandlines.
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.
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>
ExtensionsWiXhassupportforthreeclassesofextensions
IntroductionPreprocessorExtensionsallowclientstomodifyauthoringfilesbeforetheyareprocessedbythecompiler.CompilerExtensionsallowclientstocustomcompileauthoredXMLintointernaltablerepresentationbeforeit'swrittentobinaryform.BinderExtensionsallowclientstothefeedtheinterlaceimageprocessinganddatafinalization.ThroughtheseextensionsonecanextendWiXtosupportcustompreprocessing,XMLsyntaxcompilation,orbindingsemanticsforonesparticularlayoutgenerationprocess.
CommonRequirementsHowtouseeachshouldstartinthesourcecodebuttheyallhaveafewthingsincommonImplementedinsameversionof.NET1.1astherestofWiXBuildasubclassoftheappropriateextensionobjectgivingitaeasilydistinguishablename.Buildaschemaoftheappropriatesyntaxtoprovidevalidationcheckingwherepossible.Buildinternaltabledefinitionsandregisterthemwiththecompiler.Buildoverridesforextendablemethodsandvirtualmemberswhichwillgetinvokedattheapproriatelocationduringthesinglepasscompile.BuildextensionintoaDLL.PlaceextensionDLLnexttoWiXEXEs.RegisteredwithWiXviacommandlineargumenttothecompiler
ConsiderationsBeforeinvestinginanextension,oneshouldevaluatewhetheranexternaltoolandthe?includesyntax(fromthepreprocessor)willprovidetheneededflexabilityforyourtechnicalneeds.Multipleextensionsandextensiontypesaresupportedbutthereisnoguarenteeoftheorderaparticularclassofextensionswillbeprocessessothereshouldbenosequencingdependenciesbetweenextensionswithinthesameextensionclass.
PatchBuildingCreatingaPatchwithWixNote:YoumusthaveWindowsInstaller3.0installed\
1. DoanadministrativeinstalloftheRTMversion(TargetImage).2. UpdatePackageIdinMain.wxs.3. MakenewInstaller.msi4. Doanadministrativeinstallofthelatestversion(UpdateImage
withnewfilesyouwanttopatch).5. Createapatchcreationproperties(.pcp)file.6. Createthepatch.7. Runthepatch
1.AdministrativeinstallofRTMversionWiththeRTMinstaller.msi,run
mdc:\patchdir
mdc:\patchdir\rtm
msiexec/ainstaller.msiTARGETDIR=c:\patchdir\rtm
2.UpdatePackageIdinsource.wxsfile.MakeanewGuidfortheId=attributeunderthe%lt;Package>taginthewxsfiles.
3.Makenewinstaller.msi
4.AdministrativeinstalloflatestversionWiththenewinstaller.msi,run
mdc:\patchdir\latest
msiexec/ainstaller.msiTARGETDIR=c:\patchdir\latest
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"/>
</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.)
6.Createthepatchmspfilecandlepatch.wxs
lightpatch.wixobj-outpatch.pcp
msimsp-spatch.pcp-ppatch.msp-lmsimsp.log
7.Runthepatchmsiexec/updatepatch.mspREINSTALL=ALL/L*vpatch.log
UsingtheWixUIdialoglibraryTheWixUIdialoglibrarycontainsasetof"stock"dialogsprovidingthefamiliarwizard-stylesetupuserinterface.Severalstockdialogsetsaresupported--useoneUIReftoaddauserinterfacetoyoursetup.WixUIisalsocustomizable,fromthebitmapsshownintheUItoaddingandremovingcustomdialogs.
Note:TheWixUIdialoglibraryiscurrentlyattechnicalpreviewstatus.PleaseprovidefeedbackontheWiX-devsmailinglist.Aretheprovidedstockdialogsetsuseful?Doyouhavesuggestionsforothers?HatetheUI?Needanotherdialog?Basedonfeedback,theWixUIlibrarymightchangeinincompatibleways.
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"/>
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.
SpecifyingalicensefileThestockdialogsetshaveadialogthatdisplaysanend-userlicenseagreement(EULA).Tospecifyyourproduct'slicense,includeaLicense.rtffileinthecurrentdirectorywhenyourunlight.Ifthereisn'tsuchafile,lightusestheLicense.rtffileintheuidirectory.
UsingtranslatederrorandprogresstextBydefault,WixUIdoesn'tincludeanytranslatedErrororProgressTextelementsbydefault.YoucanincludethembyreferencingtheWixUI_ErrorProgressTextUIelement:
<UIRefId="WixUI_Minimal"/>
<UIRefId="WixUI_ErrorProgressText"/>
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.
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
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
AllocateRegistrySpaceAppDataAppIdAppSearchAssemblyNameBillboardBillboardActionBinaryBindImageCategoryCCPSearchCertificateCertificateRefClassColumnComboBoxComplianceCheckComplianceDriveComponentComponentGroupComponentGroupRefComponentRefComponentSearchConditionConfigurationConfigurationDataControlCopyFileCostFinalizeCostInitializeCreateFolderCreateFoldersCreateShortcuts
CustomCustomActionCustomActionRefCustomPropertyCustomTableDataDeleteServicesDependencyDialogDialogRefDigitalCertificateDigitalSignatureDirectoryDirectoryRefDirectorySearchDirectorySearchRefDisableRollbackDuplicateFilesEnsureTableEnvironmentErrorExclusionExecuteActionExtensionExternalFileFamilyFeatureFeatureRefFileFileCostFileSearchFileSearchRefFileShare
FileTypeMaskFindRelatedProductsForceRebootFragmentFragmentRefGroupGroupRefHttpHeaderIconIgnoreModularizationIgnoreRangeIncludeIniFileIniFileSearchInstallAdminPackageInstallExecuteInstallExecuteAgainInstallExecuteSequenceInstallFilesInstallFinalizeInstallInitializeInstallODBCInstallServicesInstallUISequenceInstallValidateInterfaceIsolateComponentIsolateComponentsLaunchConditionsListBoxListItemListViewMedia
MergeMergeRefMigrateFeatureStatesMIMEMimeMapModuleMoveFilesMsiPublishAssembliesMsiUnpublishAssembliesODBCDataSourceODBCDriverODBCTranslatorPackagePatchPatchCertificatesPatchCreationPatchFilesPatchInformationPatchMetadataPatchPackagePatchPropertyPatchSequencePerfCounterPermissionProcessComponentsProductProgIdProgressTextPropertyPropertyRefProtectFileProtectRangePublish
PublishComponentsPublishFeaturesPublishProductRadioButtonRadioButtonGroupRecycleTimeRegisterClassInfoRegisterComPlusRegisterExtensionInfoRegisterFontsRegisterMIMEInfoRegisterProductRegisterProgIdInfoRegisterTypeLibrariesRegisterUserRegistryRegistrySearchRegistrySearchRefRegistryValueRemoveDuplicateFilesRemoveEnvironmentStringsRemoveExistingProductsRemoveFileRemoveFilesRemoveFolderRemoveFoldersRemoveIniValuesRemoveODBCRemoveRegistryValuesRemoveShortcutsReplacePatchReserveCostResolveSource
RMCCPSearchRowScheduleRebootSelfRegModulesSelfUnregModulesServiceArgumentServiceConfigServiceControlServiceDependencyServiceInstallSetODBCFoldersSFPCatalogSFPFileShortcutShowSqlDatabaseSqlFileSpecSqlLogFileSpecSqlScriptSqlStringStartServicesStopServicesSubscribeSubstitutionSymbolPathTargetFileTargetImageTargetProductCodeTextTextStyleTypeLibUIUIRef
UITextUnpublishComponentsUnpublishFeaturesUnregisterClassInfoUnregisterComPlusUnregisterExtensionInfoUnregisterFontsUnregisterMIMEInfoUnregisterProgIdInfoUnregisterTypeLibrariesUpgradeUpgradeFileUpgradeImageUpgradeVersionUserValidateProductIDVerbWebAddressWebApplicationWebApplicationExtensionWebAppPoolWebDirWebDirPropertiesWebErrorWebFilterWebLogWebPropertyWebServiceExtensionWebSiteWebVirtualDirWixWriteEnvironmentStringsWriteIniValues
WriteRegistryValuesXmlFile
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
LaunchConditiontableandevaluateseachconditionalstatementrecordedthere.ResolveSource(min:0,max:unbounded):DeterminesthelocationofthesourceandsetstheSourceDirpropertyifthesourcehasnotbeenresolvedyet.
AttributesNone
SeeAlsoWixSchema
Version2.0.4820.0
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
volumeshaveenoughspacefortheinstallation.LaunchConditions(min:0,max:unbounded):QueriestheLaunchConditiontableandevaluateseachconditionalstatementrecordedthere.Show(min:0,max:unbounded)
AttributesNone
SeeAlsoWixSchema
Version2.0.4820.0
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.
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
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
AppDataElement
Description
OptionalwayfordefiningAppData,generallyusedforcomplexCDATA.
WindowsInstallerreferencesNone
ParentsCategory
SeeAlsoWixSchema
Version2.0.4820.0
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
generateRegistryrowsthatperformsimilarregistration(withouttheoftenproblematicWindowsInstalleradvertisingbehavior).
Description String SetthisvaluetothedescriptionoftheAppId.ItcanonlybespecifiedwhentheAppIdisnotbeingadvertised.
DllSurrogate String SetthisvaluetospecifythattheclassisaDLLthatistobeactivatedinasurrogateEXEprocess,andthesurrogateprocesstobeusedisthepathofasurrogateEXEfilespecifiedbythevalue.
LocalService String SetthisvaluetothenameofaservicetoallowtheobjecttobeinstalledasaWin32service.
RemoteServerName String SetthisvaluetothenameoftheremoteservertoconfiguretheclienttorequesttheobjectberunataparticularmachinewheneveranactivationfunctioniscalledforwhichaCOSERVERINFOstructureisnotspecified.
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
[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"
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
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
sequence.Suppress YesNoType Ifyes,thisactionwillnotoccur.
SeeAlsoWixSchema,ComponentSearch,FileSearch,IniFileSearch,RegistrySearch
Version2.0.4820.0
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
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
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
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
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
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
thatisimplementedinmultiplelanguages.
SeeAlsoWixSchema
Version2.0.4820.0
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
WixSchema,RMCCPSearch,ComplianceCheckVersion2.0.4820.0
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.
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
issuecertificatestoothers.Certificatesinthesestoresarenormallysuppliedwiththeoperatingsystemorbytheuser'snetworkadministrator.
myUsethe"personal"valueinstead.
personalContainspersonalcertificates.Thesecertificateswillusuallyhaveanassociatedprivatekey.Thisstoreisoftenreferredtoasthe"MY"certificatestore.
request
rootContainsthecertificatesofcertificateauthoritiesthattheusertruststoissuecertificatestoothers.Certificatesinthesestoresarenormallysuppliedwiththeoperatingsystemorbytheuser'snetworkadministrator.Certificatesinthisstorearetypicallyself-signed.
otherPeopleContainsthecertificatesofthosethattheusernormallysends
envelopedmessagestoorreceivessignedmessagesfrom.SeeMSDNdocumentationformoreinformation.
SeeAlsoWixSchema,CertificateRef
Version2.0.4820.0
CertificateRefElement
Description
AssociatesacertificatewiththeparentWebSite.TheCertificateelementshouldbeinthesameComponentastheparentWebSite.
WindowsInstallerreferencesNone
ParentsWebSite
InnerTextNone
ChildrenNone
Attributes
Name Type Description RequiredId String Theidentifierofthereferenced
Certificate.Yes
SeeAlsoWixSchema,Certificate
Version2.0.4820.0
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
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?
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
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}]
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:
[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.
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}"
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
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
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
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
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
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
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
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)
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
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
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:
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
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
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
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
component.Youcannotsetmorethanonefeatureastheprimaryfeatureofagivencomponent.
SeeAlsoWixSchema,ComponentGroup
Version2.0.4820.0
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
component.Youcannotsetmorethanonefeatureastheprimaryfeatureofagivencomponent.
SeeAlsoWixSchema,Component
Version2.0.4820.0
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
SeeAlsoWixSchema,IniFileSearch,RegistrySearch
Version2.0.4820.0
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
show
Level String UsedonlyunderFeatureelementsandisrequired.AllowsmodifyingthelevelofaFeaturebasedontheresultofthiscondition.
Message String UsedonlyunderFragmentorProductelementsandisrequired.Setthevaluetothetexttodisplaywhentheconditionfailsandtheinstallationmustbeterminated.
SeeAlsoWixSchema
Version2.0.4820.0
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
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
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
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)
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
'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
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
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
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
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
bespecifiediftheelementisnestedunderaFileelementortheFileIdattributeisspecified.Inothercases,iftheattributeisnotspecified,thedefaultvalueis"no"andthefileiscopied,notmoved.Setthevalueto"yes"inordertomovethefile(thusdeletingthesourcefile)insteadofcopyingit.
DestinationDirectory String Setthisvaluetothedestinationdirectorywhereanexistingfileonthetargetmachineshouldbemovedorcopiedto.ThisDirectorymustexistintheinstallerdatabaseatcreationtime.ThisattributecannotbespecifiedinconjunctionwithDestinationProperty.
DestinationLongName LongFileNameType Ifthedestinationnameofthefileneedstobelongerthan8.3format,thenthisattributeshouldbespecifiedwiththelongfilename(inadditiontotheNameattribute
whichisalwaysrequiredfortargetsystemsthatmightnotsupportlongfilenames).
DestinationName ShortFileNameType Setthisvaluetothelocalizablenametobegiventotheoriginalfileafteritismovedorcopied.thisattributeisnotspecified,thenthedestinationfileisgiventhesamenameasthesourcefile.
DestinationProperty String Setthisvaluetoapropertythatwillhaveavaluethatresolvestothefullpathofthedestinationdirectory.Thepropertydoesnothavetoexistintheinstallerdatabaseatcreationtime;itcouldbecreatedatinstallationtimebyacustomaction,onthecommandline,etc.ThisattributecannotbespecifiedinconjunctionwithDestinationDirectory.
FileId String Thisattributecannotbespecifiediftheelementisnested
underaFileelement.Setthisattribute'svaluetotheidentifierofafilefromadifferentcomponenttocopyitbasedontheinstallstateoftheparentcomponent.
SourceDirectory String ThisattributecannotbespecifiediftheelementisnestedunderaFileelementortheFileIdattributeisspecified.Setvaluetothesourcedirectoryfromwhichtocopyormoveanexistingfileonthetargetmachine.ThisDirectorymustexistintheinstallerdatabaseatcreationtime.ThisattributecannotbespecifiedinconjunctionwithSourceProperty.
SourceName WildCardLongFileNameType ThisattributecannotbespecifiediftheelementisnestedunderaFileelementortheFileIdattributeisspecified.Setvaluetothelocalizablenameofthefile(s)tobecopiedormoved.ofthefilesthat
matchthewildcardwillberemovedfromthespecifieddirectory.Thevalueisafilenamethatmayalsocontainthewildcardcharacters"?"foranysinglecharacteror"*"forzeroormoreoccurrencesofanycharacter.Ifthisattributeisnotspecified(andthiselementisnotnestedunderaFileelementorspecifyaFileIdattribute)thentheSourcePropertyattributeshouldbesettothenameofapropertythatwillresolvetothefullpathofthesourcefilename.Ifthevalueofthisattributecontainsa"*"wildcardandtheDestinationNameattributeisspecified,allmovedorcopiedfilesretainthefilenamesfromtheirsources.
SourceProperty String ThisattributecannotbespecifiediftheelementisnestedunderaFileelement
ortheFileIdattributeisspecified.Setvaluetoapropertythatwillhaveavaluethatresolvestothefullpathofthesourcedirectory(orfullpathincludingfilenameifSourceNameisnotspecified).Thepropertydoesnothavetoexistintheinstallerdatabaseatcreationtime;itcouldbecreatedatinstallationtimebyacustomaction,onthecommandline,etc.ThisattributecannotbespecifiedinconjunctionwithSourceDirectory.
SeeAlsoWixSchema,RemoveFile
Version2.0.4820.0
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
sequence.Suppress YesNoType Ifyes,thisactionwillnotoccur.
SeeAlsoWixSchema,CostInitialize,FileCost
Version2.0.4820.0
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
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
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
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
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
SeeAlsoWixSchema,CustomAction
Version2.0.4820.0
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.
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
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
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
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
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
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
DataElement
Description
DataitemforarowofaCustomTable
WindowsInstallerreferencesNone
ParentsRow
InnerText(xs:string)Elementvalueisdatathedatavalue
ChildrenNone
Attributes
Name Type Description RequiredColumn String Yes
SeeAlsoWixSchema
Version2.0.4820.0
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
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
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
Title String TrackDiskSpace YesNoType Width Integer indialogunits YesX Integer in%,defaultstocenteredon
screen(50)
Y Integer in%,defaultstocenteredonscreen(50)
SeeAlsoWixSchema
Version2.0.4820.0
DialogRefElement
Description
ReferencetoaDialog.Thiswillcausetheentirereferencedsection'scontentstobeincludedintheinstallerdatabase.
WindowsInstallerreferencesNone
ParentsUI
InnerTextNone
ChildrenNone
Attributes
Name Type Description RequiredId String TheidentifieroftheDialogto
reference.Yes
SeeAlsoWixSchema,Dialog
Version2.0.4820.0
DigitalCertificateElement
Description
Addsadigitalcertificate.
WindowsInstallerreferencesMsiDigitalCertificateTable
ParentsDigitalSignature,PatchCertificates
InnerTextNone
ChildrenNone
Attributes
Name Type Description RequiredId String Identifierforacertificatefile. YesSourceFile String Thepathtothecertificatefile. Yes
SeeAlsoWixSchema
Version2.0.4820.0
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
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
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.
SeeAlsoWixSchema,DirectoryRef
Version2.0.4820.0
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
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.
SeeAlsoWixSchema,ComponentSearch,IniFileSearch,RegistrySearch
Version2.0.4820.0
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.
Path String Pathontheuser'ssystem.Eitherabsolute,orrelativetocontainingdirectories.
SeeAlsoWixSchema,ComponentSearch,IniFileSearch,RegistrySearch
Version2.0.4820.0
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
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
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
WixSchemaVersion2.0.4820.0
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
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
onuninstall.Separator String Optionalattributetochangethe
separatorusedbetweenvalues.Bydefaultasemi-colonisused.
System YesNoType Specifiesthattheenvironmentvariableshouldbeaddedtothesystemenvironmentspace.Thedefaultis'no'whichindicatestheenvironmentvariableisaddedtotheuserenvironmentspace.
Value String Valuetosetintotheenvironmentvariable.
SeeAlsoWixSchema
Version2.0.4820.0
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
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
basedonversion.ExcludeExceptLanguage Integer NumericlanguageIDof
themergemoduleinExcludedID.Allexceptthislanguagewillbeexcluded.OnlyoneofExcludeExceptLanguageandExcludeLanguagemaybespecified.
ExcludeLanguage Integer NumericlanguageIDofthemergemoduleinExcludedID.Thespecifiedlanguagewillbeexcluded.OnlyoneofExcludeExceptLanguageandExcludeLanguagemaybespecified.
SeeAlsoWixSchema
Version2.0.4820.0
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
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
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
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.
VolumeLabel String EnteredintotheVolumeLabelfieldofthenewMediatablerecord.
SeeAlsoWixSchema
Version2.0.4820.0
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.
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.
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
theSelectionDialog.TypicalDefault Enumeration Thisattributedeterminesthedefaultadvertisestate
ofthefeature.Thisattribute'svalueshouldbeoneofthefollowing:advertise
SetsthefeaturetobeadvertisedbysettingthemsidbFeatureAttributesFavorAdvertiseattribute.ThisvaluecannotbesetifthevalueoftheAllowAdvertiseattributeis'no'sincethatwouldasktheinstallertodisallowtheadvertisedstateforthisfeaturewhileatthesametimefavoringit.
installSetsthefeaturetothedefaultnon-advertisedinstallationoption.
Anyattributenamespace='##other'processContents='lax'
SeeAlsoWixSchema,FeatureRef
Version2.0.4820.0
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
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
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
attributemayonlybespecifiediftheAssemblyattributeissetto'.net'or'win32'.
AssemblyManifest String Specifiesthefileidentifierofthemanifestfilethatdescribesthisassembly.Themanifestfileshouldbeinthesamecomponentastheassemblyitdescribes.ThisattributemayonlybespecifiediftheAssemblyattributeissetto'.net'or'win32'.
BindPath String generatesBindImagetablerow,valuemybeemptystring
Checksum YesNoType Thisattributeshouldbesetto"yes"foreveryexecutablefileintheinstallationthathasavalidchecksum
storedinthePortableExecutable(PE)fileheader.Onlythosefilesthathavethisattributesetwillbeverifiedforvalidchecksumduringareinstall.
CompanionFile String Setthisattributetomakethisfileacompanionchildofanotherfile.Theinstallationstateofacompanionfiledependsnotonitsownfileversioninginformation,butontheversioningofitscompanionparent.Afilethatisthekeypathforitscomponentcannotbeacompanionfile(thatmeansthisattributecannotbesetifKeyPath="yes"
forthisfile).TheVersionattributecannotbesetalongwiththisattributesincecompanionfilesarenotinstalledbasedontheirownversion.
Compressed YesNoDefaultType Setsthefile'ssourcetypecompression.Asettingof"yes"or"no"willoverridethesettingintheWordCountSummaryProperty.
DefaultLanguage String Thisisthedefaultlanguageofthisfile.Thelinkerwillreplacethisvaluefromthevalueinthefileifthesuppressfilesoptionisnotused.
DefaultSize Integer Thisisthedefaultsizeofthisfile.Thelinkerwillreplacethisvaluefromthevalueinthefileifthesuppress
filesoptionisnotused.
DefaultVersion String Thisisthedefaultversionofthisfile.Thelinkerwillreplacethisvaluefromthevalueinthefileifthesuppressfilesoptionisnotused.
DiskId String SpecifiestheMediathisFileshouldbesourcedon.ThisattributemustbesetonthisFileelementoritsparentComponent.
FontTitle String generatesentriesinFonttablewiththeFontTitle
Hidden YesNoType Settoyesinordertohavethefile'shiddenattributesetwhenitisinstalledonthetargetmachine.
KeyPath YesNoType SetyestoforcethisFiletobekeypathforparentComponent.
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
AssembliesfortheCLR2.0.Thisattribute'svalueshouldbeoneofthefollowing:msil
x86
x64
ia64
ReadOnly YesNoType Settoyesinordertohavethefile'sread-onlyattributesetwhenitisinstalledonthetargetmachine.
SelfRegCost Integer generatesSelfRegtablerow
Source String SpecifiesthepathtotheFileinthebuildprocess.Thisattributemustbesetifnosourceinformationcanbegatheredfromparentdirectories.
src String Thisattributehasbeendeprecated;pleaseusetheSourceattribute
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
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
Name Type Description RequiredSequence Integer Avalueusedtoindicatethe
positionofthisactioninasequence.
Suppress YesNoType Ifyes,thisactionwillnotoccur.
SeeAlsoWixSchema,CostInitialize,CostFinalize
Version2.0.4820.0
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
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
8.3format.EitherthisattributeortheLongNameisrequired.
SeeAlsoWixSchema,ComponentSearch,DirectorySearch,DirectorySearchRef,FileSearchRef,IniFileSearch,RegistrySearch
Version2.0.4820.0
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
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
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
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.
Suppress YesNoType Ifyes,thisactionwillnotoccur.
SeeAlsoWixSchema,Upgrade
Version2.0.4820.0
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
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)
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
Attributes
Name Type Description RequiredId String OptionalidentifierforaFragment.
ShouldonlybeusedifyouplantorefertothisFragmentviaaFragmentRefelementelsewhere.
SeeAlsoWixSchema,FragmentRef
Version2.0.4820.0
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
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
GroupRefElement
Description
Usedtojoinausertoagroup
WindowsInstallerreferencesNone
ParentsUser
InnerTextNone
ChildrenNone
Attributes
Name Type Description RequiredId String Yes
SeeAlsoWixSchema
Version2.0.4820.0
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
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
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
IgnoreRangeElement
Description
Specifiespartofafilethatistobeignoredduringpatching.
WindowsInstallerreferencesNone
ParentsExternalFile,TargetFile
InnerTextNone
ChildrenNone
Attributes
Name Type Description RequiredLength Int Lengthoftherange. YesOffset Int Offsetofthestartoftherange. Yes
SeeAlsoWixSchema
Version2.0.4820.0
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)
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)
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
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
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
Version2.0.4820.0
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
format,requiredforbackwardscompatibility.
Section String Thesectionnamewithinthe.inifile.
Yes
Type Enumeration MustbefileiflastchildisFileSearchelementandmustbedirectoryiflastchildisDirectorySearchelement.Thisattribute'svalueshouldbeoneofthefollowing:directory
Adirectorylocation.
fileAfilelocation.
rawAraw.inivalue.
SeeAlsoWixSchema,ComponentSearch,RegistrySearch
Version2.0.4820.0
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
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
Version2.0.4820.0
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
Version2.0.4820.0
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.
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
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
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.
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.
WriteIniValues(min:0,max:unbounded):Writesthe.inifileinformationthattheapplicationneedswrittentoits.inifiles.WriteRegistryValues(min:0,max:unbounded):Setsupanapplication'sregistryinformation.
AttributesNone
SeeAlsoWixSchema
Version2.0.4820.0
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
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
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
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
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
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
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
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
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
'yes'.
SeeAlsoWixSchema
Version2.0.4820.0
IsolateComponentElement
Description
SharedComponenttobeprivatelyreplicatedinfolderofparentComponent
WindowsInstallerreferencesIsolateComponentTable
ParentsComponent,Include
InnerTextNone
ChildrenNone
Attributes
Name Type Description RequiredShared String SharedComponentforthisapplication
ComponentYes
SeeAlsoWixSchema
Version2.0.4820.0
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
Sequence Integer Avalueusedtoindicatethepositionofthisactioninasequence.
Suppress YesNoType Ifyes,thisactionwillnotoccur.
SeeAlsoWixSchema,IsolateComponent
Version2.0.4820.0
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.
Suppress YesNoType Ifyes,thisactionwillnotoccur.
SeeAlsoWixSchema,Condition
Version2.0.4820.0
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
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
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
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
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
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
labelofthephysicalmedia.
SeeAlsoWixSchema
Version2.0.4820.0
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
ascompressionlevel,cabembedding,etc...).
FileCompression YesNoType Language Integer SpecifiesthedecimalLCID
forthelanguagetomergetheModuleinas.
Yes
SourceFile String src String Thisattributehasbeen
deprecated;pleaseusetheSourceFileattributeinstead.
SeeAlsoWixSchema,MergeRef
Version2.0.4820.0
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
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
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
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
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)
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
(LCID)ofthemergemodule.
Version String Theproductversionstringofthemergemodule.
Yes
SeeAlsoWixSchema
Version2.0.4820.0
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
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
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
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
WixSchemaVersion2.0.4820.0
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
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
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.
InstallerVersion Integer Theminimuminstallerversion(major*100+minor).
InstallPrivileges Enumeration UsethisattributetospecifythepriviligesrequiredtoinstallthepackageonWindowsVistaandabove.Thisattribute'svalueshouldbeoneofthefollowing:limited
Setthisvaluetodeclarethatthepackagedoesnotrequireelevatedprivilegestoinstall.
elevatedSetthisvaluetodeclarethatthepackagerequireselevatedprivilegestoinstall.Thisisthedefaultvalue.
Keywords String Optionalkeywordsfor
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
stringsonly.Thelanguageneutralcodepage,zero,isnotavalidvalue.
SeeAlsoWixSchema
Version2.0.4820.0
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
PatchCertificatesElement
Description
Identifiesthepossiblesignercertificatesusedtodigitallysignpatches.
WindowsInstallerreferencesMsiPatchCertificateTable
ParentsFragment,Product
InnerTextNone
ChildrenChoiceofelements(min:1,max:unbounded)DigitalCertificate(min:1,max:unbounded)
AttributesNone
SeeAlsoWixSchema
Version2.0.4820.0
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
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
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
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
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
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
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
3.1.
MoreInfoURL String AURLthatprovidesinformationspecifictothispatch.InAdd/RemoveProgramsfromXPSP2on.
OptimizedInstallMode YesNoType Ifthisattributeissetto'yes'inallthepatchestobeappliedinatransaction,theapplicationofthepatchisoptimizedifpossible.AvailablebeginningwithWindowsInstaller3.1.
TargetProductName String Nameoftheapplicationortargetproductsuite.
Yes
SeeAlsoWixSchema
Version2.0.4820.0
PatchPackageElement
Description
PatchPackagefoundonparentMediaelement
WindowsInstallerreferencesNone
ParentsMedia
InnerText(uuid)ElementvalueisPatchIdGUID.
ChildrenNone
AttributesNone
SeeAlsoWixSchema
Version2.0.4820.0
PatchPropertyElement
Description
Apropertyforthispatchdatabase.
WindowsInstallerreferencesNone
ParentsPatchCreation
InnerTextNone
ChildrenNone
Attributes
Name Type Description RequiredName String Nameofthepatchcreationproperty. YesValue String Valueofthepatchcreationproperty. Yes
SeeAlsoWixSchema
Version2.0.4820.0
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
SDK.Target String Usedtodeterminetheproduct
codefilteringforthepatchfamily.
SeeAlsoWixSchema
Version2.0.4820.0
PerfCounterElement
Description
UsedtoinstallPerfmoncounters.
WindowsInstallerreferencesNone
ParentsFile
InnerTextNone
ChildrenNone
Attributes
Name Type Description RequiredName String
SeeAlsoWixSchema
Version2.0.4820.0
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
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
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.
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
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
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)
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
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
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
stringisalsovalidforthisattribute.SeetheMSDNdocumentationformoreinformation.
SeeAlsoWixSchema
Version2.0.4820.0
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
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
AdminPropertiesPropertyformoreinformation.
ComplianceCheck YesNoType AddsarowtotheCCPSearchtable.ThisattributeisonlyvalidwhenthisPropertycontainsasearchelement.
Hidden YesNoType DenotesthatthePropertyisnotloggedduringinstallation.SeetheMsiHiddenPropertiesPropertyformoreinformation.
Secure YesNoType DenotesthatthePropertycanbepassedtotheserversidewhendoingamanagedinstallationwithelevatedprivileges.SeetheSecureCustomPropertiesPropertyformoreinformation.
Value String Setsadefaultvaluefortheproperty.ThevaluewillbeoverwrittenifthePropertyisusedforasearch.
SeeAlsoWixSchema,PropertyRef
Version2.0.4820.0
PropertyRefElement
Description
ReferencetoaPropertyvalue.
WindowsInstallerreferencesNone
ParentsFragment,Include,Module,Product
InnerTextNone
ChildrenNone
Attributes
Name Type Description RequiredId String IdentifierofPropertytoreference. Yes
SeeAlsoWixSchema,Property
Version2.0.4820.0
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
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
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
theEventattribute.
SeeAlsoWixSchema
Version2.0.4820.0
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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).
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
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
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
64-bitregistrywhenthevalueis'yes'.Defaultis'no'andsearchlooksinthe32-bitregistry.
SeeAlsoWixSchema,ComponentSearch,IniFileSearch
Version2.0.4820.0
RegistrySearchRefElement
Description
ReferencesanexistingRegistrySearchelement.
WindowsInstallerreferencesNone
ParentsProperty
InnerTextNone
ChildrenNone
Attributes
Name Type Description RequiredId String SpecifytheIdoftheRegistrySearchto
reference.Yes
SeeAlsoWixSchema,RegistrySearch
Version2.0.4820.0
RegistryValueElement
Description
UseseveraloftheseelementstospecifyeachregistryvalueinamultiStringregistryvalue.ThiselementcannotbeusediftheValueattributeisspecifiedunlesstheTypeattributeissetto'multiString'.ThevaluesshouldgointhetextareaoftheRegistryValueelement.
WindowsInstallerreferencesRegistryTable
ParentsRegistry
InnerText(xs:string)Thiselementmayhaveinnertext.
ChildrenNone
AttributesNone
SeeAlsoWixSchema
Version2.0.4820.0
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
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
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
Version2.0.4820.0
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.
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
whentheparentcomponentisbeinginstalled(msiInstallStateLocalormsiInstallStateSource).
uninstallRemovesthefileonlywhentheparentcomponentisbeingremoved(msiInstallStateAbsent).
bothRemovesthefilewhentheparentcomponentisbeinginstalledorremoved.
Property String Overridesthedirectoryoftheparentcomponentwiththevalueofthespecifiedproperty.Thepropertyshouldhaveavaluethatresolvestothefullpathofthesourcedirectory.Thepropertydoesnothavetoexistintheinstallerdatabaseatcreationtime;itcouldbecreatedatinstallationtimebyacustomaction,onthecommandline,etc.ThisattributecannotbespecifiedinconjunctionwiththeDirectoryattribute.
SeeAlsoWixSchema,CopyFile
Version2.0.4820.0
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
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
Thisattribute'svalueshouldbeoneofthefollowing:install
Removesthefolderonlywhentheparentcomponentisbeinginstalled(msiInstallStateLocalormsiInstallStateSource).
uninstallRemovesthefolderonlywhentheparentcomponentisbeingremoved(msiInstallStateAbsent).
bothRemovesthefolderwhentheparentcomponentisbeinginstalledorremoved.
Property String Overridesthedirectoryoftheparentcomponentwiththevalueofthespecifiedproperty.Thepropertyshouldhaveavaluethatresolvestothefullpathofthesourcedirectory.Thepropertydoesnothavetoexistintheinstallerdatabaseatcreationtime;itcouldbecreatedatinstallationtimebyacustomaction,onthecommandline,etc.ThisattributecannotbespecifiedinconjunctionwiththeDirectoryattribute.
SeeAlsoWixSchema,CreateFolder
Version2.0.4820.0
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
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
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
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
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
ReplacePatchElement
Description
Apatchthatisdeprecatedbythispatch.
WindowsInstallerreferencesNone
ParentsPatchCreation
InnerTextNone
ChildrenNone
Attributes
Name Type Description RequiredId Uuid PatchGUIDtobeunregisteredifit
existsonthemachinetargetedbythispatch.
Yes
SeeAlsoWixSchema
Version2.0.4820.0
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
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
Version2.0.4820.0
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.
Suppress YesNoType Ifyes,thisactionwillnotoccur.
SeeAlsoWixSchema,CCPSearch,ComplianceCheck
Version2.0.4820.0
RowElement
Description
RowdataforaCustomTable
WindowsInstallerreferencesNone
ParentsCustomTable
InnerTextNone
ChildrenSequence(min:1,max:1)
1. Data(min:1,max:unbounded)
AttributesNone
SeeAlsoWixSchema
Version2.0.4820.0
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
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
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
ServiceArgumentElement
Description
ArgumentusedinServiceControlparent
WindowsInstallerreferencesServiceControlTable
ParentsServiceControl
SeeAlsoWixSchema
Version2.0.4820.0
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",
thisspecifiesthecommandtorunwhendoingso.
RebootMessage String Ifanyofthethree*ActionTypeattributesis"reboot",thisspecifiesthemessagetobroadcasttoserverusersbeforedoingso.
ResetPeriodInDays Integer Numberofdaysafterwhichtoresetthefailurecounttozeroiftherearenofailures.
RestartServiceDelayInSeconds Integer Ifanyofthethree*ActionTypeattributesis"restart",thisspecifiesthenumberofsecondstowaitbeforedoingso.
SecondFailureActionType Enumeration Actiontotakeonthesecondfailureoftheservice.Thisattribute'svalueshouldbeone
Yes
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
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
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
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
WixSchemaVersion2.0.4820.0
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
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
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
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
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
SFPFileElement
Description
Providesamany-to-manymappingfromtheSFPCatalogtabletotheFiletable
WindowsInstallerreferencesFileSFPCatalogTable
ParentsSFPCatalog
InnerTextNone
ChildrenNone
Attributes
Name Type Description RequiredId String PrimaryKeytoFileTable. Yes
SeeAlsoWixSchema
Version2.0.4820.0
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
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
thisattributeisspecified,theDescriptionResourceIdattributemustalsobeprovided.
ThisattributeisonlyusedonWindowsVistaandabove.IfthisattributeisnotspecifiedandtheinstallisrunningonVistaandabove,thevalueintheNameattributeisused.IfthisattributeisprovidedandtheinstallisrunningonVistaandabove,thevalueintheNameattributeisignored.
DescriptionResourceId Integer Thedescriptionnameindexfortheshortcut.Thismustbeanon-negativenumber.Whenthisattributeisspecified,theDescriptionResourceDllattributemustalsobepopulated.
ThisattributeisonlyusedonWindowsVistaandabove.IfthisattributeisnotspecifiedandtheinstallisrunningonVistaandabove,thevalueintheNameattributeisused.Ifthisattributeis
populatedandtheinstallisrunningonVistaandabove,thevalueintheNameattributeisignored.
Directory String IdentifierreferencetoDirectoryelementwhereshortcutistobecreated.
DisplayResourceDll String TheFormattedstringprovidingthefullpathtothelanguageneutralfilecontainingtheMUIManifest.Generallyauthoredusing[#filekey]form.Whenthisattributeisspecified,theDisplayResourceIdattributemustalsobeprovided.
ThisattributeisonlyusedonWindowsVistaandabove.IfthisattributeisnotpopulatedandtheinstallisrunningonVistaandabove,thevalueintheNameattributeisused.IfthisattributeispopulatedandtheinstallisrunningonVistaandabove,thevalueintheNameattributeisignored.
DisplayResourceId Integer Thedisplaynameindexfortheshortcut.Thismustbeanon-negativenumber.Whenthisattributeisspecified,theDisplayResourceDllattributemustalsobeproviced.
ThisattributeisonlyusedonWindowsVistaandabove.IfthisattributeisnotspecifiedandtheinstallisrunningonVistaandabove,thevalueintheNameattributeisused.IfthisattributeisspecifiedandtheinstallisrunningonVistaandabove,thevalueintheNameattributeisignored.
Hotkey Integer Thehotkeyfortheshortcut.Thelow-orderbytecontainsthevirtual-keycodeforthekey,andthehigh-orderbytecontainsmodifierflags.Thismustbeanon-negativenumber.Authorsofinstallationpackagesaregenerallyrecommendnottosetthisoption,becausethiscanaddduplicatehotkeystoausers
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.
ThisattributeisnotvalidforAdvertisedshortcuts.ThevaluewillbedefaultedtotheparentFilewhennestedunderaFileelement.Ifyouspecifythisvaluethenuseaformattedfileidentifier,forexample:[!TargetFileId].
WorkingDirectory String Directoryidentifier(orPropertyidentifierthatresolvestoadirectory)thatresolvestothepathoftheworkingdirectoryfortheshortcut.
SeeAlsoWixSchema
Version2.0.4820.0
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
Version2.0.4820.0
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
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
RemarksNestingSqlDatabaseunderaComponentelementwillresultinaSqlDatabasebeinginstalledtothemachineasthepackageisinstalled.
NestingSqlDatabaseunderProduct,Fragment,orModuleresultsinadatabase"locator"recordbeingcreatedintheSqlDatabasetable.ThismeansthatthedatabaseitselfisneitherinstallednoruninstalledbytheMSIpackage.ItdoesmakethedatabaseavailableforreferencingfromaSqlStringorSqlScriptrecord.ThisallowsMSItoinstallSqlScriptsorSqlStringstoalreadyexistingdatabasesonthemachine.Theinstallwillfailifthedatabasedoesnotexistinthesecases.
TheUserattributereferencescridentialsspecifiedinaUserelement.IfauserisnotspecifiedthenWindowsAuthenticationwillbeusedbydefaultusingthecridentialsoftheuserperformingtheinstalltoexecutesqlstrings,etc.
SeeAlsoWixSchema,User
Version2.0.4820.0
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.
SeeAlsoWixSchema
Version2.0.4820.0
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
WixSchemaVersion2.0.4820.0
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
componentisreinstalled.SettingExecuteOnInstalltoyesdoesnotimplyExecuteOnReinstallissettoyes.ExecuteOnReinstallmustbesetinadditiontoExecuteOnInstallforittobeexecutedduringbothinstallandreinstall.
ExecuteOnReInstall YesNoType Thisattributehasbeendeprecated;pleaseusetheExecuteOnReinstallattributeinstead.
ExecuteOnUninstall YesNoType Specifiestoexecutethescriptwhentheassociatedcomponentisuninstalled.
RollbackOnInstall YesNoType Specifieswhethertoexecutethescriptonrollbackifanattemptismadetoinstalltheassociatedcomponent.
RollbackOnReinstall YesNoType Specifieswhethertoexecutethescriptonrollbackifanattemptismadetoreinstalltheassociatedcomponent.
RollbackOnUninstall YesNoType Specifieswhethertoexecutethescriptonrollbackifanattemptismadetouninstalltheassociatedcomponent.
Sequence Integer SpecifestheordertoruntheSQLScripts.Itisrecommendedthatrollbackscriptsbe
scheduledbeforetheircomplementaryexecutionscript.ThisorderisalsorelativeacrosstheSqlStringelement.
SqlDb String RequiredwhennotchildofSqlDatabase.
User String
SeeAlsoWixSchema
Version2.0.4820.0
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
mustbesetinadditiontoExecuteOnInstallforittobeexecutedduringbothinstallandreinstall.
ExecuteOnReInstall YesNoType Thisattributehasbeendeprecated;pleaseusetheExecuteOnReinstallattributeinstead.
ExecuteOnUninstall YesNoType Specifiestoexecutethestringwhentheassociatedcomponentisuninstalled.
RollbackOnInstall YesNoType Specifieswhethertoexecutethestringonrollbackifanattemptismadetoinstalltheassociatedcomponent.
RollbackOnReinstall YesNoType Specifieswhethertoexecutethestringonrollbackifanattemptismadetoreinstalltheassociatedcomponent.
RollbackOnUninstall YesNoType Specifieswhethertoexecutethestringonrollbackifanattemptismadetouninstalltheassociatedcomponent.
Sequence Integer SpecifestheordertoruntheSQLStrings.Itisrecommendedthatrollbackstringsbescheduledbeforetheircomplementaryexecutionstring.ThisorderisalsorelativeacrosstheSqlScriptelement.
SQL String YesSqlDb String User String
SeeAlsoWixSchema
Version2.0.4820.0
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
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
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
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
SymbolPathElement
Description
Apathtosymbols.
WindowsInstallerreferencesNone
ParentsExternalFile,TargetFile,TargetImage,UpgradeFile,UpgradeImage
InnerTextNone
ChildrenNone
Attributes
Name Type Description RequiredPath String Thepath. Yes
SeeAlsoWixSchema
Version2.0.4820.0
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
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.
Validation String Productcheckingtoavoidapplyingirrelevanttransforms.
SeeAlsoWixSchema
Version2.0.4820.0
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
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
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
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
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
registry.
Restricted YesNoType Valueof'yes'meansthetypelibraryisrestricted,andshouldnotbedisplayedtousers.ThisattributecanonlybesetifAdvertise='no'.
SeeAlsoWixSchema
Version2.0.4820.0
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
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
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
UITextElement
Description
Textassociatedwithcertaincontrols
WindowsInstallerreferencesUITextTable
ParentsUI
InnerText(xs:string)Elementvalueistext,mayuseCDATAifneededtoescapeXMLdelimiters
ChildrenNone
Attributes
Name Type Description RequiredId String Yes
SeeAlsoWixSchema
Version2.0.4820.0
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
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
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
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
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
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
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
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
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
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
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
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
deprecated;pleaseusetheSourcePatchattributeinstead.
SeeAlsoWixSchema
Version2.0.4820.0
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
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
FindRelatedProductsactiondetectsarelatedproductinstalledonthesystem,itappendstheproductcodetothepropertyspecifiedinthisfield.ThepropertyspecifiedinthisfieldmustbeapublicpropertyandthepackageauthormustaddthepropertytotheSecureCustomPropertiesProperty.EachUpgradeVersionmusthaveauniquePropertyvalue.AfterFindRelatedProductsthevalueofthispropertyisalistproductcodes,separatedbysemicolons(;),detectedonthesystem.
RemoveFeatures String TheinstallersetstheREMOVEpropertytofeaturesspecifiedinthiscolumn.Thefeaturestoberemovedcanbedeterminedatruntime.TheFormattedstringenteredinthisfieldmustevaluatetoacomma-delimitedlistoffeaturenames.Forexample:[Feature1],[Feature2],[Feature3].Nofeaturesareremovedifthefieldcontainsformattedtext
thatevaluatestoanemptystring.TheinstallersetsREMOVE=ALLonlyiftheRemovefieldisempty.
Anyattributenamespace='##other'processContents='lax'
SeeAlsoWixSchema
Version2.0.4820.0
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
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
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.
SeeAlsoWixSchema
Version2.0.4820.0
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
contextmenu.Sequence Integer Thesequenceofthecommands.
OnlyverbsforwhichtheSequenceisspecifiedareusedtoprepareanorderedlistforthedefaultvalueoftheshellkey.TheVerbwiththelowestvalueinthiscolumnbecomesthedefaultverb.UsedonlyforAdvertisedverbs.
Target String Targetfiletobeexecutedfortheverb.ThevalueshouldbeaformattedPropertytorefertotheshortpathtothefile,forexample:[!TargetFileId].Onlyvalidfornon-Advertisedverbs.
SeeAlsoWixSchema
Version2.0.4820.0
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
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
application,whichallowsASPscripttosetresponseheadersanywhereinthescript.
ClientDebugging YesNoDefaultType EnableASPclient-sidescriptdebugging.
DefaultScript Enumeration Setsthedefaultscriptlanguageforthesite.Thisattribute'svalueshouldbeoneofthefollowing:VBScript
JScript
Isolation Enumeration Setstheapplicationisolationlevelforthisapplicationforpre-IIS6applications.Thisattribute'svalueshouldbeoneofthefollowing:low
MeanstheapplicationexecuteswithintheIISprocess.
mediumExecutespooledinaseparateprocess.
highMeans
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
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
WixSchemaVersion2.0.4820.0
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
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
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
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
Version2.0.4820.0
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
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
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,
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.'
Write YesNoType
SeeAlsoWixSchema
Version2.0.4820.0
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
Version2.0.4820.0
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
WixSchemaVersion2.0.4820.0
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
SeeAlsoWixSchema
Version2.0.4820.0
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
specifiedsincethepresenceofthispropertyindicatesthatthesettingshouldbeset.FortheMaxGlobalBandwidthId,thevalueshouldbespecifiedinkilobytes.Thevalueshouldbeabase10number.ETagChangeNumbersetsthemachine-specificportionofETagasanumber.Thisvalue,whensynchronizedacrossserversinawebfarm,allowsthewebfarmtoreturnanidenticalETagforagivenresourceregardlessoftheserverthathandledtherequest.Thevalueshouldbeabase10number.
SeeAlsoWixSchema
Version2.0.4820.0
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
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.
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.
WebApplication String ReferencetoaWebApplicationthatistobeinstalledaspartofthiswebsite.
WebLog String ReferencetoWebLogdefinition.
RemarksNestingWebSiteunderaComponentelementwillresultinaWebSitebeinginstalledtothemachineasthepackageisinstalled.
NestingWebSiteunderProduct,Fragment,orModuleresultsinawebsite"locator"recordbeingcreatedintheIIsWebSitetable.ThismeansthatthewebsiteitselfisneitherinstallednoruninstalledbytheMSIpackage.ItdoesmakethedatabaseavailableforreferencingfromaWebApplication,WebVirtualDirorWebDirrecord.ThisallowsanMSItoinstallWebApplications,WebVirtualDirsorWebDirstoalreadyexistingwebsitesonthemachine.Theinstallwillfailifthewebsitedoesnotexistinthesecases.
SeeAlsoWixSchema
Version2.0.4820.0
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
DirProperties String ReferencestheIdattributeforaWebDirPropertieselementthatspecifiesthesecurityandaccesspropertiesforthisvirtualdirectory.
WebApplication String ReferencestheIdattributeforaWebApplicationelementthatspecifieswebapplicationsettingsforthisvirtualdirectory.IfaWebApplicationchildisnotspecified,thevirtualdirectorydoesnothostwebapplications.
WebSite String ReferencestheIdattributeforaWebSiteinwhichthisvirtualdirectorybelongs.RequiredwhenthiselementisnotachildofWebSiteelement.
SeeAlsoWixSchema
Version2.0.4820.0
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.
SeeAlsoWixSchema
Version2.0.4820.0
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
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
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
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
ofthenewelement.TheValueattributeisnotnecessarywhencreateElementisspecifiedastheaction.IftheValueattributeisset,itwillcausethenewelement'stextvaluetobeset.
deleteValueDeletesavaluefromtheelementspecifiedintheElementPath.IfNameisspecified,theattributewiththatnameisdeleted.IfNameisnotspecified,thetextvalueoftheelementspecifiedintheElementPathisdeleted.TheValueattributeisignoredifdeleteValueistheactionspecified.
setValueSetsavalueintheelementspecifiedintheElementPath.IfNameisspecified,andattributewiththatnameissettothevaluespecifiedinValue.IfNameisnotspecified,thetextvalueoftheelementisset.ValueisarequiredattributeifsetValueistheactionspecified.
CreateElement YesNoType Specifieswhetherornotto
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
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
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
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
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.
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
whenAdd/RemoveSnap-insischosen.
VendorId Integer TheresourceIDforthevendorofthesnap-inintheresourcesDLL.
VersionId Integer TheresourceIDfortheversionofthesnap-inintheresourcesDLL.
SeeAlsoMmcSchema
Version2.0.4820.0
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
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
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
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
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.
AssemblyApplication String Theidentifieroftheapplicationwhichwillloadthisassembly.ForDLLassemblieswhichareloadedviareflection,thisattributeshouldbesettoindicatetheapplicationwhichwillloadthisassembly.Theconfigurationoftheapplication(usuallyspecifiedviaanexe.configfile)willbeusedtodeterminehowtoresolvedependenciesforthisassembly.Whenasharedcomponentisloadedatruntime,usingtheLoadmethod,theapplication'sconfigurationfiledeterminesthedependenciesthatareloadedforthesharedcomponent—forexample,theversionofadependencythatisloaded.Thisattributegivesguidanceonwhichdependencieswouldbeloadedatruntimeinordertofigureoutwhichdependencyassemblieswillalsoneedtohavenativeimagesgenerated(assumingtheDependencyattributeisnotsetto"no").ThisattributecannotbesetiftheAssemblyApplication
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
value.
64bitGeneratenativeimagesonlyfortheia64orx86versionofthe.NETFrameworkonthetargetmachine.Ifno64-bit.NETFrameworkisavailableonthetargetmachine,attemptingtogeneratenativeimageswillfail.
allGeneratenativeimagesforallplatformsofthe.NETFrameworkavailableonthetargetmachine.
Priority Enumeration Setsthepriorityofgeneratingthenativeimagesforthisassembly.Thisattribute'svalueshouldbeoneofthefollowing:0
Thisisthehighestpriority,itmeansthatimagegenerationoccurssyncronouslyduringthesetupprocess.Thisoptionwillslowdownsetupperformance.
1Thiswillqueueimage
generationtotheNGenservicetooccurimmediately.Thisoptionwillslowdownsetupperformance.
2ThiswillqueueimagegenerationtotheNGenservicetooccurafterallpriority1assemblieshavecompleted.Thisoptionwillslowdownsetupperformance.
3Thisisthelowestpriority,itwillqueueimagegenerationtooccurwhenthemachineisidle.Thisoptionshouldnotslowdownsetupperformance.Thisisthedefaultvalue.
Profile YesNoType Setto"yes"togeneratenativeimagesthatcanbeusedunderaprofiler.Thedefaultvalueis"no".
RemarksNativeimagesarefilescontainingcompiledprocessor-specificmachinecode,whichareinstalledintothenativeimagecacheonthelocalcomputer.Theruntimecanusenativeimagesfromthecacheinsteadusingthejust-in-time(JIT)compilertocompiletheoriginalassembly.
SeeAlsoNetfxSchema
Version2.0.4820.0
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
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
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
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
HelpFileRefElement
Description
CreateareferencetoaHelpFileelementinanotherFragment.
WindowsInstallerreferencesNone
ParentsHelpCollection,HelpCollectionRef
InnerTextNone
ChildrenNone
Attributes
Name Type Description RequiredId String PrimaryKeyforHelpFileTable. Yes
SeeAlsoVsSchema
Version2.0.4820.0
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
HelpFilterRefElement
Description
CreateareferencetoaHelpFileelementinanotherFragment.
WindowsInstallerreferencesNone
ParentsHelpCollection
InnerTextNone
ChildrenNone
Attributes
Name Type Description RequiredId String PrimaryKeyforHelpFilter. Yes
SeeAlsoVsSchema
Version2.0.4820.0
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
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
ComPlusApplicationComPlusApplicationRoleComPlusAssemblyComPlusAssemblyDependencyComPlusComponentComPlusGroupInApplicationRoleComPlusGroupInPartitionRoleComPlusInterfaceComPlusMethodComPlusPartitionComPlusPartitionRoleComPlusPartitionUserComPlusRoleForComponentComPlusRoleForInterfaceComPlusRoleForMethodComPlusSubscriptionComPlusUserInApplicationRoleComPlusUserInPartitionRoleMessageQueueMessageQueuePermission
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
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
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
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
fullyTrusted
ThreeGigSupportEnabled String
SeeAlsoPubcaSchema
Version2.0.4820.0
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
SeeAlsoPubcaSchema
Version2.0.4820.0
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
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
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
Remarks
Wheninstallinganativeassembly,allcomponentscontainedintheassemblymustberepresentedasComPlusComponentelementsunderthiselement.Anycomponentnotlistedwillnotberemovedduringuninstall.
ThefieldsDllPath,TlbPathandPSDllPathareformattedfieldsthatshouldcontainfilepathstothererespectivefiletypes.AtypicalvalueforDllPathforexample,shouldbesomethinglike“[#MyAssembly_dll]”,where“MyAssembly_dll”isthekeyofthedllfileintheFiletable.
Warning:TheassemblynameprovidedintheAssemblyNameattributemustbeafullyspecifiedassemblyname,ifapartialnameisprovidedarandomassemblymatchingthepartialnamewillbeselected.
SeeAlsoPubcaSchema
Version2.0.4820.0
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
basepackage.
SeeAlsoPubcaSchema
Version2.0.4820.0
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
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
oneofthefollowing:ignored
none
supported
required
requiresNew
TxIsolationLevel Enumeration Thisattribute'svalueshouldbeoneofthefollowing:any
readUnCommitted
readCommitted
repeatableRead
serializable
SeeAlsoPubcaSchema
Version2.0.4820.0
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
PubcaSchemaVersion2.0.4820.0
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
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
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
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
attribute.PartitionId String Idforthepartition.Thisattribute
canbeomitted,inwhichcaseanidwillbegeneratedoninstall.Iftheelementisalocater,thisattributecanbeomittedifavalueisprovidedfortheNameattribute.
SeeAlsoPubcaSchema
Version2.0.4820.0
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
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
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
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
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
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
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
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
PubcaSchemaVersion2.0.4820.0
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
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
optional
Quota Integer ServiceTypeGuid String Transactional YesNoType Default:No.
SeeAlsoPubcaSchema
Version2.0.4820.0
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
ReceiveMessage YesNoType SetQueueProperties YesNoType TakeQueueOwnership YesNoType User String WriteMessage YesNoType
SeeAlsoPubcaSchema
Version2.0.4820.0
ToolsPreprocessorCompiler(candle)Linker(light)Decompiler(dark)
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?>
IncludeFiles<?include?>Asshownintheexampleabove,filescanbeincludedbyusingtheincludetag.Thefilenamereferencedinthetagwillbeprocessedasifitwerepartofthisfile.
Therootelementoftheincludefilemustbe<Include>.Therearenootherrequirementsbeyondtheexpectedwixschema.Forexample,
<Include>
<FeatureId='MyFeature'Title='My1stFeature'Level='1'>
<ComponentRefId='MyComponent'/>
</Feature>
</Include>
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?>
statement.Later,thevariablesarereferredtointhe<?if?>statementswiththesyntax$(var.VarName).Variablenamesarecase-sensitive.
Howtodefinetheexistenceofavariable:<?defineMyVariable?>
Howtodefinethevalueofavariable(Quotesareonlyrequiredifitcontainsspaces):<?defineMyVariable=“HelloWorld”?>
Therightsideofthedefinitioncanalsorefertoanothervariable:<?defineMyVariable=$(var.BuildPath)\x86\bin\?>
Howtoundefineavariable:<?undefMyVariable?>
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
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-->
<?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?>
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
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.
ExtensionsWiXhassupportforpreprocessorextensionsviathePreprocessorExtensionclass.ThePreprocessorExtensioncanprovidecallbackswithcontextatforeachinitialization,variableevaluation,andthelastcallbeforeinvokingthecompiler(forfullcustompreprocessing).Seethepreprocessor.cssourcefileandthepreprocessorextension.cssourcefileformoreinformation.
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.
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.
Finally,lightworksthroughthemechanicsofgeneratingIDTfilesandimportingthemintotheWindowsInstallerdatabase.Afterthedatabaseisfullycreated,thefinalpostprocessingisdonetomergeinanyMergeModulesandcreateacabinetifnecessary.TheresultisafullyfunctionalWindowsInstallerdatabase.
DarkDarkisatoolforconvertinganMSIorMSMfileintoaWiXsourcefile.ThistoolisveryusefulforgettingallyourauthoringintoaWiXsourcefilewhenyouhaveanexistingMSIorMSM.However,youwillthenneedtotweakthisfiletoaccomodatedifferentlanguagesandbreakingthingsintofragments.
VisualStudioPackage(Votive)VotiveisthecodenamefortheWiXVisualStudiopackagethatallowsyoutoeasilycreateWiXprojects,editWiXfilesusingIntelliSense,andcompile/linkyourproject.
InstallationToinstallthepackageyoumustrunVotive.msi,whichcomesbundledwiththeWiXbinariesandgetsbuiltaspartoftheWiXsource.
IfyouhavetheVSIPSDKinstalled,youcanbuildthethedebugversionofVotive.msi,whichwillinstallVotiveintotheExperimentalHiveofVisualStudio.ThiswillallowyourretailversionofVisualStudiotocontinuetoworkasbefore(seethe"DevelopingforVotive"topicforanexplanationoftheexperimentalhive).
DevelopingforVotiveIfyouwanttocontributecodetotheVotiveprojectordebugVotive,youmustdownloadandinstalltheVSIPSDK,availableathttp://www.vsipdev.com/downloads/.YouwillneedtheVSIPSDK2003andtheVSIPSDK2003Extras,installedinthatorder.TheSDKisfairlynon-invasiveandwillcreatean"ExperimentalHive"intheregistrythatwillkeepyourretailversionofVisualStudio2003unaffected.
TostartdebuggingVotive,setyourbreakpointsthenjusthit"F5"intheWix.slnforVisualStudio.ThecustombuildactionsintheVotiveprojectwillsetupandregisterVotiveontheexperimentalhive,sorunningtheVotive.msiisnotrequired,norsuggested.
GettingStartedRobMenschinghaswrittenanexcellentMSDNarticleonusingVotivetogetstartedinWiX.
WiXFilesAllinputfilesandintermediatefilesforWiXarexmlfiles.OutputisintheformofstandardWindowsInstallerdatabasefiles.
Sourcefiles(.wxsand.wxi)arecompiled,producingobjectfiles(.wixobj).TheseobjectsfilesarethenconsumedbythelinkerwhichproducesWindowsInstallerdatabasefiles(.msior.msm).ThisisanalogoustotheC++modelofcompilingsourcecodetoobjectfiles,thenlinkingtoproduceexecutables.
InputFilesIncludeFiles(.wxs)SourceFiles(.wxs)IntermediateFilesObjectFiles(.wixobj)OutputFilesInstallerDatabase(.msi)MergeModule(.msm)
IncludeFiles(.wxi)A.wxifileisanalogousto.hfilesforC++.Therootelementofthisfileis<Include/>.Everythingundertherootelementwillbeinsertedwhenthisfileisincludedinanothersourceorincludefile.
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.
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.
WindowsInstallerInstallationPackagesTheinstallationpackagefile(.msi)isthebasisforvehiclefordeliveringsetuplogictotheWindowsInstaller.Formoreinformationonmsifiles,pleaseseetheWindowsInstallerhelpfile(msi.chm)orvisitonlineatMSDN.
WindowsInstallerMergeModulesThemergemodulefile(.msm)isusedforsharingsetuplogicamongstdifferentgroups.Basically,amergemodulecanbecreatedbyonegroup,thenmergedintoanothergroup'sinstallationpackage.Formoreinformationonmsifiles,pleaseseetheWindowsInstallerhelpfile(msi.chm)orvisitonlineatMSDN.
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
<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"
>
Blogs
RobMensching's"whensetupisn'tjustxcopy"RobMenschingisthe"benevolentdictator"fortheWindowsInstallerXMLtoolset.Hemaintainsablogcalled"whensetupisn'tjustxcopy".Selectedblogentriesarereprintedherewithhispermission.
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.
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'/>
<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
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.
Today,viaWiXonSourceForge,yougettoseetheresultsofmanypeople’seffortstoimproveMicrosoftfromtheinsideout.I’mnotexactlysurewhatisgoingtohappennextbutI’msuretherearequiteafewpeoplewhoareinterestedtoseewherethisleads.Personally,allIhopeisthatifyoufindtheWiXtoolsetusefulthenyou’lljointhecommunityandhelpusimprovethetoolset.
Copyright©RobMensching
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
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
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
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.
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
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
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
resolved.Inthiscase,the"MyDirectory"intheDirectorytableand"1"intheMediatablereferencesareresolvedbysymbolsfromtheentrysection.ThelinkernowhappilygoesalongitsmerrywayfinishingthelinkingprocessusingthosetwosectionstobuildthefinalMSIfile.
HopefullythisblogentryhelpsexplainsomeoftheinnerworkingsoftheWiXtoolsetsothatyoucantakebetteradvantageofthetools.Thiswriteup(orsomethinglikeit)willbemakingitswayintotheWiXdocumentationsoIwouldappreciateanyfeedbackthatmakessections,symbols,andreferencesintheWindowsInstallerXMLtoolsetmakesense.
Copyright©RobMensching
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
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
(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
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
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
discoveredthatiftheusers'anti-virusprogramsweredisabledtheinstallationswouldsucceed.Turnsoutmanyofthetopnameanti-virusprogramsconsideredthescriptshostedbytheWindowsInstallertobevirusandwouldkillthescriptsofffailingtheVisualStudioinstall.
Anyway,hopeyouenjoyedthestoriesandremember,"VBScriptandJscriptsuckforCustomActions."
Copyright©RobMensching
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
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
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.
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
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
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'/>
</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
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
$(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":
<?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-
devsatsourceforge.net"mailinglist.
Andthatbringsmetomyfinalpoint.Thereisoneveryfatalflawinthecodeabove.Idebateddelayingthisblogentrytofixtheissuebutdecidedthecontentherewasvaluableevenwiththemistake.Haveyoufoundityet?LookcloselyattheComponent/@Guidattribute.DidthatvaluechangeeachtimeyoucreatedacompletelydifferentComponentlikethestep9intheLocalizationOverviewsuggests?Probablynotbecauseyoucan'tcurrentlylocalizeGUIDvaluesasdescribedbythisbugonSourceForge.However,thevalueshouldchangebecauseyouhaveverydifferentShortcutsinthetwoComponents(andtheexample.txtfileisinstalledtodifferentlocationssothereisnooverlap).So,IapologizeprofuselyforcreatinganexamplethatviolatestheComponentRulesandIwillfixthebugASAP.
Inthemeantime,havefunplayingwithyour.wxlfilesandkeepcoding.
Copyright©RobMensching
GettingHelpPleaseseesourceforge.net/projects/wixformoreinformation.
YesNoType(SimpleType)
Description
Valuesofthistypewilleitherbe"yes"or"no".
EnumerationTypePossiblevalues:{no,yes}
SeeAlsoWixSchema
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
ModularizeType(SimpleType)
Description
None
EnumerationTypePossiblevalues:{None,Column,Property,Condition,CompanionFile,SemicolonDelimited}
SeeAlsoWixSchema
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
LocalizableInteger(SimpleType)
Description
Valuesofthistypemustbeanintegerorthevaluecanbealocalizationvariablewiththeformat$(loc.VARIABLE).
PatternTypeMustmatchtheregularexpression:'[0-9][0-9]*|\$\(loc\.[_A-Za-z][0-9A-Za-z_]*\)'.
SeeAlsoWixSchema
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
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
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
YesNoDefaultType(SimpleType)
Description
Valuesofthistypewilleitherbe"default","yes",or"no".
EnumerationTypePossiblevalues:{default,no,yes}
SeeAlsoWixSchema
HexType(SimpleType)
Description
Thistypesupportsanyhexadecimalnumber.Bothupperandlowercaseisacceptableforlettersappearinginthenumber.Thistypealsoincludestheemptystring:"".
PatternTypeMustmatchtheregularexpression:'[0-9A-Fa-f]*'.
SeeAlsoWixSchema
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
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
PercentType(SimpleType)
Description
Valuesofthistypeareanyintegersbetween0and100,inclusive.
xs:nonNegativeIntegerTypexs:maxInclusivevalue='100'
SeeAlsoWixSchema
VersionType(SimpleType)
Description
Valuesofthistypewilllooklike:"x.x.x.x"wherexisanintegerfrom0to65534.
PatternTypeMustmatchtheregularexpression:'(\d{1,5}\.){3}\d{1,5}'.
SeeAlsoWixSchema
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
YesNoType(SimpleType)
Description
Valuesofthistypewilleitherbe"yes"or"no".
EnumerationTypePossiblevalues:{no,yes}
SeeAlsoNetfxSchema
YesNoType(SimpleType)
Description
Valuesofthistypewilleitherbe"yes"or"no".
EnumerationTypePossiblevalues:{no,yes}
SeeAlsoPubcaSchema
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