How to: Create the Windows Installer Package for the Server
Applies To: Windows Server 2012 Essentials, Windows Home Server 2011, Windows Storage Server 2008 R2 Essentials, Windows Small Business Server 2011 Essentials
Note
Before you start the procedure in this section, you must complete the procedure listed in How to: Install the Windows Installer XML (WiX) Tools.
After you download and install the tools, you can use them to create the Windows Installer package (msi) files. An add-in can contain code that is installed on the server, on client computers, or on both the server and client computers.
Important
You must ensure that you know the deployment requirements for the type of add-in that you are packaging. You must also ensure that the Windows Installer package can be run silently.
For more information about creating and deploying add-ins, see the following sections:
The Deployment sample that is provided with the SDK is configured to install a new top-level tab, install an XML file that extends the home page on the server, and install the XML files that are used to extend the Launchpad on both a 32-bit client computer and a 64-bit client computer.
All add-ins must have a <Server>.msi file where <Server> is any name that you want as long as it has an .msi extension. The following procedure shows you how to create an .msi file that is used to install the code from the sample that runs on the server. The files that are installed by the <Server>.msi file must be installed in the 64-bit Program Files folder because of the 64-bit operating system.
To create the .msi file
Open Notepad.
Add the following XML code:
<?xml version='1.0' encoding='windows-1252'?> <Wix xmlns='https://schemas.microsoft.com/wix/2006/wi'> <Product Name='Sample Add-in Server Deployment' Id='d21da776-86C7-4D14-AEC0-86416A69ABDE' UpgradeCode='d21da776-7349-453F-94F6-BCB5110BA4FD' Language='1033' Codepage='1252' Version='1.0.0' Manufacturer='Your Company Name'> <Package Id='*' Keywords='Installer' Platform="x64" Description=”Sample Deployment" Comments='Sample Deployment of Server Add-ins' Manufacturer='Your Company Name' InstallerVersion='200' Languages='1033' Compressed='yes' SummaryCodepage='1252' /> <Media Id='1' Cabinet='WSSSampleAddins.cab' EmbedCab='yes' DiskPrompt="CD-ROM #1" /> <Property Id='DiskPrompt' Value="Addins Installation [1]" /> <Directory Id='TARGETDIR' Name='SourceDir'> <Directory Id='ProgramFiles64Folder' Name='PFiles'> <Directory Id="AddinBinaryDir" Name="WSSAddinsBinaries"> <Component Id='WSSTopLevelTabWPFSampleBinaryComponent' Guid='d21da776-83F1-4F22-985B-FDB3C8ABD481' Win64='yes'> <RemoveFolder Id='AddinBinaryDir' On='uninstall' /> <File Id='WSSTopLevelTabWPFSampleBinary' Name='WSSTopLevelTabWPFSample.dll' DiskId='1' Source='binaries\WSSTopLevelTabWPFSample.dll' ProcessorArchitecture='x64' KeyPath='yes'> </File> </Component> </Directory> <Directory Id="WindowsServerDir" Name="Windows Server"> <Directory Id="WindowsServerBinDir" Name="Bin"> <Directory Id="WindowsServerAddinsDir" Name="Addins"> <Directory Id="WindowsServerPrimaryDir" Name="Primary"> <Component Id='WSSTopLevelTabWPFSampleXMLComponent' Guid='d21da776-83F1-4F22-985B-FDB3C8ABD491' Win64='yes'> <File Id='WSSTopLevelTabWPFSampleXML' Name='WSSTopLevelTabWPFSample.addin' DiskId='1' Source='binaries\WSSTopLevelTabWPFSample.addin' ProcessorArchitecture='x64' KeyPath='yes'> </File> </Component> </Directory> <Directory Id="WindowsUpdateHomePageTaskDir" Name="Home"> <Component Id='WindowsUpdateHomePageTaskComponent' Guid='d21da776-83F1-4F22-985B-FDB3C8ABD4A1' Win64='yes'> <File Id='WindowsUpdateHomePageTask' Name='WindowsUpdateHomePageTask.dll' DiskId='1' Source='binaries\WindowsUpdateHomePageTask.dll' ProcessorArchitecture='x64' KeyPath='yes'> </File> </Component> </Directory> </Directory> </Directory> </Directory> </Directory> </Directory> <Feature Id='Complete' Level='1'> <ComponentRef Id='WSSTopLevelTabWPFSampleBinaryComponent' /> <ComponentRef Id='WSSTopLevelTabWPFSampleXMLComponent' /> <ComponentRef Id='WindowsUpdateHomePageTaskComponent' /> </Feature> </Product> </Wix>
Note
- Each Id attribute and Guid attribute for the components must be unique.
- The Name attribute of the File element is the name of the file that is copied to the specified folder on the target computer.
- The Source attribute of the File element is the relative path to the file.
- To install the files in the
Program Files
folder instead of the Program Files (x86) folder, thePlatform
attribute of the Package element must be specified to bex64
, and the InstalledVersion attribute must be at least200
. All the Component elements must have the Win64 attribute set to yes and all the File elements must haveProcessorArchitecture
attribute set to x64.
Save the file as SampleWSSServerDeployment.wxs. When developing .msi files other than the sample, you can provide any name, but the file must have a .wxs extension.
Create the .wixobj file from the file that you created in the previous step by using the Candle tool from the WiX toolset. Open a command-prompt window and type the following command followed by Enter:
candle.exe SampleWSSServerDeployment.wxs
Create the .msi file from the .wixobj file by running the Light tool from the WiX toolset. In the command-prompt window, type the following command followed by Enter:
light.exe -ext WixUIExtension SampleWSSServerDeployment.wixobj
To test the Windows Installer package, you can run it by double clicking the .msi file, verify that the files were copied to the appropriate places, and then you can remove the package. The package can be removed by uninstalling it from the Control Panel.
Note
The components of the add-in are installed from separate .msi files for the server and the client computers. For more information about installing components for client computers, see How to: Create the Windows Installer Package for 32-bit Client Computers or How to: Create the Windows Installer Package for 64-bit Client Computers.