Skip to content

trondr/NMultiTool

Repository files navigation

NMultiTool

========================= NMultiTool provides commands useful during build or install of an application or library

##Usage

NMultiTool 1.0.18062.53.9c4d7e2 - NMultiTool provides commands useful during build or install of an application or library
Copyright © github.trondr 2018
Author: trondr@outlook.com
Usage: NMultiTool.exe <command> [parameters]

Commands:
---------
Help                      Display this help text
License                   Display license
Credits                   Display credits
BackupGitRepositories     Backup git repositories.
ConvertAllSvgToIco        Convert svg files in folder (and subfolders if
                          recursive==true) to multi size icon files of
                          specified sizes.
ConvertSvgToIco           Convert a .svg vector graphics file to a multi size
                          .ico file.
CreateNugetSpec           Create nuget spec from a template and update
                          information in the resulting nuget file with meta
                          data from a specified assembly.
ExtractIcon               Extract icons from file.
FindDuplicateFiles        Find duplicate files in one or more locations. 
Folder2Wxs                Harvest files and sub folders into a Wxs file for
                          inclusion into a WiX setup project.
InstallUtil               InstallUtil processes specified .NET assemblies and
                          executes Install or Uninstall on the installer
                          classes defined in the assemblies.
SplitIco                  Split an icon file into multiple images

Commands and parameters:
------------------------
BackupGitRepositories     Backup git repositories.
   /configurationFile     [Required] Path to configuration file Alternative
                          parameter name: /cf

   Example: NMultiTool.exe BackupGitRepositories /configurationFile="c:\temp\BackupGitRepositories.config" 
   Example (alternative): NMultiTool.exe BackupGitRepositories /cf="c:\temp\BackupGitRepositories.config" 


ConvertAllSvgToIco        Convert svg files in folder (and subfolders if
                          recursive==true) to multi size icon files of
                          specified sizes.
   /folder                [Required] Folder to search for svg files
                          Alternative parameter name: /d
   /recursive             [Optional] Recurse sub folders. Alternative
                          parameter name: /r. Default value: True
   /refresh               [Optional] Recreate icon even if it allready
                          exists. Alternative parameter name: /rf. Default
                          value: False
   /sizes                 [Optional] Create multi size icon with the
                          specified array of sizes Alternative parameter
                          name: /s. Default value: [16;32;64;128;256]
   /maxDegreeOfParallelism[Optional] Run specified number of conversions in
                          parallel. Alternative parameter name: /p. Default
                          value: 4

   Example: NMultiTool.exe ConvertAllSvgToIco /folder="c:\temp\icons" /recursive="True" /refresh="False" /sizes="[16;32;64;128;256]" /maxDegreeOfParallelism="4" 
   Example (alternative): NMultiTool.exe ConvertAllSvgToIco /d="c:\temp\icons" /r="True" /rf="False" /s="[16;32;64;128;256]" /p="4" 


ConvertSvgToIco           Convert a .svg vector graphics file to a multi size
                          .ico file.
   /svgFileName           [Required] Path to vector graphics file having
                          format *.svg Alternative parameter name: /svg
   /refresh               [Optional] Recreate icon even if it allready
                          exists. Alternative parameter name: /rf. Default
                          value: False
   /sizes                 [Optional] Sizes of the images included in the
                          multi size .ico file. Alternative parameter name:
                          /s. Default value: [16;32;64;128;256]

   Example: NMultiTool.exe ConvertSvgToIco /svgFileName="c:\temp\test.svg" /refresh="False" /sizes="[16;32;64;128;256]" 
   Example (alternative): NMultiTool.exe ConvertSvgToIco /svg="c:\temp\test.svg" /rf="False" /s="[16;32;64;128;256]" 


CreateNugetSpec           Create nuget spec from a template and update
                          information in the resulting nuget file with meta
                          data from a specified assembly.
   /manifestTemplate      [Required] The nuget manifest template file.
                          Alternative parameter name: /nmt
   /manifestTarget        [Required] The nuget manifest target file.
                          Alternative parameter name: /tf
   /assemblyPath          [Required] The assembly with meta data to write
                          into the nuget manifest. Alternative parameter
                          name: /ap

   Example: NMultiTool.exe CreateNugetSpec /manifestTemplate="c:\temp\SomeSource.nuspec" /manifestTarget="c:\temp\SomeTarget.nuspec" /assemblyPath="c:\temp\SomeLib.dll" 
   Example (alternative): NMultiTool.exe CreateNugetSpec /nmt="c:\temp\SomeSource.nuspec" /tf="c:\temp\SomeTarget.nuspec" /ap="c:\temp\SomeLib.dll" 


ExtractIcon               Extract icons from file.
   /sourceFile            [Required] Binary file to extract icons from.
                          Alternative parameter name: /sf
   /targetFolder          [Required] Save icon to this folder. Alternative
                          parameter name: /tf

   Example: NMultiTool.exe ExtractIcon /sourceFile="c:\windows\notepad.exe" /targetFolder="c:\temp" 
   Example (alternative): NMultiTool.exe ExtractIcon /sf="c:\windows\notepad.exe" /tf="c:\temp" 


FindDuplicateFiles        Find duplicate files in one or more locations. Use
                          rules to suggest wich duplicate files to keep and
                          which to delete. The rules defined first have
                          priority over rules defined after. The provided
                          example values will search the 'd:' drive and 'e:'
                          drive for duplicate files and suggest deleting
                          files on the the 'e:' drive since the regular
                          expression for the e drive is listed first.
   /pathsToSearch         [Required] Array of paths to search for duplicate
                          files. Alternative parameter name: /ps
   /fileLocationsToKeep   [Required] Regular expression based rules for wich
                          file locations to keep. Files in locations defined
                          last or not defined will be marked for deletion.
                          The provided example value instructs to keep files
                          on d: and mark any duplicates on e: for deletion.
                          Alternative parameter name: /flk
   /resultFile            [Required] Result file containing the suggestions
                          for which files to keep. Alternative parameter
                          name: /rf

   Example: NMultiTool.exe FindDuplicateFiles /pathsToSearch="['d:\Dev';'e:\Dev']" /fileLocationsToKeep="['^d:.+';'^e:.+']" /resultFile="c:\temp\DeleteDuplicateFiles.cmd.txt" 
   Example (alternative): NMultiTool.exe FindDuplicateFiles /ps="['d:\Dev';'e:\Dev']" /flk="['^d:.+';'^e:.+']" /rf="c:\temp\DeleteDuplicateFiles.cmd.txt" 


Folder2Wxs                Harvest files and sub folders into a Wxs file for
                          inclusion into a WiX setup project.
   /harvestFolder         [Required] Path to harvest folder. All files and
                          sub folders in this folder will be harvested
                          Alternative parameter name: /d
   /wxsFileName           [Required] Output wsx file. The wxs file to be
                          included in a WiX setup project. Alternative
                          parameter name: /wf
   /targetFolderId        [Required] Target folder id. The target folder id
                          represents the folder location where the files and
                          sub directories will be installed by the MSI file
                          compiled from the resulting wxs file. Alternative
                          parameter name: /ti
   /componentGroupId      [Required] Component group id. The files and sub
                          folders in the harvest folder will be grouped as
                          components underneath this component group id.
                          Alternative parameter name: /ci
   /diskIds               [Required] Disk ids to distribute files to. The
                          files will be evenly stored in different cabinet
                          files corresponding to the disk id. Typically
                          specify more than one disk id if the total size of
                          the subfolder is larger than 2 GB. Each disk id can
                          store approx 2 GB. If folder is less than 2 GB one
                          disk is enough. Alternative parameter name: /di
   /addExecutables2AppsPath[Required] Specify that any executables in the
                          directory shall be added to apps path when
                          installed by the Wix setup Alternative parameter
                          name: /af
   /enableKeyPath         [Optional] Set KeyPath=Yes on all files harvested.
                          If installing application using install scope
                          'perUser', enableKeyPath must be set to false.
                          Alternative parameter name: /ekp. Default value:
                          True
   /companyName           [Optional] Company name to use in HKCU registry
                          setting if enabledKeyPath is set to False
                          Alternative parameter name: /co. Default value:
   /applicationName       [Optional] Application name to use in HKCU registry
                          setting if enabledKeyPath is set to False
                          Alternative parameter name: /an. Default value:
   /isWin64               [Optional] Indicate if wix components should be
                          marked with Win64 attribute. Valid values are 'yes'
                          or 'no' or 'var.Win64'. Alternative parameter name:
                          /is64. Default value: no

   Example: NMultiTool.exe Folder2Wxs /harvestFolder="c:\temp\SomeSourceDirectory" /wxsFileName="c:\temp\MySetupProject\Components.wxs" /targetFolderId="TargetFolder" /componentGroupId="Components_WixComponentGroup" /diskIds="['1';'2';'3']" /addExecutables2AppsPath="True" /enableKeyPath="True" /companyName="MyCompany" /applicationName="MyApplication" /isWin64="yes" 
   Example (alternative): NMultiTool.exe Folder2Wxs /d="c:\temp\SomeSourceDirectory" /wf="c:\temp\MySetupProject\Components.wxs" /ti="TargetFolder" /ci="Components_WixComponentGroup" /di="['1';'2';'3']" /af="True" /ekp="True" /co="MyCompany" /an="MyApplication" /is64="yes" 


InstallUtil               InstallUtil processes specified .NET assemblies and
                          executes Install or Uninstall on the installer
                          classes defined in the assemblies.
   /installAction         [Required] Install action. Valid values are
                          Install|UnInstall Alternative parameter name: /a
   /directory             [Required] Directory with .NET components to
                          process. Alternative parameter name: /d
   /includeFileSpecs      [Required] Array of file specifications to include,
                          i.e all files matching the include file
                          specfication will be processed. Alternative
                          parameter name: /if
   /excludeFileSpecs      [Required] Array of file specifications to exclude,
                          i.e all files matching the exclude file
                          specfication will not be processed. Alternative
                          parameter name: /ef

   Example: NMultiTool.exe InstallUtil /installAction="Install" /directory="c:\Program Fils (x86)\SomeCompany\SomeApplication\1.0.0.0" /includeFileSpecs="['SomeCompany.SomeApplication*.dll';'SomeCompany.SomeApplication*.exe']" /excludeFileSpecs="['Microsoft.*.dll';'Microsoft.*.exe']" 
   Example (alternative): NMultiTool.exe InstallUtil /a="Install" /d="c:\Program Fils (x86)\SomeCompany\SomeApplication\1.0.0.0" /if="['SomeCompany.SomeApplication*.dll';'SomeCompany.SomeApplication*.exe']" /ef="['Microsoft.*.dll';'Microsoft.*.exe']" 


SplitIco                  Split an icon file into multiple images
   /icoFileName           [Required] Split ico file in multiple png files
                          Alternative parameter name: /ico

   Example: NMultiTool.exe SplitIco /icoFileName="c:\temp\test.ico" 
   Example (alternative): NMultiTool.exe SplitIco /ico="c:\temp\test.ico" 
 

Minimum Build Requirements

  1. Build Tools for Visual Studio 2017 (https://www.visualstudio.com/downloads)
  • Browse down to: Other Tools and Frameworks->Build Tools for Visual Studio 2017
  • Install: vs_buildtools__164170290.1519403159.exe
    • Include: Targeting pack for .NET 4.5.2
    • Include: Nuget targets and build tasks
  1. Install latest Wix 3.11 (https://github.com/wixtoolset/wix3/releases/download/wix3111rtm/wix311.exe)
  • On a 32 bit system: Copy "C:\Program Files\MSBuild\Microsoft\WiX" -> "C:\Program Files\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\WiX"
  • On a 64 bit system: Copy "C:\Program Files (x86)\MSBuild\Microsoft\WiX" -> "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\WiX"