PanelSwWixExtension 2.13.0

A WiX extension with various actions including- File regular expressions; XmlSearch; TaskScheduler; ExecOnComponent

Requires NuGet 2.7 or higher.

Install-Package PanelSwWixExtension -Version 2.13.0
dotnet add package PanelSwWixExtension --version 2.13.0
<PackageReference Include="PanelSwWixExtension" Version="2.13.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add PanelSwWixExtension --version 2.13.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

PanelSwWixExtension is the most comprehensive open source WiX extension.
It features dozens of actions from querying XML, JSON and text files to installing ServiceBase-based and TopShelf services.

The commercial extension- JetWixExtension- complements PanelSwWixExtension with the following features:

  • JetBA: The most comprehensive, fully customizable, extensible, WPF-based BootstrapperApplication.
  • JetBA++: The only native fully customizable, extensible, Qt-based BootstrapperApplication.
  • Preprocessor extension:
    • Harvest directly from WiX source code by executing Heat commands
      <?pragma heat.dir "$(sys.SOURCEFILEDIR)..\bin\Release" -cg BIN -dr INSTALLFOLDER -ag?>
      
    • Collection variables
      <?pragma tuple.NIR a; b; c?>
      <?pragma tuple.BAR x; y; z?>
      <?foreach i in $(tuple_range.BAR())?>
      <Component Feature="ProductFeature" Directory="INSTALLFOLDER">
        <File Source="$(sys.SOURCEFILEPATH)" Name="Product.$(tuple.NIR($(var.i))).$(tuple.BAR($(var.i))).wxs"/>
      </Component>
      <?endforeach?>
      <?pragma endtuple.BAR?>
      <?pragma endtuple.NIR?>
      
    • Generate random Id.
      Useful when deploying files with same name to different target folders:
      <ComponentGroup Id="random">
      	<Component Directory="Product.Dir">
      	<File Source="$(sys.SOURCEFILEPATH)" Id="$(jet.random_id())"/>
      	</Component>
      	<Component Directory="INSTALL_FOLDER">
      	<File Source="$(sys.SOURCEFILEPATH)" Id="$(jet.random_id())"/>
      	</Component>
      </ComponentGroup>
      
    • Generate random or pseudo-random Guid.
      <ComponentGroup Id="random">
        <?foreach account in localService;localSystem;networkService;applicationPoolIdentity?>
        <Component Id="webapp.$(var.account)" Guid="$(jet.Guid($(var.account)))" Transitive="yes">
          <Condition><![CDATA[IIS_ACCOUNT ~= "$(var.account)"]]></Condition>
          <CreateFolder />
          <iis:WebAppPool Id="$(var.account)" Name="WebUI" Identity="$(var.account)" ManagedRuntimeVersion="v4.0" ManagedPipelineMode="Integrated" />
          <iis:WebVirtualDir Id="$(var.account)" Directory="INSTALLFOLDER" Alias="WebUI" WebSite="WebUI">
            <iis:WebApplication Id="$(var.account)" Name="WebUI" WebAppPool="$(var.account)" />
          </iis:WebVirtualDir>
        </Component>
        <?endforeach?>
      </ComponentGroup>
      
  • Detect bundles and get their versions in a variable:
    <jet:BundleSearch UpgradeCode="{1D1DB5E6-E0D8-3103-8570-369A82A9BF33}" VersionVariable="DetectedVC2013x86Version" NamePattern="\bx86\b"/>
    
  • RebootBoundary attrbiute on bundle packages: force reboot after the package if any preceding package required reboot
    Contact the owner to obtain a license for JetWixExtension

PanelSwWixExtension WiX Elements

  • Immediate Actions:
    • ForceVersion: Force a specified version for a file. Version overwrite is done on runtime in the MSI database.
    • AccountSidSearch: Lookup an account's SID by account name.
    • JsonJpathSearch: Read JSON values
    • DiskSpace: Calculate available disk space for a target directory
    • CertificateHashSearch: Find a certificate has in local system MY store.
    • Evaluate: Evaluate mathematical expressions and store result in property.
    • SetPropertyFromPipe: Allows setting property from a pipe.
    • SqlSearch: Execute a SQL query and place result in a property.
    • ReadIniValues: Reads .INI file values.
    • XmlSearch: Read XML values.
    • RegularExpression: Execute a Regular Expression to replace or find matches in property values and in file contents.
    • MsiSqlQuery: Execute a MSI-SQL query on the MSI database.
    • CreateSelfSignCertificate: Create a self-sign certificate that can then be installed by WixIisExtension.
  • Deferred Actions:
    • JsonJPath: Set values in JSON-formatted file.
    • Dism: Enable Windows Feature using DISM API. Features will be installed when the parent component is being installed or repaired.
    • ZipFile: Creates a ZIP archive from selected files.
    • Unzip: Extract a ZIP archive to selected folder.
    • CustomUninstallKey: Overwrite registry values in the product's Uninstall registry key
    • RemoveRegistryValue: Removes registry values. Complements the standard RemoveRegistryValue WiX element that will only remove registry values during installation.
    • ExecOn: Execute a custom command on component action.
    • TaskScheduler: Add a task to Windows Task Scheduler. Task definition XML should be in inner text.
    • DeletePath: Delete folder or file specified by a path.
    • FileRegex: Execute a Regular Expression to perform find & replace operations within files.
    • ShellExecute: Call ShellExecuteEx with parameters.
    • Telemetry: Send telemetry data to a given URL.
    • InstallUtil: Install a .NET assembly service.
    • TopShelf: Install a TopShelf based service.
    • BackupAndRestore: Backup a file before install or upgarde and restore it after.
    • SqlScript: Execute SQL scripts, optionally with text replacements.

Custom Actions

  • TerminateSuccessfully_Immediate: Terminates the installation with a successful indication. Executed in-script.
  • TerminateSuccessfully_Deferred: Terminates the installation with a successful indication. Deferred execution.
  • SplitPath: Split a full path supplied in 'FULL_PATH_TO_SPLIT' property and places the parts in properties SPLIT_DRIVE, SPLIT_FOLDER, SPLIT_FILE_NAME, SPLIT_FILE_EXTENSION.
  • PathExists: Tests whether the path supplied in 'FULL_PATH_TO_TEST' property exists. Sets 'PATH_EXISTS' property to 1 if it exists or clears it if it doesn't.
  • SplitString: Splits a string. Property name specified in 'PROPERTY_TO_SPLIT' and split token specified in 'STRING_SPLIT_TOKEN'. Results are stored in properties following the name supplied in 'PROPERTY_TO_SPLIT'.
    For example, say PROPERTY_TO_SPLIT="MY_PROP", MY_PROP="1,2,3" and STRING_SPLIT_TOKEN=",". Scheduling SplitString custom action will yield properties MY_PROP_0="1", MY_PROP_1="2" and MY_PROP_2="3".
  • TrimString: Trim whitespace characters in property with name specified in 'PROPERTY_TO_TRIM'.

PanelSwWixExtension is the most comprehensive open source WiX extension.
It features dozens of actions from querying XML, JSON and text files to installing ServiceBase-based and TopShelf services.

The commercial extension- JetWixExtension- complements PanelSwWixExtension with the following features:

  • JetBA: The most comprehensive, fully customizable, extensible, WPF-based BootstrapperApplication.
  • JetBA++: The only native fully customizable, extensible, Qt-based BootstrapperApplication.
  • Preprocessor extension:
    • Harvest directly from WiX source code by executing Heat commands
      <?pragma heat.dir "$(sys.SOURCEFILEDIR)..\bin\Release" -cg BIN -dr INSTALLFOLDER -ag?>
      
    • Collection variables
      <?pragma tuple.NIR a; b; c?>
      <?pragma tuple.BAR x; y; z?>
      <?foreach i in $(tuple_range.BAR())?>
      <Component Feature="ProductFeature" Directory="INSTALLFOLDER">
        <File Source="$(sys.SOURCEFILEPATH)" Name="Product.$(tuple.NIR($(var.i))).$(tuple.BAR($(var.i))).wxs"/>
      </Component>
      <?endforeach?>
      <?pragma endtuple.BAR?>
      <?pragma endtuple.NIR?>
      
    • Generate random Id.
      Useful when deploying files with same name to different target folders:
      <ComponentGroup Id="random">
      	<Component Directory="Product.Dir">
      	<File Source="$(sys.SOURCEFILEPATH)" Id="$(jet.random_id())"/>
      	</Component>
      	<Component Directory="INSTALL_FOLDER">
      	<File Source="$(sys.SOURCEFILEPATH)" Id="$(jet.random_id())"/>
      	</Component>
      </ComponentGroup>
      
    • Generate random or pseudo-random Guid.
      <ComponentGroup Id="random">
        <?foreach account in localService;localSystem;networkService;applicationPoolIdentity?>
        <Component Id="webapp.$(var.account)" Guid="$(jet.Guid($(var.account)))" Transitive="yes">
          <Condition><![CDATA[IIS_ACCOUNT ~= "$(var.account)"]]></Condition>
          <CreateFolder />
          <iis:WebAppPool Id="$(var.account)" Name="WebUI" Identity="$(var.account)" ManagedRuntimeVersion="v4.0" ManagedPipelineMode="Integrated" />
          <iis:WebVirtualDir Id="$(var.account)" Directory="INSTALLFOLDER" Alias="WebUI" WebSite="WebUI">
            <iis:WebApplication Id="$(var.account)" Name="WebUI" WebAppPool="$(var.account)" />
          </iis:WebVirtualDir>
        </Component>
        <?endforeach?>
      </ComponentGroup>
      
  • Detect bundles and get their versions in a variable:
    <jet:BundleSearch UpgradeCode="{1D1DB5E6-E0D8-3103-8570-369A82A9BF33}" VersionVariable="DetectedVC2013x86Version" NamePattern="\bx86\b"/>
    
  • RebootBoundary attrbiute on bundle packages: force reboot after the package if any preceding package required reboot
    Contact the owner to obtain a license for JetWixExtension

PanelSwWixExtension WiX Elements

  • Immediate Actions:
    • ForceVersion: Force a specified version for a file. Version overwrite is done on runtime in the MSI database.
    • AccountSidSearch: Lookup an account's SID by account name.
    • JsonJpathSearch: Read JSON values
    • DiskSpace: Calculate available disk space for a target directory
    • CertificateHashSearch: Find a certificate has in local system MY store.
    • Evaluate: Evaluate mathematical expressions and store result in property.
    • SetPropertyFromPipe: Allows setting property from a pipe.
    • SqlSearch: Execute a SQL query and place result in a property.
    • ReadIniValues: Reads .INI file values.
    • XmlSearch: Read XML values.
    • RegularExpression: Execute a Regular Expression to replace or find matches in property values and in file contents.
    • MsiSqlQuery: Execute a MSI-SQL query on the MSI database.
    • CreateSelfSignCertificate: Create a self-sign certificate that can then be installed by WixIisExtension.
  • Deferred Actions:
    • JsonJPath: Set values in JSON-formatted file.
    • Dism: Enable Windows Feature using DISM API. Features will be installed when the parent component is being installed or repaired.
    • ZipFile: Creates a ZIP archive from selected files.
    • Unzip: Extract a ZIP archive to selected folder.
    • CustomUninstallKey: Overwrite registry values in the product's Uninstall registry key
    • RemoveRegistryValue: Removes registry values. Complements the standard RemoveRegistryValue WiX element that will only remove registry values during installation.
    • ExecOn: Execute a custom command on component action.
    • TaskScheduler: Add a task to Windows Task Scheduler. Task definition XML should be in inner text.
    • DeletePath: Delete folder or file specified by a path.
    • FileRegex: Execute a Regular Expression to perform find & replace operations within files.
    • ShellExecute: Call ShellExecuteEx with parameters.
    • Telemetry: Send telemetry data to a given URL.
    • InstallUtil: Install a .NET assembly service.
    • TopShelf: Install a TopShelf based service.
    • BackupAndRestore: Backup a file before install or upgarde and restore it after.
    • SqlScript: Execute SQL scripts, optionally with text replacements.

Custom Actions

  • TerminateSuccessfully_Immediate: Terminates the installation with a successful indication. Executed in-script.
  • TerminateSuccessfully_Deferred: Terminates the installation with a successful indication. Deferred execution.
  • SplitPath: Split a full path supplied in 'FULL_PATH_TO_SPLIT' property and places the parts in properties SPLIT_DRIVE, SPLIT_FOLDER, SPLIT_FILE_NAME, SPLIT_FILE_EXTENSION.
  • PathExists: Tests whether the path supplied in 'FULL_PATH_TO_TEST' property exists. Sets 'PATH_EXISTS' property to 1 if it exists or clears it if it doesn't.
  • SplitString: Splits a string. Property name specified in 'PROPERTY_TO_SPLIT' and split token specified in 'STRING_SPLIT_TOKEN'. Results are stored in properties following the name supplied in 'PROPERTY_TO_SPLIT'.
    For example, say PROPERTY_TO_SPLIT="MY_PROP", MY_PROP="1,2,3" and STRING_SPLIT_TOKEN=",". Scheduling SplitString custom action will yield properties MY_PROP_0="1", MY_PROP_1="2" and MY_PROP_2="3".
  • TrimString: Trim whitespace characters in property with name specified in 'PROPERTY_TO_TRIM'.

Dependencies

This package has no dependencies.

This package is not used by any popular GitHub repositories.

Version History

Version Downloads Last updated
2.13.0 39 10/6/2019
2.12.1 43 9/19/2019
2.12.0 44 9/16/2019
2.11.1 46 9/15/2019
2.11.0 52 9/11/2019
2.10.2 65 8/14/2019
2.10.1 58 8/12/2019
2.10.0 65 8/11/2019
2.9.1 104 7/17/2019
2.9.0 65 7/16/2019
2.8.2 78 6/12/2019
2.8.1 80 5/26/2019
2.8.0 83 5/23/2019
2.7.1 80 5/17/2019
2.7.0 81 5/16/2019
2.6.6 93 5/15/2019
2.6.5 93 5/14/2019
2.6.4 91 5/8/2019
2.6.3 85 5/8/2019
2.6.2 190 5/2/2019
2.6.1 112 4/18/2019
2.6.0 109 4/8/2019
2.5.0 111 3/26/2019
2.4.1 101 3/20/2019
2.4.0 126 3/7/2019
2.3.0 113 3/5/2019
2.2.0 110 2/28/2019
2.1.0 112 2/25/2019
2.0.3 117 2/19/2019
2.0.1 118 2/14/2019
2.0.0 117 2/11/2019
1.17.17 176 1/17/2019
1.17.16 173 1/16/2019
1.17.15 160 1/15/2019
1.17.14 154 1/14/2019
1.17.13 186 1/10/2019
1.17.12 157 1/9/2019
1.17.11 189 1/2/2019
1.17.10 197 1/2/2019
1.17.9 156 12/31/2018
1.17.8 187 12/31/2018
1.17.7 151 12/27/2018
1.17.6 178 12/27/2018
1.17.5 180 12/27/2018
1.17.4 117 12/26/2018
1.17.3 149 12/23/2018
1.17.2 146 12/23/2018
1.17.1 150 12/20/2018
1.17.0 165 12/20/2018
1.16.2 169 12/19/2018
1.16.1 134 12/18/2018
1.16.0 152 12/13/2018
1.15.0 150 12/6/2018
1.14.0 129 12/5/2018
1.13.0 135 12/5/2018
1.12.2 150 11/28/2018
1.12.1 151 11/28/2018
1.12.0 172 10/22/2018
1.11.0 178 10/21/2018
1.10.2 263 10/14/2018
1.10.1 201 10/5/2018
1.10.0 179 10/5/2018
1.9.2 181 10/3/2018
1.9.1 197 9/21/2018
1.9.0 168 9/21/2018
1.8.2 212 9/16/2018
1.8.1 202 9/2/2018
1.8.0 193 8/28/2018
1.6.2 205 7/29/2018
1.6.1 202 7/25/2018
1.6.0 212 7/24/2018
1.5.0 225 7/11/2018
1.4.3 449 7/4/2018
1.4.2 266 6/27/2018
1.4.1 259 6/14/2018
1.4.0 239 6/12/2018
1.3.1 229 5/30/2018
1.3.0 241 5/21/2018
1.2.0 251 5/10/2018
1.1.38 256 5/7/2018
1.1.37 246 5/2/2018
1.1.36 233 4/25/2018
1.1.35 266 4/25/2018
1.1.34 287 4/11/2018
1.1.33 222 3/15/2018
1.1.32 270 3/14/2018
1.1.31 305 3/7/2018
1.1.30 273 2/27/2018
1.1.29 290 2/26/2018
1.1.28 269 2/25/2018
1.1.27 269 2/22/2018
1.1.26 276 2/21/2018
1.1.25 235 2/21/2018
1.1.24 266 2/19/2018
1.1.23 1,387 1/30/2018
1.1.22 267 1/30/2018
1.1.21 284 1/10/2018
1.1.20 257 12/18/2017
1.1.19 443 11/28/2017
1.1.18 242 11/5/2017
1.1.15 333 9/5/2017