npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

nwixtoolset

v1.0.4

Published

Node module wrapper around the WIX Toolset executables.

Downloads

257

Readme

nwixtoolset

nwixtoolset is a Node module wrapper around the Windows Installer XML Toolset executables.

Getting Started

nwixtoolset works as a wrapper around the Windows Installer XML Toolset. It abstracts the executables' switches with JS object abstraction.

Prerequistes

Windows

.NET Framework 4+ should be installed.

Linux and Mac OS X

First install wine and winetricks:

# Linux
$ apt-get install wine winetricks

# Mac OS X
$ brew install wine --without-x11
$ brew install winetricks

Then, configure wine for WIX:

$ export WINEARCH=win32
$ wineboot
$ winetricks --unattended dotnet40 corefonts

Installation

nwixtoolset can be installed using NPM:

$ npm install nwixtoolset --save

Usage

First import nwixtoolset in your project:

const wixtoolset = require("nwixtoolset");

Then use wixtoolset's executable:

wixtoolset.candle("*.wxs", { define: { SourceDir: "path/to/source" } })
    .then(() => wixtoolset.light("*.wixobj", { out: "setup.msi" }));

nwixtoolset uses native Promise to wrap asynchronous operations and resolves with the result of the command:

wixtoolset.candle("*.wxs")
	.then(result => {
		result.code 	// The wixtoolset executable exit code.
		result.stdout 	// The wixtoolset executable stdout content.
		result.stderr	// The wixtoolset executable stderr content.
	})
    .catch(err => {
		err.command	// The wixtoolset executable called.
		err.args 	// The wixtoolset executable args.
		err.code 	// The wixtoolset executable exit code.
		err.stdout 	// The wixtoolset executable stdout content.
		err.stderr	// The wixtoolset executable stderr content.
    });

Command-line

nwixtoolset can work as a simple wrapper around Windows Installer XML Toolset.

# Install module globally
$ npm install nwixtoolset -g

# Run module from command line
$ wixtoolset candle -o tmp *.wxs
$ wixtoolset light -o dist\setup.msi tmp\*.wixobj

Raw Usage

First import nwixtoolset in your project:

const wixtoolset = require("nwixtoolset");

Then use raw wixtoolset's executable:

wixtoolset.raw.candle(["-dSourceDir=path/to/source", "-o", "temp", "*.wxs"])
    .then(result => /* code, stdout, stderr */);

Or use raw cli executable wrapper:

wixtoolset.run("candle", ["-dSourceDir=path/to/source", "-o", "temp", "*.wxs"])
    .then(result => /* code, stdout, stderr */);

Documentation

Available Wrappers

  • candle: Preprocesses and compiles WiX source files into object files (.wixobj). For more information on compiling.
  • dark: Converts a Windows Installer database into a set of WiX source files. This tool is very useful for getting all your authoring into a WiX source file when you have an existing Windows Installer database. However, you will then need to tweak this file to accomodate different languages and breaking things into fragments.
  • heat: Generates WiX authoring from various input formats. It is used for harvesting files, Visual Studio projects and Internet Information Server web sites, "harvesting" these files into components and generating Windows Installer XML Source files (.wxs). Heat is good to use when you begin authoring your first Windows Installer package for a product.
  • insignia: Inscribes an installer database with information about the digital certificates its external cabs are signed with. For more information, see Insignia.
  • light: Links and binds one or more .wixobj files and creates a Windows Installer database (.msi or .msm). When necessary, Light will also create cabinets and embed streams into the Windows Installer database it creates.
  • lit: Combines multiple .wixobj files into libraries that can be consumed by Light.
  • lux: Author declarative unit tests for custom actions.
  • melt: Converts an .msm into a component group in a WiX source file.
  • nit: Run declarative unit tests for custom actions.
  • pyro: Takes an XML output patch file (.wixmsp) and one or more XML transform files (.wixmst) and produces an .msp file.
  • retina: WIX Toolset library rebuilder.
  • shine: WIX Toolset Scanner.
  • smoke: Runs validation checks on .msi or .msm files.
  • torch: Performs a diff to generate a transform (.wixmst or .mst) for XML outputs (.wixout or .wixpdb) or .msi files.

wixtoolset.candle(src: string | string[], options: CandleOptions = {}): Promise

Preprocesses and compiles WiX source files into object files (.wixobj). For more information on compiling, see Compiler. For more information on preprocessing, see Preprocessor.

/** Options for the Candle executable. */
export interface CandleOptions extends CommonWIXOptions {
    /** set architecture defaults for package, components, etc. (default: x86). */
    arch?: "x86" | "x64" | "ia64";

    /** Define a parameter for the preprocessor. */
    define?: Dictionary<string | boolean>;

    /** Enables FIPS compliant algorithms. */
    fips?: boolean;

    /** Add paths to include search path. */
    include?: string | string[];

    /** Specify output file (default: write to current directory). */
    out?: string;

    /** Preprocess to a file (or stdout if no file supplied). */
    preprocess?: string;

    /** Show pedantic messages. */
    pedantic?: boolean;

    /**
     * Deprecated alias for `arch`.
     * @deprecated
     */
    platform?: string;
    
    /**
     * Suppress marking files as Vital by default.
     * @deprecated
     */
    sfdvital?: boolean;

    /**
     * Suppress schema validation of documents (performance boost).
     * @deprecated
     */
    supressShemaValidation?: boolean;

    /** Show source trace for errors, warnings, and verbose messages. */
    trace?: boolean;
}

wixtoolset.dark(src: string, options: DarkOptions = {}): Promise

Converts a Windows Installer database into a set of WiX source files. This tool is very useful for getting all your authoring into a WiX source file when you have an existing Windows Installer database. However, you will then need to tweak this file to accomodate different languages and breaking things into fragments.

/** Options for the Dark executable. */
export interface DarkOptions extends CommonWIXOptions {
    /** Do not delete temporary files (useful for debugging). */
    notidy?: boolean;

    /** Specify output file (default: write .wxs to current directory). */
    out?: string;

    /** Suppress decompiling custom tables. */
    suppressCustomTables?: string;

    /** Suppress dropping empty tables (adds EnsureTable as appropriate). */
    suppressDroppingEmptyTables?: boolean;

    /** Suppress relative action sequencing (use explicit sequence numbers). */
    suppressRelativeActionSequencing?: boolean;
    
    /** Suppress decompiling UI-related tables. */
    suppressUI?: boolean;

    /** Export binaries from cabinets and embedded binaries to this path. */
    export?: string;

    /** Output wixout instead of Wix source code (mandatory for transforms and patches). */
    wixout?: boolean;
}

wixtoolset.heat(harvestType: HarvestType, harvestSource: string, options: HeatOptions = {}): Promise

Generates WiX authoring from various input formats.

It is used for harvesting files, Visual Studio projects and Internet Information Server web sites, "harvesting" these files into components and generating Windows Installer XML Source files (.wxs).

Heat is good to use when you begin authoring your first Windows Installer package for a product.

/** Heat Harvest Type */
export type HarvestType =
    /** Harvest a directory. */
    "dir" |
    /** Harvest a file. */
    "file" |
    /** Harvest a bundle payload as RemotePayload. */
    "payload" |
    /** Harvest performance counters. */
    "perf" |
    /** Harvest outputs of a VS project. */
    "project" |
    /** Harvest a .reg file. */
    "reg" |
    /** Harvest an IIS web site. */
    "website";

/** Options for the Heat executable. */
export interface HeatOptions extends CommonWIXOptions {
    /** Autogenerate component guids at compile time. */
    autoGenerateGuid?: boolean;

    /** Component group name (cannot contain spaces e.g -cg MyComponentGroup). */
    componentGroup?: string;

    /** Configuration to set when harvesting the project. */
    configuration?: string;

    /** Overridden directory id for generated directory elements. */
    directoryId?: string;

    /** Directory reference to root directories (cannot contain spaces e.g. -dr MyAppDirRef). */
    directoryRef?: string;

    /** Generated guids are not in brackets. */
    noBrackets?: string;

    /** Specify what elements to generate (default is components). */
    generate?: "components" | "container" | "payloadgroup" | "layout" | "packagegroup";

    /** Generate guids now. */
    generateGuidsNow?: string;
    
    /** Indentation multiple (overrides default of 4). */
    indent?: number;

    /** Keep empty directories */
    keepEmptyDirs?: boolean;

    /** Specify output file (default: write to current directory). */
    out?: string;

    /** Platform to set when harvesting the project. */
    platform?: string;

    /** Specify output group of VS project. This option may be repeated for multiple output groups. */
    outputGroup?: HeatOutputGroup | HeatOutputGroup[];

    /** Overridden project name to use in variables. */
    projectName?: string;

    /** Suppress COM elements. */
    suppressCOM?: boolean;

    /** Suppress fragments. */
    suppressFragments?: boolean;
    
    /** Suppress harvesting the root directory as an element. */
    suppressRootDir?: boolean;
    
    /** Suppress registry harvesting. */
    suppressRegistry?: boolean;
    
    /** Suppress unique identifiers for files, components, & directories. */
    suppressUID?: boolean;
    
    /** Suppress VB6 COM elements. */
    suppressVB6?: boolean;
    
    /** Transform harvested output with XSL file. */
    transformXSL?: boolean;
    
    /** Use template. */
    template?: "fragment" | "module" | "product";

    /**
     * Substitute File/@Source="SourceDir" with a preprocessor or a wix variable 
     * (e.g. -var var.MySource will become File/@Source="$(var.MySource)\myfile.txt" and
     * -var wix.MySource will become File/@Source="!(wix.MySource)\myfile.txt"
     */
    var?: string;

    /** Generate binder variables instead of preprocessor variables. */
    wixvar?: boolean;
}

export type HeatOutputGroup = "Binaries" | "Symbols" | "Documents" | "Satellites" | "Sources" | "Content";

wixtoolset.insignia(options: InsigniaOptions): Promise

Inscribes an installer database with information about the digital certificates its external cabs are signed with.

export type InsigniaOptions =
    InsigniaDatabaseOptions |
    InsigniaBundleOptions |
    InsigniaReattachOptions;

/** Common options for the Insignia executable. */
export interface InsigniaCommonOptions extends CommonWIXOptions {
    /** 
     * Specify output file (Defaults to databaseFile or bundleFile.).
     * If out is a directory name ending in '\', output to a file with
     * the same name as the databaseFile or bundleFile in that directory.
     */
    out?: string;
}

/** Options for the Insignia executable Database mode. */
export interface InsigniaDatabaseOptions extends InsigniaCommonOptions {
    /** Specify the database file to inscribe. */
    inputDatabase: string;
}

/** Options for the Insignia executable Bundle mode. */
export interface InsigniaBundleOptions extends InsigniaCommonOptions {
    /**
     * Specify the bundle file from which to extract the engine.
     * The engine is stored in the file specified by -o.
     */
    inputBundle: string;
}

/** Options for the Insignia executable Reattach mode. */
export interface InsigniaReattachOptions extends InsigniaCommonOptions {
    /** Reattach this engine to the bundle. */
    inputEngine: string;

    /** The bundle to reattach engine on. */
    outputBundle: string;
}

wixtoolset.light(src: string | string[], options: LightOptions = {}): Promise

Links and binds one or more .wixobj files and creates a Windows Installer database (.msi or .msm). When necessary, Light will also create cabinets and embed streams into the Windows Installer database it creates.

For more information on linking, see Linker.

/** Options for the Light executable. */
export interface LightOptions extends CommonWIXOptions, LightBinderOptions {
    /**
     * Allow identical rows, identical rows will be treated as a warning.
     * @deprecated
     */
    allowIdenticalRows?: boolean;

    /** 
     * Allow duplicate directory identities from other libraries.
     * @deprecated
     */
    allowDuplicateDir?: Dictionary<string | boolean>;

    /**
     * (experimental) allow unresolved references (will not create a valid output).
     * @deprecated
     */
    allowUnresolvedRefs?: boolean;

    /** Specify a binder path to locate all files (default: current directory). */
    bind?: string;

    /** Bind files into a wixout (only valid with wixout option). */
    bindWixout?: string;

    /**
     * Specify a specific custom binder to use provided by an extension.
     * @deprecated
     */
    binder?: string;

    /**
     * Semicolon or comma delimited list of localized string cultures to load from .wxl files and libraries.
     * Precedence of cultures is from left to right.
     */
    cultures?: string | string[];

    /**  Define a wix variable, with or without a value. */
    define?: Dictionary<string | boolean>;
    
    /**
     * Drop unreal tables from the output image.
     * @deprecated
     */
    dropUnrealTables?: boolean;

    /** Read localization strings from .wxl file. */
    loc?: string | string[];

    /** Do not delete temporary files (useful for debugging). */
    notidy?: boolean;
    
    /** Specify output file (default: write to current directory). */
    out?: string;
    
    /** Show pedantic messages. */
    pedantic?: boolean;

    /**
     * Suppress default admin sequence actions.
     * @deprecated
     */
    suppressAdminSequences?: boolean;
    
    /**
     * Suppress default adv sequence actions.
     * @deprecated
     */
    suppressAdvSequences?: boolean;

    /** Suppress localization. */
    suppressLocalization?: boolean;
    
    /**
     * Suppress processing the data in MsiAssembly table.
     * @deprecated
     */
    suppressProcessMSI?: boolean;
    
    /**
     * Suppress schema validation of documents (performance boost).
     * @deprecated
     */
    supressShemaValidation?: boolean;

    /**
     * Suppress tagging sectionId attribute on rows.
     * @deprecated
     */
    suppressTaggingSectionId?: boolean;

    /**
     * Suppress default UI sequence actions.
     * @deprecated
     */
    suppressUI?: boolean;

    /**
     * Suppress intermediate file version mismatch checking.
     * @deprecated
     */
    suppressIntermediateFile?: boolean;

    /** Unreferenced symbols file. */
    unreferencedSymbols?: string;

    /** Output wixout format instead of MSI format. */
    wixout?: string;

    /** Overrides the temporary directory used for cab creation, msm exploding, ... */
    overridesTemp?: string;
}

export interface LightBinderOptions {
    /** Use backwards compatible guid generation algorithm (almost never needed). */
    backCompatibleGuids?: boolean;
    
    /** Path to cache built cabinets (will not be deleted after linking). */
    cacheCabs?: string;

    /** Number of threads to use when creating cabinets (default: %NUMBER_OF_PROCESSORS%). */
    numberOfThreads?: number;
    
    /** Additional .cub file containing ICEs to run. */
    cub?: string;
    
    /** Set default cabinet compression level (default mszip). */
    defaultCabLevel?: "low" | "medium" | "high" | "none" | "mszip";
    
    /** Exact assembly versions (breaks .NET 1.1 RTM compatibility). */
    exactAssemblyVersions?: boolean;
    
    /** Add a 'fileVersion' entry to the MsiAssemblyName table (rarely needed) */
    fileVersion?: boolean;
    
    /** Run a specific internal consistency evaluator (ICE). */
    ice?: string;
    
    /**
     * Optimize Smart Cabbing for smallest cabinets.
     * @deprecated
     */
    optimizeSize?: boolean;
    
    /**
     * Optimize Smart Cabbing for faster install time.
     * @deprecated
     */
    optimizeTime?: boolean;
    
    /**
     * Save the WixPdb to a specific file.
     * (default: same name as output with wixpdb extension)
     */
    pdbout?: string;
    
    /** Reuse cabinets from cabinet cache. */
    reuseCab?: boolean;

    /** Suppress assemblies: do not get assembly name information for assemblies. */
    suppressAssemblies?: boolean;

    /** Suppress resetting ACLs (useful when laying out image to a network share. */
    suppressResetACLs?: boolean;

    /** Suppress files: do not get any file information (equivalent to `suppressAssemblies` and `suppressFileInfo`). */
    suppressFiles?: boolean;

    /** Suppress file info: do not get hash, version, language, etc. */
    supressFileInfo?: boolean;

    /** Suppress an internal consistency evaluator (ICE). */
    suppressICE?: string;

    /** Suppress layout. */
    suppressLayout?: string;

    /** Suppress outputting the WixPdb. */
    suppressPdb?: boolean;

    /**
     * Suppress patch sequence data in patch XML to decrease bundle size and increase patch applicability performance.
     * (patch packages themselves are not modified).
     */
    suppressPatchSequenceData?: boolean;

    /** Suppress MSI/MSM validation. */
    suppressValidation?: boolean;
}

wixtoolset.lit(src: string[], options: LitOptions = {}): Promise

Combines multiple .wixobj files into libraries that can be consumed by Light. For more information, see Librarian.

/** Options for the Lit executable. */
export interface LitOptions extends CommonWIXOptions {
    /**
     * Binder path to locate all files (default: current directory) 
     * prefix the path with 'name=' where 'name' is the name of your named bindpath.
     */
    bind?: string;

    /** Specify output file (default: write .wxs to current directory). */
    bindFiles?: boolean;

    /** Bind localization strings from a wxl into the library file. */
    loc?: string | string[];

    /** Specify output file (default: write to current directory). */
    out?: string;

    /** Show pedantic messages. */
    pedantic?: boolean;

    /** Suppress schema validation of documents (performance boost). */
    suppressSchemaValidation?: boolean;

    /** Suppress intermediate file version mismatch checking. */
    suppressIntermediateValidation?: boolean;
}

wixtoolset.lux(src: string | string[], options: LuxOptions = {}): Promise

Author declarative unit tests for custom actions. For more information, see Unit-testing custom actions with Lux.

/** Options for the Lux executable. */
export interface LuxOptions extends RunOptions {
    /** Extension assembly or "class, assembly". */
    ext?: string | string[];
    
    /** Specify output file (default: write to current directory). */
    out?: string;

    /** Verbose output. */
    verbose?: boolean;
}

wixtoolset.melt(src: string, dest: string, options: MeltOptions = {}): Promise

Converts an .msm into a component group in a WiX source file.

/** Options for the Melt executable. */
export interface MeltOptions extends CommonWIXOptions {
    /** Friendly identifier to use instead of module id. */
    id?: string;

    /** Do not delete temporary files (useful for debugging). */
    notidy?: boolean;

    /** Specify output file (default: write to current directory). */
    out?: string;

    /** Specify .wixpdb matching database.msi. */
    pdb?: string;

    /** Suppress extracting .msi payloads when updating .wixpdb. */
    suppressExtract?: boolean;

    /** Export binaries from database to this path (defaults to output files path). */
    export?: string;

    /** Export contents of File, Binary, and Icon tables to subdirectories to support patching all types of files. Needs `extract`. */
    exportContents?: boolean;
}

wixtoolset.nit(src: string | string[], options: RunOptions = {}): Promise

Runs the unit tests in one or more test packages. For more information, see Unit-testing custom actions with Lux.

wixtoolset.pyro(src: string, dest: string, options: PyroOptions = {}): Promise

Converts an .msm into a component group in a WiX source file.

/** Options for the Pyro executable. */
export interface PyroOptions extends CommonWIXOptions {
    /** Allow patches to be created with one or more empty product transforms. */
    allowEmptyPatch?: boolean;

    /**
     * New bind path to replace the original target path.
     * It accepts two formats matching the exact light behavior.
     * (example: name1=c:\feature1\component1 or c:\feature2)
     */
    newBindPath?: string;

    /**
     * New bind paths to replace the bind paths for the updated input.
     * It accepts two formats matching the exact light behavior.
     * (example: name1=c:\feature1\component1 or c:\feature2)
     */
    updateBindPath?: string;

    /** Path to cache built cabinets. */
    cacheCabs?: string;

    /** Create binary delta patch (instead of whole file patch). */
    delta?: boolean;

    /** Update 'fileVersion' entries in the MsiAssemblyName table. */
    fileVersion?: boolean;

    /** Do not delete temporary files (useful for debugging). */
    notidy?: boolean;

    /** Save the WixPdb to a specific file (default: same name as output with wixpdb extension). */
    pdbout?: string;

    /** Reuse cabinets from cabinet cache. */
    reuseCab?: boolean;

    /** Suppress assemblies: do not get assembly name information for assemblies. */
    suppressAssemblies?: boolean;

    /** Suppress files: do not get any file information (equivalent to `suppressAssemblies` and `suppressFileInfo`). */
    suppressFiles?: boolean;

    /** Suppress file info: do not get hash, version, language, etc. */
    supressFileInfo?: boolean;

    /** Suppress outputting the WixPdb. */
    suppressPdb?: boolean;

    /** Transform  one or more wix transforms and its baseline. */
    transform?: string | string[];
}

wixtoolset.retina(src: string, options: RetinaOptions = {}): Promise

WIX Toolset library rebuilder.

/** Options for the Retina executable. */
export interface RetinaOptions extends RunOptions {
    /** Specify output file (default: write to current directory). */
    out?: string;

    /** Verbose output. */
    verbose?: boolean;
}

wixtoolset.shine(src: string | string[], options: ShineOptions = {}): Promise

WIX Toolset Scanner.

/** Options for the Shine executable. */
export interface ShineOptions extends RunOptions {
    /** Save scan as DGML file. */
    dgml?: string;

    /** A valid DGML file populated with data from scan. */
    dgmlTemplate?: string;
    
    /** Filter scan to include only specified symbol(s). */
    includeSymbol?: string | string[];
    
    /** Remove symbol and symbols it references from scan. */
    excludeSymbol?: string | string[];

    /** Displays only the specified items in the scan. (default: all) */
    show?: ShineShowItems | ShineShowItems[];
}

export type ShineShowItems = 
    /** Project files. */
    "proj" |
    /** Source files. */
    "file" |
    /** Symbols. */
    "sym" |
    /** Symbol references. */
    "ref" |
    /** All of the above [default]. */
    "all";

wixtoolset.smoke(src: string | string[], options: SmokeOptions = {}): Promise

WIX Toolset Scanner.

/** Options for the Smoke executable. */
export interface SmokeOptions extends CommonWIXOptions {
    /** Additional .cub file containing ICEs to run. */
    cub?: string;

    /** Run a specific internal consistency evaluator (ICE). */
    ice?: string;

    /** Do not add the default .cub files for .msi and .msm files. */
    noDefault?: boolean;

    /** Do not delete temporary files (useful for debugging). */
    notidy?: boolean;

    /** Path to the pdb file corresponding to the databaseFile. */
    pdb?: string;

    /** Suppress an internal consistency evaluator (ICE). */
    suppressICE?: string;

    /** Overrides the temporary directory used for validation. */
    overridesTemp?: string;
}

wixtoolset.torch(targetInput: string, updatedInput: string, options: TorchOptions = {}): Promise

WIX Toolset Scanner.

/** Options for the Torch executable. */
export interface TorchOptions extends CommonWIXOptions {
    /** Generates an admin image (generates source file information in the transform) (default with adminExtract). */
    admin?: boolean;

    /** Generates an admin image with extraction of binaries (combination of 'admin' and 'extract'). */
    adminExtract?: string;

    /** Do not delete temporary files (useful for debugging). */
    notidy?: boolean;

    /** Specify output file (default: write to current directory). */
    out?: string;

    /** Preserve unmodified content in the output. */
    preserve?: boolean;

    /** Show pedantic messages. */
    pedantic?: boolean;

    /** Suppress error when applying transform. */
    suppressError?: TorchErrorFlag;

    /** Use default validation flags for the transform type. */
    transformValidation?: TorchTransformFlag;

    /** Validation flags for the transform. */
    validation?: TorchValidationFlag;
    
    /** Extract binaries to the specified path. */
    extract?: string;

    /** Input WiX format instead of MSI format (.wixout or .wixpdb). */
    inputWix?: boolean;
    
    /** Output wixout instead of MST format (set by default if inputWix is present). */
    outputWix?: boolean;

    /** Overrides the temporary directory used for cab extraction, binary extraction, ... */
    overridesTemp?: string;
}

export type TorchErrorFlag = 
    /** Ignore errors when adding an existing row. */
    "a" |
    /** Ignore errors when deleting an existing row. */
    "b" |
    /** Ignore errors when adding an existing table. */
    "c" |
    /** Ignore errors when deleting an existing table. */
    "d" |
    /** Ignore errors when modifying a missing row. */
    "e" |
    /** Ignore errors when changing the code page. */
    "f";
    
export type TorchTransformFlag = 
    /** UpgradeCode must match. */
    "g" |
    /** Language must match. */
    "l" |
    /** Product ID must match. */
    "r" |
    /** Check major version only. */
    "s" |
    /** Check major and minor versions. */
    "t" |
    /** Check major, minor, and upgrade versions. */
    "u" |
    /** Upgrade version < target version. */
    "v" |
    /** Upgrade version <= target version. */
    "w" |
    /** Upgrade version = target version. */
    "x" |
    /** Upgrade version > target version. */
    "y" |
    /** Upgrade version >= target version */
    "z";

export type TorchValidationFlag = 
    /** Default flags for a language transform. */
    "language" |
    /** Default flags for an instance transform. */
    "instance" |
    /** Default flags for a patch transform. */
    "patch";

wixtoolset.run(exe: string, args: string[], [runOptions: RunOptions]): Promise

Run WIX Toolset executable by using raw arguments.

/** Run Options */
export interface RunOptions {
    /** The current working directory to execute sfx bundler binary on. */
    cwd?: string;
    /** The inner spawn stdio option. */
    stdio?: string;
}

Common Interfaces

/** Result of the wrapper. */
export interface RunResult {
    /** The WIX exe exit code. */
    code: number;
    /** The WIX exe stdout content. */
    stdout: string;
    /** The WIX exe stderr content. */
    stderr: string;
}

export interface CommonWIXOptions extends RunOptions {
    /** Extension assembly or "class, assembly". */
    ext?: string | string[];
    
    /** Suppress all warnings (true) or a specific message ID. */
    suppressWarning?: boolean | number | number[];

    /** Verbose output. */
    verbose?: boolean;

    /** Treat all warnings or a specific message ID as an error. */
    warningAsError?: boolean | number | number[];
}

Contribute

Install Project dependencies

$ npm install

Build project

$ npm run build

License

MIT