This minor release is essentially a v220.127.116.11 with a few cosmetic adjustments:
- Updated VS project templates with auto scaling solution and improved font appearence
- Issue#112: HandleErrors() should log e.ToString() rather than e.Message
- New `Install-Package WixSharp.wix.bin` package has been published.
- Implemented UtilsFileSearch dedicated class
- Implemented Project.AddWixFragment
- Removed all old obsolete API
- Issue#111: Failing to load WiX assemblies from VisualStudio. Updated NuGet WixSharp.bin package - added BootstrapperCore.dll
- Issue#110: Please update cscs.exe. Updated to v18.104.22.168
- MsiInterop.cs has been reimplemented to solve the licensing clash (MIT vs LGPL). Triggered by MIT on top of LGPL
- Issue#109: Support putting FirewallException in Component. Added FirewallException.IsProcessSpecific member
- Issue#107 ManagedUI scaling issue
- Added ManagedUIShell.OnCurrentDialogChanged event and ManagedUIShell.OnCurrentDialog property
- Implemented automatic disabling of feature tree custom-draw checkbox
- Issue#106: Tasks.LatestFrameworkDirectory returns an invalid directory. The routine is fixed and property name is changed to more adequate 'CurrentFrameworkDirectory'
- Added SetupEventArgs.ManagedUIHandle and WIXSHARPMANAGEDUI_HANDLE session property
- Added generic interface for processing user defined WixEntities (e.g. to support WiX extensions)
- Issue#103: It should be possible to install multiple IISVirtualDirs under a single WebSite
- Issue#102: WebSite API: WebSite.Name should be completely hidden in favour of WebSite.Description
- Issue#101: Wix# Creates Id attribute instead of Ip attribute in WebAddress element (from pull request #8740)
Most important changes
Now you can download everything for building MSI straight from NuGet. For bringing WiX Tools from NuGet use `Install-Package WixSharp.wix.bin` command It's particularly useful for building on build servers. Don't forget to point your build script to the location of this package binaries:
Compiler.WixLocation = @"<project path>\packages\WixSharp.wix.bin.<version>\bin";
Wix # now natively supports both Registry and File Search fragments. And they can be added directly to the project without dealing with XML events:
Root = RegistryHive.LocalMachine,
Key = @"Key=SOFTWARE\Microsoft\Net Framework...\Full",
Value = "Version",
Variable = "Netfx4FullVersion"
Path = @"[ProgramFilesFolder]Adobe\adobe.exe",
Result = SearchResult.exists,
Variable = "AdobeInstalled"
A long standing issue with ManagedUI not being scaled properly on non standard DPI displays finally has been solved. No changes in user code are required. All done under the hood.
Wix# allows now creating a fist-class citizen 'WiX entity' classes that can be integrated with Wix# runtime without modifying the compilers.
You can implement any WiX element currently not supported by Wix# by defining the class that implements IGenericEntity interface. The fields and properties of this class can be automatically serialized into XML attributes and the Process() method allows you to control how the class XML is injected into WiX XML document.
var project = new Project("CustomActionTest",
On = InstallEvent.uninstall,
Property = "DIR_PATH_PROPERTY_NAME"
. . .
public enum InstallEvent
public class RemoveFolderEx : WixEntity, IGenericEntity
public InstallEvent? On;
public string Property;
new public string Id;
public void Process(ProcessingContext context)
//candle needs to use WixUtilExtension.dll
XName name = WixExtension.Util.ToXName("RemoveFolderEx");
The code above produces the following XML fragment:
<Component Id="Component.readme.txt" Guid="...">
<File Id="readme.txt" Source="readme.txt" />