Difference between revisions of "Nvm"
(Created page with "This Package installs the node version manager developed by Corey Butler on Github (https://github.com/coreybutler/nvm-windows), for this Package i used the noinstall Version...") |
|||
Line 9: | Line 9: | ||
The path variable points to where nvm creates the Link it uses to switch between different node versions. | The path variable points to where nvm creates the Link it uses to switch between different node versions. | ||
+ | = XML = | ||
+ | |||
+ | <source lang="xml"> | ||
<package id="nvm" name="nvm" revision="12" priority="0" reboot="false" > | <package id="nvm" name="nvm" revision="12" priority="0" reboot="false" > | ||
Line 36: | Line 39: | ||
</package> | </package> | ||
+ | |||
+ | </source> | ||
After installation of the Package it is necessary to reboot the Computer or use this Powershell script which forces Windows to reread all System environment Variables because the SETX does not work exactly as intended with WPKG: | After installation of the Package it is necessary to reboot the Computer or use this Powershell script which forces Windows to reread all System environment Variables because the SETX does not work exactly as intended with WPKG: | ||
+ | |||
+ | = Powershell = | ||
+ | |||
+ | <source lang="xml"> | ||
if (-not ("win32.nativemethods" -as [type])) { | if (-not ("win32.nativemethods" -as [type])) { | ||
Line 54: | Line 63: | ||
[win32.nativemethods]::SendMessageTimeout($HWND_BROADCAST, $WM_SETTINGCHANGE, | [win32.nativemethods]::SendMessageTimeout($HWND_BROADCAST, $WM_SETTINGCHANGE, | ||
[uintptr]::Zero, "Environment", 2, 5000, [ref]$result); | [uintptr]::Zero, "Environment", 2, 5000, [ref]$result); | ||
+ | |||
+ | </source> | ||
Whenever i tried to execute this Script with wpkg it would go into a endless loop and i had to force quit powershell to continue, maybe someone knows a way to achieve this so this can be used without needing a reboot | Whenever i tried to execute this Script with wpkg it would go into a endless loop and i had to force quit powershell to continue, maybe someone knows a way to achieve this so this can be used without needing a reboot | ||
+ | |||
+ | [[Category: Silent Installers]] | ||
+ | [[Category: nodejs]] | ||
+ | [[Category: nvm]] |
Latest revision as of 14:08, 19 May 2016
This Package installs the node version manager developed by Corey Butler on Github (https://github.com/coreybutler/nvm-windows), for this Package i used the noinstall Version and created the Settings.txt with these contents:
root: C:\opt\nvm path: C:\opt\nodejs arch: 64 proxy: none
You will have to set the root and the copy paths in the package to where you want to install the nvm. The path variable points to where nvm creates the Link it uses to switch between different node versions.
XML
<package id="nvm" name="nvm" revision="12" priority="0" reboot="false" >
<variable name="version" value="1.1.0" />
<check type="file" condition="exists" path="C:\opt\nvm\%version%.txt" />
<install cmd='%COMSPEC% /c echo %path%>C:\path.txt'></install-->
<install cmd='%COMSPEC% /c SETX path "C:\opt\nvm;C:\opt\nodejs;%path%" /M'></install>
<install cmd='%COMSPEC% /c SETX NVM_HOME "C:\opt\nvm" /M'></install>
<install cmd='%COMSPEC% /c SETX NVM_SYMLINK "C:\opt\nodejs" /M'></install>
<install cmd='%COMSPEC% /c robocopy %SOFTWARE%\node\nvm%version% C:\opt\nvm>NUL'><exit code="1" /></install>
<install cmd='%COMSPEC% /c robocopy C:\opt\nvm C:\ settings.txt>NUL'><exit code="1" /></install>
<upgrade cmd='%COMSPEC% /c robocopy /e %SOFTWARE%\node\nvm%version% C:\opt\nvm %version%.txt>NUL'><exit code="1" /><exit code="2" /><exit code="3" /></upgrade>
<upgrade cmd='%COMSPEC% /c robocopy /e %SOFTWARE%\node\nvm%version% C:\opt\nvm elevate.cmd>NUL'><exit code="1" /><exit code="2" /><exit code="3" /></upgrade>
<upgrade cmd='%COMSPEC% /c robocopy /e %SOFTWARE%\node\nvm%version% C:\opt\nvm elevate.vbs>NUL'><exit code="1" /><exit code="2" /><exit code="3" /></upgrade>
<upgrade cmd='%COMSPEC% /c robocopy /e %SOFTWARE%\node\nvm%version% C:\opt\nvm LICENSE>NUL'><exit code="1" /><exit code="2" /><exit code="3" /></upgrade>
<upgrade cmd='%COMSPEC% /c robocopy /e %SOFTWARE%\node\nvm%version% C:\opt\nvm nvm.exe>NUL'><exit code="1" /><exit code="2" /><exit code="3" /></upgrade>
<upgrade cmd='%COMSPEC% /c robocopy /e %SOFTWARE%\node\nvm%version% C:\opt\nvm settings.txts>NUL'><exit code="1" /><exit code="2" /><exit code="3" /></upgrade>
<upgrade cmd='%COMSPEC% /c robocopy C:\opt\nvm C:\ settings.txt>NUL'><exit code="1" /><exit code="3" /></upgrade>
<upgrade cmd='%COMSPEC% /c del C:\opt\nvm\%oldversion%.txt'></upgrade>
<remove cmd='rmdir /S /Q C:\opt\nvm' ><exit code="0" /><exit code="128" /><exit code="-1073741515" /></remove>
<remove cmd='rmdir /S /Q C:\opt\nodejs'><exit code="0" /><exit code="128" /><exit code="-1073741515" /></remove>
<remove cmd='rmdir /S /Q C:\settings.txt'><exit code="0" /><exit code="128" /><exit code="-1073741515" /></remove>
</package>
After installation of the Package it is necessary to reboot the Computer or use this Powershell script which forces Windows to reread all System environment Variables because the SETX does not work exactly as intended with WPKG:
Powershell
if (-not ("win32.nativemethods" -as [type])) {
# import sendmessagetimeout from win32
add-type -Namespace Win32 -Name NativeMethods -MemberDefinition @"
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern IntPtr SendMessageTimeout(IntPtr hWnd, uint Msg, UIntPtr wParam, string lParam, uint fuFlags, uint uTimeout, out UIntPtr lpdwResult);
"@
}
$HWND_BROADCAST = [intptr]0xffff;
$WM_SETTINGCHANGE = 0x1a;
$result = [uintptr]::zero
# notify all windows of environment block change
[win32.nativemethods]::SendMessageTimeout($HWND_BROADCAST, $WM_SETTINGCHANGE,
[uintptr]::Zero, "Environment", 2, 5000, [ref]$result);
Whenever i tried to execute this Script with wpkg it would go into a endless loop and i had to force quit powershell to continue, maybe someone knows a way to achieve this so this can be used without needing a reboot