• Stars
    star
    219
  • Rank 181,133 (Top 4 %)
  • Language
    C#
  • License
    MIT License
  • Created over 8 years ago
  • Updated almost 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

An interactive editor for WiX setup projects.

Wax Build Status

An interactive editor for WiX Toolset setup projects.

Wax keeps your candle burning

While it's an easy task to create an empty setup project with the WiX Toolset, populating the list of deployable files and even more keeping the list up to date can be a very fumbling task. This tool is a Visual Studio Extension that helps you to create, verify and maintain the list of the deployed files in an interactive GUI.

Just select the projects that you want to install in the list box on the left side. Two data grids on the right will show you the target directories needed and files to be installed, and how they are mapped to the file nodes in your WiX setup project.

Files that have no corresponding item in the WiX setup project are show in red. You can add them to the setup project by clicking the '+' button in the rightmost column. Files that already exist in the setup project are shown in yellow. You can link them together by clicking the '?' button in the rightmost column. Files that already exist in the setup project but have multiple matches are shown in orange. You can link items together by selecting the proper file from the combo box.

The file grid supports multiple selection, so you can apply all commands to many files in one step.

Wax main screen

Installation


Make sure you have installed the WiX Toolset before installing Wax!


This tool is a Visual Studio Extension. Use the Visual Studio Extension Manager, install from the Visual Studio Marketplace, or download the binaries and double click the Wax.vsix in the windows explorer.

The Wax editor is a tool to maintain WiX projects, so you should have installed the WiX Toolset.

Usage

Preparing the solution

We'll assume here that you already have a solution with some projects that you want to deploy. The Wax editor is collecting the output of the selected project(s) to install and all dependencies to populate the files list. In order to get the full benefit from this tool, all files that need to be installed should be part of the projects. Files that are not generated by the build, e.g. read-me files or documentation, should be added to the project with the Build Action set to Content and Copy to Output Directory to Copy always or Copy if newer. If you follow this pattern, you won't have to manually fumble around with additional files in the WiX project.

Create a new WiX Setup project

If you don't already have a WiX Setup project in your solution, create a new one now:

  • In Visual Studio Click File, then click New, then click Project.
  • Choose the Windows Installer XML node in the Project types tree, then select Setup Project
  • Name your project and press OK.

Open the editor

The WiX Setup Editor menu entry is located in the Visual Studios "Tools" menu.

Wax main screen

When parsing the projects, all files of the Built, ContentFiles and LocalizedResourceDlls build groups are collected. If you want to deploy the symbol files with your project, check the Deploy symbols toggle button in the tool bar.

There are five sections you have to edit in sequential order. If a green check mark appears in the top right corner, this section is complete. If there is a red exclamation mark, the section needs editing.

If you have made conceptual changes to your solution while the editor is open, click the refresh button.

(1) Select the WiX project to edit.

As the first step select the WiX project you want to edit. If there is only one setup project in the solution, it will be already selected.

(2) Map the root directory.

The editor needs to know the root directory definition in the wix file. Simply select it from the items in the combo box. If you have created a new WiX Setup project, there is only one and it is named INSTALLFOLDER.

(3) Select the project(s) to install.

Select the project(s) that you want to install. This is maybe just the one .exe project in your solution. Since dependencies are detected automatically and don't need to be selected explicitly, they are not shown in the list; also test projects are hidden by default. However if you think some project is missing here, check the "Show all projects" check box to see every project of the solution.

Every project you select will be automatically added to the WiX projects references, so the build order will be correct and you can use project reference variables in the WiX project.

(4) Create the directory mappings.

If you projects need to deploy files into subdirectories of the INSTALLFOLDER, you need to define or map them here. If you are starting with an empty project, just click on the "+" in the rightmost column of each directory to create the WiX definitions. If there are already directories defined in the WiX project, a combo box will appear where you can select the directory that maps to the projects output folder.

(5) Create the file mappings.

The file mappings list shows all output from the selected projects. If you are starting with an empty WiX project, all files will be shown in red and the state is "Unmapped". You can select all files and click on the "+" button in the rightmost column to create all files entries.

If you are editing an existing WiX project that you have created manually or e.g. with the "Harvest" tool, files might also appear as "Unique" or "Ambiguous". "Unique" means that there is only one file with that name in the whole solution, so it probably matches the file to be installed. Click on the "?" button in the rightmost column to confirm the match. "Ambiguous" means that there are several files with the same name. Use the combo box to select the matching file.

Post processing

Save all files

Wax adds a new file to your setup project, named <project name>.wax. This file stores all configurations you have made in the above steps. Make sure to save this file with your project, since it contains all information you need to maintain the project later. Also make sure the WiX files (.wxs, .wxi) are saved.

Check your feature tree

Wax will add a ComponentGroupRef node for all component groups it creates to the first feature it finds in your project. If you have just one feature defined, this will be fine; if you have more than one feature in your setup project, copy or move the entries as desired.

  <Product ...>
    <Feature Id="ProductFeature" Title="ACME.Setup" Level="1">
      <ComponentGroupRef Id="ProductComponents" />
      <ComponentGroupRef Id="de_files" />
      <ComponentGroupRef Id="fr_files" />
    </Feature>
  </Product>

Now you should be able to build the setup project.

Powered byΒ Β Β ReSharper

Support this Project: Donate

More Repositories

1

RegionToShare

Helper app to share only a part of a screen via video conference apps
C#
763
star
2

TomsToolbox

A set of core functions and classes to ease every days .Net development tasks.
C#
101
star
3

ProjectConfigurationManager

A Visual Studio extension to ease management of solution and project configurations.
C#
87
star
4

Nullable.Extended

A Roslyn analyzer to improve the experience when working with nullable reference types.
C#
41
star
5

JetBrainsAnnotations.Fody

Converts all JetBrains ReSharper code annotation attributes to External Annotations, so you can provide R# annotations to 3rd parties but don't need to deploy JetBrainsAnnotations.dll.
C#
39
star
6

ILMerge.Fody

Merges the referenced types of local dependencies as private types into the target assembly, and removes the references to the local dependencies.
C#
35
star
7

SplashScreen.Fody

Lets you design your WPF splash screen as a WPF Control instead of a static bitmap
C#
32
star
8

Lazy.Fody

Automates the plumbing around System.Lazy
C#
18
star
9

AutoProperties.Fody

Use this addin to gain access to the backing field of auto properties
C#
16
star
10

Substitute.Fody

Substitute types with other types to e.g. intercept generated code
C#
16
star
11

Throttle.Fody

A fody plugin to easily use a throttle with minimal coding
C#
15
star
12

WeakEventHandler.Fody

Changes regular event handlers into weak event handlers by weaving a weak event adapter between source and subscriber.
C#
8
star
13

ProjectMigrationHelper

A VS2019 extension that helps to migrate your old style projects to the new VS2017+ format.
C#
7
star
14

SolutionFilterBuilder

Creates a solution filter form a Visual Studio solution based on MSBuild project properties.
C#
7
star
15

Equatable.Fody

Fody add-in to generate the Equals, GetHashCode and operators methods from properties or fields explicitly decorated with the `[Equals]` Attribute.
C#
7
star
16

ITweakMyBuild

Change global build parameters on the fly
C#
6
star
17

SplashGenerator

SplashGenerator is a MSBuild target that automates the generation of the WPF splash screen bitmap from a WPF control.
C#
6
star
18

RoslynAnalyzerCookbook

A demo project showing how to add custom analyzers to a solution
C#
5
star
19

BAML

A BAML reader and writer
C#
4
star
20

L10N-Web-Demo

Sample angular project to demonstrate easy and robust localization with ResXManager
HTML
4
star
21

LogMessageGenerator

C#
3
star
22

VSIX-SdkProjectAdapter

Extends Microsoft.VSSDK.BuildTools so you can use SDK style projects for your Visual Studio Extension.
3
star
23

RoslynAnalyzerTesting.CSharp.Extensions

C#
2
star
24

COMRegistryBrowser

C#
1
star
25

ImageDPI

View and fix DPI settings of PNG images
C#
1
star
26

ContracsReSharperInterop

Code fixes to automate adding R#s NotNull attribute equivalents for code annotatded with CodeContracts
C#
1
star
27

WindowFinder

Simple tool to recover windows that have moved outside your desktop.
C#
1
star
28

LicenseGenerator

A DotNet tool to create a license file including all referenced nuget packages
C#
1
star