WiX Toolset

Votive via VS Marketplace

User stories

  • As a setup developer I can install Votive such that I can use the WiX Toolset in Visual Studio 2017.

  • As a setup developer I can install the WiX Toolset quickly.

  • As a non-setup developer I can install only Votive such that opening a solution with a .wixproj does not error.

  • As a WiX developer I can see how many times Votive is installed into each Visual Studio version such that I can make educated decisions about future Visual Studio support.

Proposal

Visual Studio 2017 introduced a number of breaking changes that makes it challenging to impossible to distribute Visual Studio Extensions purely via an MSI package. To support VS2017, the WiX Toolset will publish Votive via VSIX to the Visual Studio Marketplace. When the Repository Reorganization work is complete, Votive will be removed from the WiX Toolset bundle and only available from the Visual Studio Marketplace for all versions of Visual Studio.

The "WiX Toolset Visual Studio YYYY Extension" (where YYYY is 2010, 2012, 2013, 2015 or 2017) will be the display name for Votive in the Marketplace. There will be a separate entry in the Marketplace for each Visual Studio version so we get accurate download numbers of Votive per Visual Studio version.

In addition to VS2017 support, publishing Votive independent of the WiX Toolset enables non-setup developers to install the Votive without installing all of the WiX Toolset. This will allow .sln files with .wixprojs to load without error although the projects cannot be built. However, it is easy to use Visual Studio's using Solution Build Configuration Manager to create a build configuration that skips .wixprojs.

A final benefit of extracting Votive from the WiX Toolset bundle, is that the WiX Toolset will now install/uninstall/update very quickly. Today the bulk of the time spent in installation is executing devenv /setup so Visual Studio will recognize Votive. That will no longer be necessary when Votive is available only via the Visual Studio Marketplace.

There is a singular disadvantage. The WiX Toolset bundle will longer install "everything you need to get going" for everyone. On a clean machine it will take two steps for developers to get Visual Studio fully configured. We could re-create the single installation experience if we introduced the VSIX installs into the bundle. But this would skew installation numbers via Visual Studio Marketplace and slow the installation again (VSIXs take a bit to detect whether they are applicable).

For now we'll go with the simple solution of distributing the "WiX Toolset Visual Studio YYYY Extension" solely via the Visual Studio Marketplace.

Considerations

  • When the "WiX Toolset Visual Studio YYYY Extension" is available for pre-2017 Visual Studio versions there is the potential for confusion in WiX v3.x since Votive is still installed as part of the WiX Toolset. One consideration is to introduce this change into WiX v3.11 so developers are exposed to the change as soon as possible.

  • The VSIX identifiers will use WixToolset.Dev## where ## is the codename for Visual Studio. This removes the necessity of updating pre-released VSIXs when the marketing name of Visual Studio is finally known. For example, "WiX Toolset Visual Studio 2017 Extension" will always use the id WixToolset.Dev15 even though the display name metdata would be updated when the VS marketing name is known.

  • It is technically possibile to ship VS2010-VS2015 support or VS2012-VS2017 support in a single VSIX. However, it is not possible to ship VS2010 and VS2017 support in the same VSIX. This is moot since we want separate entries in the Visual Studio Marketplace for each VS version to track download numbers correctly.

See Also