Long Names
WiX 3 now supports long names directly, so there is no need to specify in the .wxs file different attributes for short and long names.
You may get the following output from candle .exe:
error CNDL0035 : The Directory/@Name attribute cannot be specified when attribute LongName is present. warning CNDL1069 : The Directory/@LongName attribute has been deprecated. Since WiX now has the ability to generate short file/directory names, the desired name should be specified in the Name attribute instead. If the name specified in the Name attribute is a short name, then WiX will not generate a short name. If the name specified in the Name attribute is a long name and you want to manually specify the short name, please set the short name value in the ShortName attribute.
How to Resolve: Search the .wxs source file for the xml attribute LongName. Lines like this:
<directory id="'INSTALLDIR'" name="'Foobar10'" longname="'Foobar">
Should become:
<directory id="'INSTALLDIR'" name="'Foobar">
Linking to libraries such as wixui.wixlib
WiX 3.0 has a slightly different way of linking to libraries compared with Wix 2.0, such as when linking to the standard UI libraries provided by WiX. Tutorials which use the UI libraries by using xml such as the following in the .wxs file will fail in WiX 3.0:
<UIRef Id="WixUI_Mondo" /> <UIRef Id="WixUI_ErrorProgressText" />
Errors generated may look like:
error LGHT0094 : Unresolved reference to symbol 'WixUI:WixUI_Mondo' in section error LGHT0094 : Unresolved reference to symbol 'WixUI:WixUI_ErrorProgressText' in section
How to Resolve: You will need to change the parameters you pass into light.exe. Where as before the command line would have been:
light.exe -out SampleWixUI.msi SampleWixUI.wixobj path\lib\wixui.wixlib -loc path\lib\WixUI_en-us.wxl
It now needs to be:
light SampleWixUI.wixobj -ext WixUIExtension -cultures:en-us
WiXUIExtension is a .dll file which on my PC can be found at C:\Program Files\Windows Installer XML v3\bin\WiXUIExtension.dll. If the above change still does not work, verify the file exists, or try specifying the full path to light.exe.
Also notice the change in the command line specifying culture language. I.e. -loc path\lib\WixUI_en-us.wxl becomes -cultures:en-us.