Build an msi package for Csharp using WiX: Difference between revisions
No edit summary |
|||
(3 intermediate revisions by the same user not shown) | |||
Line 37: | Line 37: | ||
# The ''Manufacturer=""'' cannot be empty so fill in something reasonable. | # The ''Manufacturer=""'' cannot be empty so fill in something reasonable. | ||
# Find the XML line: ''</Feature>'' | # Find the XML line: ''</Feature>'' | ||
# '''Before the found line'''; add the definitions of two new componenents - one for a start menu shortcut, one for a desktop shortcut. | # '''Before the found line'''; add the definitions of two new componenents - one for a start menu shortcut, one for a desktop shortcut.<syntaxhighlight lang="xml" line><ComponentRef Id="ApplicationShortcut" /> | ||
<ComponentRef Id="ApplicationShortcutDesktop" /></syntaxhighlight> | |||
# Find the directory definition lines and insert on the same level as "ProgramsFilesFolder" <syntaxhighlight lang="xml" line><Directory Id="ProgramMenuFolder"> | |||
# Find the directory definition lines and insert on the same level as "ProgramsFilesFolder" | <Directory Id="ApplicationProgramsFolder" Name="MyWpfApplication"/> | ||
</Directory> | |||
<Directory Id="DesktopFolder" Name="Desktop"/></syntaxhighlight> | |||
# Copy this fragment in at the bottom and replace the GUID and the path of the program: <syntaxhighlight lang="xml" line><Fragment> | |||
# | |||
<syntaxhighlight lang="xml" line><Fragment> | |||
<DirectoryRef Id="ApplicationProgramsFolder"> | <DirectoryRef Id="ApplicationProgramsFolder"> | ||
<Component Id="ApplicationShortcut" Guid="XXXXXXXXXXXXXXXXXXXXXXXXXXX"> | <Component Id="ApplicationShortcut" Guid="XXXXXXXXXXXXXXXXXXXXXXXXXXX"> | ||
Line 69: | Line 59: | ||
</DirectoryRef> | </DirectoryRef> | ||
</Fragment></syntaxhighlight> | </Fragment></syntaxhighlight> | ||
# Right-click SetupMSD in solution explorer. | |||
# Select "Add" -> "Reference" | |||
# Select WixUIExtension.dll | |||
# Click "Add" | |||
# Click "Ok" | |||
# Now locate the line <syntaxhighlight lang="xml" line><Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" /></syntaxhighlight> | |||
# And add this below it <syntaxhighlight lang="xml" line><UIRef Id="WixUI_Minimal" /></syntaxhighlight> | |||
# Locate the line <syntaxhighlight lang="xml" line><MediaTemplate /></syntaxhighlight> | |||
# Replace it with <syntaxhighlight lang="xml" line><MediaTemplate EmbedCab="yes"/></syntaxhighlight> | |||
# Find the line that starts with <syntaxhighlight lang="xml" line><Product Id="*" </syntaxhighlight> | |||
# Replace the asterisk "*" with a new unused GUID. | |||
# Build with F6 | |||
= References = | = References = |
Latest revision as of 15:22, 23 November 2016
Preface
This page will describe in short terms how to build an msi package for an Csharp (C#) project. The resulting package will not give the end user any installation options to choose between.
Prerequisites
- Visual Studio. I used 2015 version.
- An C# project that does not need the end user to select install options.
- WiX --> http://wixtoolset.org/releases/ This was written while v3.10.3 was lates stable release.
- WaX --> In VS 2015 go to "Tools" -> "Extensions and updates", then click "Online" and in the search box type “wax”
Step by step
- Install WiX
- Install WaX
- Open the C# project solution you want to build an msi package for.
- Add a WiX setup project to the solution.
- Mark your solution in the solution explorer.
- Click "File" -> "Add" -> "New Project"
- Search for “Windows installer XML”
- Select "Setup project"
- Type in a name but know that this will be the filename of your msi package. I will use 'SetupProject' from now on and this will result in SetupProject.msi as filename.
- Click "Tools"
- Select "Wix Setup Editor"
- "Setup project to edit:" should already be filled in as "SetupProject (..\SetupProject)"
- As "Root directory" select "INSTALLFOLDER (SetupProject)"
- Select the "Projects to install" by ticking them off in the list of avilable projects in your solution.
- Click the + sign to the right of all the "Directory mappings"
- Click the + sign to the right of all the "File mappings"
- Make sure you see 5 green circles with a white checkmark in the WaX window, indicating that all is fine
- Close the WaX window on the X in top right corner.
- Save all file changes by pressing [CTRL + SHIFT + S] i Visual Studio.
- Open / Go to "Product.wxs" file in Visual Studio.
- Find the XML line that starts with <Product Id="*"
- The Manufacturer="" cannot be empty so fill in something reasonable.
- Find the XML line: </Feature>
- Before the found line; add the definitions of two new componenents - one for a start menu shortcut, one for a desktop shortcut.
<ComponentRef Id="ApplicationShortcut" /> <ComponentRef Id="ApplicationShortcutDesktop" />
- Find the directory definition lines and insert on the same level as "ProgramsFilesFolder"
<Directory Id="ProgramMenuFolder"> <Directory Id="ApplicationProgramsFolder" Name="MyWpfApplication"/> </Directory> <Directory Id="DesktopFolder" Name="Desktop"/>
- Copy this fragment in at the bottom and replace the GUID and the path of the program:
<Fragment> <DirectoryRef Id="ApplicationProgramsFolder"> <Component Id="ApplicationShortcut" Guid="XXXXXXXXXXXXXXXXXXXXXXXXXXX"> <Shortcut Id="ApplicationStartMenuShortcut" Name="MSD" Description="MSD" Target="[INSTALLFOLDER]MSD.exe" WorkingDirectory="INSTALLFOLDER" /> <RemoveFolder Id="RemoveApplicationProgramsFolder" Directory="ApplicationProgramsFolder" On="uninstall" /> <RegistryValue Root="HKCU" Key="Software\MSD" Name="installed" Type="integer" Value="1" KeyPath="yes" /> </Component> </DirectoryRef> <DirectoryRef Id="DesktopFolder"> <Component Id="ApplicationShortcutDesktop" Guid="XXXXXXXXXXXXXXXXXXXXXXXXXXX"> <Shortcut Id="ApplicationDesktopShortcut" Name="MSD" Description="MSD" Target="[INSTALLFOLDER]MSD.exe" WorkingDirectory="INSTALLFOLDER" /> <RemoveFolder Id="RemoveDesktopFolder" Directory="DesktopFolder" On="uninstall" /> <RegistryValue Root="HKCU" Key="Software\MSD" Name="installed" Type="integer" Value="1" KeyPath="yes" /> </Component> </DirectoryRef> </Fragment>
- Right-click SetupMSD in solution explorer.
- Select "Add" -> "Reference"
- Select WixUIExtension.dll
- Click "Add"
- Click "Ok"
- Now locate the line
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
- And add this below it
<UIRef Id="WixUI_Minimal" />
- Locate the line
<MediaTemplate />
- Replace it with
<MediaTemplate EmbedCab="yes"/>
- Find the line that starts with
<Product Id="*"
- Replace the asterisk "*" with a new unused GUID.
- Build with F6