Closed Bug 388543 Opened 15 years ago Closed 14 years ago

[MozillaBuild] nsinstall on vista dies due to UAC

Categories

(mozilla.org :: MozillaBuild, task)

x86
Windows Vista
task
Not set
minor

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: Mook, Assigned: ted)

References

()

Details

Attachments

(2 files, 3 obsolete files)

(See URL)
Because nsinstall.exe includes "install", on Windows Vista with UAC it will want privilege escalation and fail.  I didn't know this, but apparently it is possible embed a manifest to explicitly state that is not necessary.

Workaround: run the shell as an administrator.
I believe Rob had a local fix for this, a script to embed manifests in all the MSYS executables.  Probably something we should consider adding to the MozillaBuild build process.
Attached file vbs to apply manifests
The following allows me to build without admin privs

The root dir where I keep my trees and c:\mozilla-build\ I give the Users group full control.

Then and only then should you add dirs and files underneath these
directories or run the mozilla build installer.

Then I run the attached vbscript... notes on the vbscript

I installed the latest version of MozillaBuild and found that rm.exe and
mv.exe were periodically failing so I went ahead and created a simple
vbscript for adding manifests directly using mt.exe to all of the exe's
under mysys/bin and both versions of nsinstall. It is just easier than
creating individual files and then having to touch the exe's. There are
two lines you may have to change if you didn't install into the default
locations.

strPathMozBuild = "c:\mozilla-build"
strPathMT = "c:\Program Files\Microsoft Visual Studio 8\VC\bin\mt.exe"

Run it from a cmd shell with cscript.exe ApplyManifests.vbs

Hopefully MSYS will add manifests to their files soon (I saw a bug on
this but don't have it handy) but this simplifies things in the mean time.
Hello all,
How do you apply the manifest?
Can I instead be working always "running as administrator" the msvc8.bat?
I was able to build Firefox last week on my Vista but after this weekend I wasn't able. Could it be that I checked out the source code when the tree was burning?

I've posted about it, maybe it helps others: 
http://armenzg.blogspot.com/2007/10/session-11-mozillabuild-in-vista.html

Thanks for any help
(In reply to comment #3)
> Hello all,
> How do you apply the manifest?
The details are in comment #2 above

> Can I instead be working always "running as administrator" the msvc8.bat?
I used to build successfully by starting the batch file using "running as administrator". That should still work.

> I was able to build Firefox last week on my Vista but after this weekend I
> wasn't able. Could it be that I checked out the source code when the tree was
> burning?
Yes
Blocks: 394044
Component: Build Config → MozillaBuild
Product: Core → mozilla.org
QA Contact: build-config → mozillabuild
Version: Trunk → other
Mass re-assign of MozillaBuild bugs into mozilla.org:MozillaBuild
Assignee: nobody → ted.mielczarek
Status: NEW → ASSIGNED
I'm uploading an installer with this patch installed right now, I'll link it in a minute.
Comment on attachment 324622 [details] [diff] [review]
Add some manifests to *install*.exe

I have a field report that says this doesn't work.
Attachment #324622 - Attachment is obsolete: true
Attached patch embed manifests in *install*.exe (obsolete) — Splinter Review
This looks better, will get some testing on it.
Ted, unless I'm mistaken all exe files will require manifests due to Data Execution Prevention... otherwise sporadic "Invalid access to memory location" errors will occur. One example with SP1 but I've seen this without SP1.
http://digerati-illuminatus.blogspot.com/2008/03/windows-vista-sp1-and-unable-to-load.html
Ugh, that sucks.
Just so you know, I've been building without issues with manifests applied to MozillaBuild's exe's in the following directories for around a year now

\msys\bin
\moztools\bin
\moztools-180compat\bin
Ok, thanks for clarifying. I thought maybe you were just being thorough by embedding manfiests in everything. :) I'll rework the patch to embed manifests in everything in msys/bin.
And I've been working with just nsintall patched, since August or so :)  Vista/SP0/32bit.  Just XR though, not Firefox.
Mook, do you have UAC enabled?
(In reply to comment #15)
> Mook, do you have UAC enabled?
bah... and you are building without elevation?
UAC is enabled, and I'm building without elevation, yes.  Otherwise I wouldn't have needed to file the bug :)
Strange... I'm building without elevation as well and ended up with the sporadic "Invalid access to memory location" errors without adding manifests to the additional exe's. Vlad experienced the same errors at that time about a year ago as well.
Ok, this one has manifests embedded in every exe under /msys, as well as nsinstall.exe:
http://people.mozilla.com/~tmielczarek/MozillaBuildSetup-1.3rc2.exe
Meh, maybe I was just lucky. Adding random manifests is unlikely to hurt, though.
This is the patch I used for the above installer. It embeds manifests in every exe in msys, as well as nsinstall.exe.
Attachment #324835 - Attachment is obsolete: true
Attachment #324961 - Flags: review?(benjamin)
Lukas points out that we don't have a manifest in the installer, either, which makes UAC use its heuristic, and thus you get the "program may not have installed correctly" dialog afterwards. We should put a manifest in the installer as well, to avoid this. I think I'll put the same "no privileges" manifest in there, since the installer doesn't touch the registry, and can be installed anywhere. You can always "run as admin" if you want to install it somewhere you don't have access to.
bsmedberg suggests instead that we use "highestAvailable". Rob: any thoughts?
or just use
RequestExecutionLevel highest
Thanks Rob. This also adds that to the NSIS script, so the installer gets a manifest.
Attachment #324961 - Attachment is obsolete: true
Attachment #325014 - Flags: review?(benjamin)
Attachment #324961 - Flags: review?(benjamin)
I've updated the installer here to one built with this patch:
http://people.mozilla.com/~tmielczarek/MozillaBuildSetup-1.3rc2.exe
Comment on attachment 325014 [details] [diff] [review]
embed manifests in msys/*.exe, nsinstall.exe, MozillaBuildSetup.exe

I'm confused why you still need MozillaBuildStep.exe.manifest, now that you have the NSIS goodness... but this looks good in either case.
Attachment #325014 - Flags: review?(benjamin) → review+
Checked in.
Status: ASSIGNED → RESOLVED
Closed: 14 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.