node-v0.8.9-x64.msi fails to install on windows hyper-v server 2012 #4021

Closed
jdef opened this Issue Sep 14, 2012 · 17 comments

Comments

Projects
None yet
7 participants

jdef commented Sep 14, 2012

This variant of Windows is very, very similar to a core install in that there is no typical windows gui (so, no Internet Explorer). Hence, the IUniformResourceLocatorW interface does not exist.

The msi logs from the failed install show the following:

Action 2:32:50: WixRollbackInternetShortcuts
Action 2:32:50: WixCreateInternetShortcuts
WixCreateInternetShortcuts: Creating IUniformResourceLocatorW shortcut 'C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Node.js (x64)\Node.js website.url' target 'http://nodejs.org/'
WixCreateInternetShortcuts: Error 0x80040154: failed to create an instance of IUniformResourceLocatorW
WixCreateInternetShortcuts: Error 0x80040154: failed to create internet shortcut
CustomAction WixCreateInternetShortcuts returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)
Action ended 2:32:50: InstallFinalize. Return value 3.
Action 2:32:50: Rollback. Rolling back action:
...

Owner

bnoordhuis commented Sep 14, 2012

It seems it's because we use <util:InternetShortcut /> in our product.wxs file. The problem is that it doesn't support a ContinueOnError element like some actions do.

@piscisaureus I had a look at the wix source code and it looks like adding ContinueOnError is pretty straightforward. Might be a nice side project.

I have the same issue on my Windows 7 x64 machine. Is it possible to install a nodejs msi without shortcut?

domus71 commented Oct 20, 2012

Same situation on Win7 x64. Is there a solution?
Is it possible to install it with an option DISABLESHORTCUTS=1 ?

Owner

bnoordhuis commented Oct 20, 2012

Is there a solution?

Yes. Someone needs to fix wix.

sblom commented Oct 31, 2012

I'll work with WiX to get this fixed.

jchoover commented Nov 5, 2012

I don't have a core OS to test on, so this is a blind fix but should be a good starting point.

http://wix.codeplex.com/SourceControl/network/forks/jchoover/WixStdBA

The change to fix this issue is in rev 120, the other commits are for action data messaging which I don't think they will make the 3.7 release.

As for Win 7 x64, the install works fine for me. If you could generate a reproducible test case or provide your install logs I could take a stab at it.

adunkman commented Nov 6, 2012

Observed this same issue on Windows Server 2008 R2; important bits:

Action start 10:39:36: InstallFinalize.
WixCreateInternetShortcuts:  Creating IUniformResourceLocatorW shortcut 'c:\Windows\system32\config\systemprofile\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Node.js (x64)\Node.js website.url' target 'http://nodejs.org'
WixCreateInternetShortcuts:  Error 0x80004005: failed to save shortcut 'c:\Windows\system32\config\systemprofile\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Node.js (x64)\Node.js website.url'
WixCreateInternetShortcuts:  Error 0x80004005: failed to create Internet shortcut
CustomAction WixCreateInternetShortcuts returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)

The issue happens when the MSI is run as Local System. The MSI installs cleanly when run as Administrator.

jchoover commented Nov 6, 2012

That is a different issue than my fix was targeting. In your case, the shell classes are registered and it's the saving of the shortcut that fails. I am confused why you would be running a MSI as Local System, it could be some over zealous antivirus software blocking the creation of the shortcut. (If it was a permissions issue I would expect a more meaningful message than E_FAIL).

Error 0x80004005 = E_FAIL Unspecified failure

One thing I did notice, when I ran a command prompt as local system (psexec \127.0.0.1 -i 0 -s cmd) the Start Menu folder doesn't exist (on Win 7 Pro x64).

adunkman commented Nov 6, 2012

The MSI is being installed by puppet, which is running as Local System.

On the Windows Server 2008 R2 machine I'm using this path exists but is empty:
C:\Windows\System32\config\systemprofile\AppData\Roaming\Microsoft\Windows

Creating the full path does not affect the error.
C:\Windows\System32\config\systemprofile\AppData\Roaming\Microsoft\Windows\Start Menu\Programs

jchoover commented Nov 7, 2012

Local testing shows that the full path must exist before the file can be created. Now the question I have is if the path is really correct or not. The roaming profile on a Local System account doesn't feel right. Any chance you could post a link to a full log? (The shortcut creation shouldn't be creating the folders, Windows Installer should as it's defined in the directory table.)

I don't have that machine anymore; but just hit the same problem on Windows 7.

https://gist.github.com/4164506

I don't have that machine anymore unfortunately, but I just observed the same problem on Windows 7:

https://gist.github.com/4164506

Was a Wix bug ever filed for this? Now that they are on Git I am going to isolate the fix in a branch and submit a pull request.

Owner

bnoordhuis commented Apr 19, 2013

No one from the core team filed a bug AFAIK unless @sblom contacted the WiX people through other channels.

sblom commented Apr 19, 2013

Hey, @jchoover. I think most of my interaction was on the wix-dev mailing list and in person with Rob. It doesn't look like I filed a bug. We're working around this now, and it looks like I need to update this issue to reflect that. I'm still happy to help you test your fix on Windows Server Core if you need it.

sblom commented Apr 23, 2013

You can now install Node without shortcut creation by either deselecting the features that you don't want (i.e. shortcut creation) in the installer dialog, or by running msiexec explicitly with a list of the features that you'd like installed.

For example, to install node.exe and npm, you can do: msiexec /q /i node-v0.11.2-x86.msi ADDDEFAULT=NodeRuntime,npm

Other features include:

  • EnvironmentPath
  • NodeEtwSupport
  • NodePerfCtrSupport
  • DocumentationShortcuts

sblom closed this Apr 23, 2013

@joaocgreis joaocgreis pushed a commit to janeasystems/node-v0.x-archive that referenced this issue Dec 9, 2015

@rvagg rvagg 2015-12-09, Version 5.2.0 (Stable)
Notable changes:

* build:
  - Add support for Intel's VTune JIT profiling when compiled with
    --enable-vtune-profiling. For more information about VTune, see
    https://software.intel.com/en-us/node/544211. (Chunyang Dai) #3785.
  - Properly enable V8 snapshots by default. Due to a configuration
    error, snapshots have been kept off by default when the intention
    is for the feature to be enabled. (Fedor Indutny) #3962.
* crypto:
  - Simplify use of ECDH (Elliptic Curve Diffie-Hellman) objects
    (created via crypto.createECDH(curve_name)) with private keys that
    are not dynamically generated via generateKeys(). The public key
    is now computed when explicitly setting a private key. Added
    validity checks to reduce the possibility of computing weak or
    invalid shared secrets. Also, deprecated the setPublicKey() method
    for ECDH objects as its usage is unnecessary and can lead to
    inconsistent state. (Michael Ruddy) #3511.
  - Update root certificates from the current list stored maintained
    by Mozilla NSS. (Ben Noordhuis) #3951.
  - Multiple CA certificates can now be passed with the ca option to
    TLS methods as an array of strings or in a single new-line
    separated string. (Ben Noordhuis) #4099
* tools: Include a tick processor in core, exposed via the
  --prof-process command-line argument which can be used to process V8
  profiling output files generated when using the --prof command-line
  argument. (Matt Loring) #4021.

PR-URL: nodejs/node#4181
6ca5ea3

@richardlau richardlau pushed a commit to ibmruntimes/node that referenced this issue Dec 14, 2015

@rvagg rvagg 2015-12-09, Version 5.2.0 (Stable)
Notable changes:

* build:
  - Add support for Intel's VTune JIT profiling when compiled with
    --enable-vtune-profiling. For more information about VTune, see
    https://software.intel.com/en-us/node/544211. (Chunyang Dai) #3785.
  - Properly enable V8 snapshots by default. Due to a configuration
    error, snapshots have been kept off by default when the intention
    is for the feature to be enabled. (Fedor Indutny) #3962.
* crypto:
  - Simplify use of ECDH (Elliptic Curve Diffie-Hellman) objects
    (created via crypto.createECDH(curve_name)) with private keys that
    are not dynamically generated via generateKeys(). The public key
    is now computed when explicitly setting a private key. Added
    validity checks to reduce the possibility of computing weak or
    invalid shared secrets. Also, deprecated the setPublicKey() method
    for ECDH objects as its usage is unnecessary and can lead to
    inconsistent state. (Michael Ruddy) #3511.
  - Update root certificates from the current list stored maintained
    by Mozilla NSS. (Ben Noordhuis) #3951.
  - Multiple CA certificates can now be passed with the ca option to
    TLS methods as an array of strings or in a single new-line
    separated string. (Ben Noordhuis) #4099
* tools: Include a tick processor in core, exposed via the
  --prof-process command-line argument which can be used to process V8
  profiling output files generated when using the --prof command-line
  argument. (Matt Loring) #4021.

PR-URL: nodejs/node#4181
65b86c0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment