rstrong's blog
in search of ponies
App Update / Win Installer status – 2010-11-19
November 19th, 2010 by rstrong
The flu kicked my butt last week and put a few things on the back burner but I was able to get a couple of cool things landed on trunk yesterday. The first one is fairly simple. On Windows, to start Firefox in safe mode you can now hold the shift key down while launching Firefox without having to use the safe mode shortcut. The second takes a few more words to explain.
We’ve always had issues with performing an update while files are in use on Windows. In the case where these files are in use by another instance of Firefox we shouldn’t update since the Firefox UI / JavaScript / strings / dll’s are not necessarily in memory. By updating these files they would be different than what a running instance of the application expects which can end up with the running instance being badly broken.
For Firefox 3.6 I made it so the updater must be able to exclusively lock the firefox.exe file (Bug 525390) which means that Firefox is not running before trying to perform an update. With this requirement in place it is possible to move the files in use out of the way to perform the update. Now, if the update is successful the files that are in use are moved to a directory named “tobedeleted” and are scheduled to be deleted on OS restart. There is more to it including additional fallback removal mechanisms than this but this is the gist of it.
There has been an increase of failed update reports due to crashreporter.exe and plugin-container.exe being in use during an attempt to update and the expression “not a moment too soon” comes readily to mind. Since Firefox 3.6 has the patch from Bug 525390 it is also possible to backport this to Firefox 3.6 if all goes well.
Progress:
- Landed on trunk – Bug 466778 [Toolkit] – [Win] Unable to update when files to be patched are in use on Windows (this is a Windows specific bug) [Windows Vista]
- Bug 611186 [Toolkit] – Try to lock the main exe multiple times before giving up [Windows]
- Landed on trunk – Bug 602562 [Toolkit] – Add keyboard modifier to start in safe mode for windows [Windows]
- Landed on mozilla-1.9.1 and mozilla-1.9.2 – Bug 552924 [Toolkit] – Allow distinguishing Universal ppc/i386 from Universal i386/x86_64 builds in AUS request [Mac OS X]
- Landed on trunk – Bug 608911 [Toolkit] – Invalid check in browser_bug562890.js [All]
- Landed on trunk – Bug 604136 [Toolkit] – [Windows SeaMonkey] mochitest-browser-chrome: “browser_bug562890.js | Test timed out” [Windows]
- Landed on trunk – Bug 608507 [Toolkit] – some minor test cleanup [All]
- Landed on trunk – Bug 608586 [Toolkit] – [SeaMonkey] mochitest-browser-chrome: …/browser-window/browser_bug562797.js fails [All]
Future:
- Bug 315278 [Toolkit] – Update process produces a broken application when disk space is low [All]
- Finish up Bug 597235 [Firefox] – Remove Java Console extensions in the install directory’s extensions directory on install and app update [Windows]
- Finish up the reviews in my queue
What to do?
November 6th, 2010 by rstrong
I typically don’t complain unless things get really bad. In the past when Panorama made it so I was unable to work with my current tabs I would look around for what one needed to do to work around it getting in the way but so far I have been unable to to find a solution to the current problem. What is the current problem yoyu ask? I launch Firefox and all I have is my app tab in the Firefox tabs while I expect all of my previous tabs. The only saving grace is that the tabs are available in the Windows 7 taskbar list. Note: all of the tabs were open in the previous session and I have tried resetting pamorama without it helping a thing.

*edit* I have also tried to edit my tab groups but all I get is the following even though I have all of my tabs loaded

*edit 2* Jesse pointed out that setting javascript.options.methodjit.chrome to true breaks Panorama which was the reason Panorama was broken for me – Bug 604381 [Core] – Panorama stops working, if set javascript.options.methodjit.chrome to true [All]. Thanks Jesse!
App Update / Win Installer status – 2010-10-29
October 29th, 2010 by rstrong
I haven’t posted a status update for a while so it is a tad long this time.
Progress:
- Landed on trunk – Bug 608210 [Toolkit] – requestLongerTimeout for each test within a test in extensions/test/browser [Windows 7]I am fairly certain this fixed the following bugs and possibly others as well:
- Bug 573779 [Toolkit] – Intermittent failure in browser_dragdrop.js | Timed out | Found 1 unexpected tab(s) at the end of test run [Windows Server 2003]
- Bug 579540 [Toolkit] – Intermittent timeout in browser/base/content/test/browser_bug553455.js, followed by various failures about number of installed extensions or notifications, probably depending on when it timed out [Linux]
- Bug 591851 [Toolkit] – Intermittent browser_bug567127.js | Test timed out and Found a tab after previous test timed out: about:addons [Windows 7]
- Bug 604136 [Toolkit] – [Windows SeaMonkey] mochitest-browser-chrome: “browser_bug562890.js | Test timed out” [Windows Server 2003]
- Landed on trunk – Bug 607821 [Toolkit] – intermittent timeout toolkit/mozapps/extensions/test/browser/browser_bug557956.js | Test timed out [Windows Server 2003].
- Landed on trunk – Bug 584944 [Toolkit] – Intermittent browser_uninstalling.js | Timed out [Windows Server 2003]
- Landed on trunk – Bug 607545 [Toolkit] – Intermittent browser_bug562797.js | Test timed out *followed* by other errors [Windows Server 2003]
- Landed on trunk – Bug 608138 [Toolkit] – Exclude plugins from the compatibility wizard checks [All]
- Landed on trunk – Bug 608115 [Toolkit] – ReferenceError: strings is not defined in a couple of obvious places in update.js [All]
- Landed on trunk – Bug 608112 [Toolkit] – undeclared variable formatted chrome://mozapps/content/extensions/extensions.js line: 2086 [Windows 7]
- Landed on trunk – Bug 601386 [Toolkit] – Running in 64 bit mode after applying an update when the bundle was originally opened in 32 bit mode [Mac OS X]
- Landed on trunk – Bug 601518 [Toolkit] – Need updater tests to cover nsUpdateDriver.cpp code. [All]
- Landed on trunk – Bug 605767 [Toolkit] – Intermittent test_0200_app_launch_apply_update.js | the application can’t be in use when running this test [Windows 7]
- Landed on trunk – Bug 601469 [Toolkit] – Updater in 10/02 and 10/03 Windows nightly is broken [Windows 7]
- Landed on trunk – Bug 601830 [Firefox] – app.update.url.manual for nightly builds should point to the nightly builds [Windows 7]
- Landed on trunk – Bug 599274 [Toolkit] – Add ability to fallback to previous update snippet format [All]
- Landed on trunk – Bug 597247 [Toolkit] – Implement alive ping counter for blocklist to strengthen user privacy [All]
- Received r+ – Bug 606410 [Toolkit] – add tests for calling the callback app and the arguments passed to it [All]
- Submitted patch for review – Bug 466778 [Toolkit] – [Win] Unable to update when files to be patched are in use on Windows (this is a Windows specific bug) [Windows Vista]
Future:
- Get review for Bug 466778 [Toolkit] – [Win] Unable to update when files to be patched are in use on Windows (this is a Windows specific bug) [Windows Vista]
- Land on 1.9.1 and 1.9.2 – Bug 552924 [Toolkit] – Allow distinguishing Universal ppc/i386 from Universal i386/x86_64 builds in AUS request [Mac OS X]
- Fix Bug 315278 [Toolkit] – Update process produces a broken application when disk space is low [Windows XP]
- Finish up Bug 597235 [Firefox] – Remove Java Console extensions in the install directory’s extensions directory on install and app update [Windows 7]
- Finish up the reviews in my queue
Important App Update changes on the 1.9.1 and 1.9.2 branches
October 22nd, 2010 by rstrong
The value for the %BUILD_TARGET% parameter of the app.update.url preference is changing for Mac OS X Universal builds on the Mozilla 1.9.1 and 1.9.2 stable branches and should land for the 1.9.2.12 and 1.9.1.15 releases unless an unforeseen issue comes up.
Previously the value was always Darwin_Universal-gcc3 which doesn’t distinguish which architecture the application is running on. The value will be Darwin_ppc-gcc3-u-ppc-i386 for Universal builds using the PPC architecture and Darwin_x86-gcc3-u-ppc-i386 for Universal builds using the i386 architecture. This is necessary to distinguish between a ppc system which should not be updated to Mozilla 2.0 branch applications such as Firefox 4 and i386 systems which can be updated. This is fully implemented on trunk already and the value for the %BUILD_TARGET% parameter for x86_64 architectures is Darwin_x86_64-gcc3-u-i386-x86_64.
See Bug 552924 [Toolkit] – Allow distinguishing Universal ppc/i386 from Universal i386/x86_64 builds in AUS request [Mac OS X] for more details.
App Update / Win Installer status – 2010-09-24
September 24th, 2010 by rstrong
Progress:
- Landed on trunk – Bug 597247 [Toolkit] – Implement alive ping counter for blocklist to strengthen user privacy [All]
- Landed on trunk – Bug 597630 [Toolkit] – Fix _snprintf / _snwprintf usage in updater.cpp and various x64 compiler warnings [Windows]
- Landed on trunk – Bug 597664 [Toolkit] – Add finalURI.spec for the mar file download to the local update xml and log the finalURI.spec along with the original URI.spec [All]
- Landed on trunk – Bug 588662 [Toolkit] – Update NSIS entry in license.html [All]
- Landed on trunk – Bug 596813 [Firefox] – Check for updates inside the About window without opening a new window [All]
- Landed on trunk – Bug 599412 [Firefox] – Disable the update button when it is hidden in the deck [All]
- Landed on trunk – Bug 327612 [Toolkit] – Firefox does not stay in safe mode after software update [All]
- Landed on mozilla-1.9.2 for Firefox 3.6.11 – Bug 546593 [Toolkit] – If both a partial and complete update have a verification failure this._update is null, the UI breaks, and the user is not notified of the update failure [All]
- Received r+ for Bug 597235 [Firefox] – Remove Java Console extensions in the install directory’s extensions directory on install and app update [Windows]. This will land sometime after beta 7 when I have finished some additional research.
Future:
- Bug 598779 [Firefox] – Remove start menu directory and safe mode shortcut creation [Windows]
- Bug 552924 [Toolkit] – Allow distinguishing Universal ppc/i386 from Universal i386/x86_64 builds in AUS request [Mac OS X]. A minimal patch will need to be backported so it is possible to distinguish Mac OS X ppc from i386 in order to offer i386 systems updates to the i386 / x64 universal build.
- Write tests for Bug 599233 [Firefox] – Create tests for update checking in the Firefox about window [All]
- Write additional tests for Bug 597247 [Toolkit] – Implement alive ping counter for blocklist to strengthen user privacy [All]
- Bug 599274 [Toolkit] – Add ability to fallback to previous update snippet format [All].
- Bug 599272 [Toolkit] – Ability to log to file [All]. This adds an new logging option for app update so it isn’t so difficult for bug reporters to gather the information needed for us to diagnose app update problems.
- Start working on silent updates for Windows again now that the I’ve finished the majority of the stability and feature work on my plate.
App Update / Win Installer status – 2010-09-17
September 17th, 2010 by rstrong
Progress:
- Landed on trunk – Bug 595455 [Toolkit] – After several background update check failures notify the user that they should check if there is a new version available [All].
- Landed on trunk – Bug 595722 [Toolkit] – Using this._enabled to make nsIUpdatePrompt not show some of the UI when the app.update.silent pref is set is confusing [All].
- Landed on trunk – Bug 568904 [Toolkit] – Don’t perform a shell refresh when there are no shortcuts for the installation when updating app modal id’s [Windows 7].
- Landed strings on trunk for Bug 596813 [Firefox] – Check for updates inside the About window without opening a new window [All]. I’m going to try to finish this up over the weekend for Firefox 4.0.
- Landed followup on trunk – Bug 595059 [Toolkit] – Incorrect errorCode comparison and enabled check in showUpdateError [All].
- Submitted a 1.9.2 patch for Bug 546593 [Toolkit] – If both a partial and complete update have a verification failure this._update is null, the UI breaks, and the user is not notified of the update failure [All].
- Submitted a patch for Bug 597630 [Toolkit] – Fix __snprintf / snwprintf usage in updater.cpp and various x64 compiler warnings [Windows 7].
Future:
- Bug 596813 [Firefox] – Check for updates inside the About window without opening a new window [All].
- Bug 597235 [Firefox] – Remove Java Console extensions in the install directory’s extensions directory on install and app update [Windows 7].
- Bug 597247 [Toolkit] – Implement alive ping counter for blocklist to strengthen user privacy [All]
App Update / Win Installer status – 2010-09-12
September 12th, 2010 by rstrong
There are 4390 checks performed by the application update chrome mochitests and none of them are intermittent oranges!
I skipped a couple of status updates so this covers a couple of weeks.
Progress:
- Landed on trunk – Bug 594986 [Toolkit] – Allow applications to specify the first timer interval via a pref [All]. This is mainly to help out Fennec since they want the first timer to fire soon after startup.
- Finished the remaining bugs for Bug 544442 [Toolkit] – Add support for signed AUS update snippets [All]
- Landed on trunk – Bug 583408 [Toolkit] – Notify user when the certificate attribute check fails [All]. This also fixed Bug 583667 [Toolkit] – Consider providing pref for disabling cert attribute and cert builtin checks [All].
- Landed on trunk – Bug 586213 [Firefox] – Update app update url and certificate preferences after the additional host name with a new certificate is added for aus [All].
- Partial landing on trunk – Bug 595059 [Toolkit] – Incorrect errorCode comparison [All]. The most serious issues is fixed and I’ve written a test to cover this.
- Landed on trunk – Bug 546593 [Toolkit] – If both a partial and complete update have a verification failure this._update is null, the UI breaks, and the user is not notified of the update failure [All].
- Landed on trunk – Bug 316890 [Toolkit] – Add more logging to updater and close patch files so they can be deleted [All].
- Landed on trunk – Bug 592785 [Toolkit] – Don’t report add-ons as incompatible if they are already incompatible with the current version [All].
- Landed on trunk – Bug 552924 [Toolkit] – Allow distinguishing Universal ppc/i386 from Universal i386/x86_64 builds in AUS request [Mac OS X].
- Landed on trunk and mozilla-1.9.2 for Firefox 3.6.9 – Bug 588163 [Toolkit] – Crash [@ @0x0 | ProcessUpdates(nsIFile*, nsIFile*, nsIFile*, int, char**, char const*&) ] [Windows].
- Landed on trunk – Bug 506867 [Toolkit] – /S command line option for silent installation is broken – fixed in the latest NSIS [Windows].
- Landed on trunk – Bug 591564 [Firefox] – Stop copying QuickTime’s nsIQTScriptablePlugin.xpt [Windows].
- Landed on trunk – Bug 592133 [Firefox] – Installer includes “Minefield is a Trademark of The Mozilla Foundation” when not using official branded [Windows].
- Landed on trunk – Bug 568949 [Firefox] – Rework Windows installer for 64 bit (install into ‘Program Files’, write to 64 bit registry hives, etc.) [Windows]. I still need to fix Bug 572162 [Toolkit] – Remove requirement for app dir to be under program files for UAC elevation (breaks side by side installs of x86 and x64) [Windows] before x64 support is complete for the installer and application update.
- Helped out with getting application update working on Android using .apk files.
- Continued work on silent updates on Windows.
App Update / Win Installer status – 2010-08-13
August 15th, 2010 by rstrong
Progress:
- Landed on mozilla-1.9.2 for Firefox 3.6.9 Bug 576939 [Toolkit] – Backport app update fixes to 1.9.2 [All]. This fixes several longstanding bugs and adds mochitest-chrome tests! This should also prevent the license page from being shown when an error occurs which has been a bane of my existence for a while now. I think this is the second largest landing (305 KB) I’ve done on a stable branch. The bugs fixed on 1.9.2 for Firefox 3.6.9 by this are:
- Bug 485493 [Toolkit] – Updates that are in the downloading state display no status or the string undefined in the history window [All]… actually just a better fix.
- Bug 536547 [Toolkit] – 3.5.6 is downloading the same version for an update [Windows]
- Bug 540046 [Toolkit] – Add mochi tests to app update [All]
- Bug 551283 [Toolkit] – Suspicious and possibly unused code in updates.js updateListener.onProgress [All]
- Bug 563810 [Toolkit] – With no fallback update specified in the snippets, Firefox hangs when trying to fetch it [All]
- Bug 543312 [Toolkit] – Remove the dependency on nsTryToClose.js from app update’s ui [All]
- Landed on trunk Bug 586194 [Toolkit] – move never pref check into selectUpdate and use services js module in app update [All]. This implements a better solution for Bug 350636 [Toolkit] – “Never” decision by the user for a major update should not impact a minor update to the same version [All].
- Landed on trunk Bug 585838 [Testing] – Disable update checks in any tests running in the browser [All].
- Landed on trunk Bug 523410 [Core] – Disable LSPs in WinSock that don’t have categories for Firefox on Windows Vista and above [Windows Vista and above].
- Discussed Bug 583408 [Toolkit] – Notify user when the certificate attribute check fails [All] with beltzner and he will be providing UX guidance.
- Reviewed the patch sent to me by Amir for Bug 568949 [Firefox] – Rework Windows installer for 64 bit (install into ‘Program Files’, write to 64 bit registry hives, etc.) [Windows 7]. Amir has been contracted to perform the Windows x64 NSIS installer work which is very much appreciated and is to say the least well known at the NSIS project. I’ll post more on this in a future post.
- Performed a bunch of reviews as usual and I wanted to mention that mwu has done a really awesome job with Bug 556644 [Core:Build Config] – Omnijar generation support for desktop builds [All].
Future:
- Finish up Bug 583408 [Toolkit] – Notify user when the certificate attribute check fails [All] after receiving feedback from beltzner.
- Fix Bug 586213 [Firefox] – Update app update url and certificate preferences after the additional host name with a new certificate is added for aus [All] after Bug 583678 [mozilla.org] – Acquire a standby certificate for AUS [All] is fixed.
- Try to write a fix for Bug 583667 [Toolkit] – Consider providing pref for disabling cert attribute and cert builtin checks [All].
- Continue work on silent updates on Windows.
- Hopefully fix Bug 577563 [Toolkit] – Consider renaming log files so they don’t have a .log file extension [Windows]. This bug breaks uninstalls after running a utility that removes .log files… meh.
App Update / Win Installer status – 2010-08-01
August 1st, 2010 by rstrong
Progress:
- Landed on mozilla-1.9.2 for Firefox 3.6.9 and mozilla-1.9.1 for Firefox 3.5.12 Bug 540537 [Firefox] – In China, set default browser does not work [Windows].
- Landed on mozilla-1.9.2 for Firefox 3.6.9 and mozilla-1.9.1 for Firefox 3.5.12 Bug 367539 [Toolkit] – When upgrading an existing install use the uninstall.log to uninstall the previous version before install. [Windows]
- Landed on trunk – Bug 575838 [Toolkit] – Build scripts should be able to handle @BINPATH@/extensions/testpilot@labs.mozilla.com/* in package-manifest.in for the installer [Windows] The installer packaging wasn’t using absolute paths unlike all of the other packaging which prevented the packaging PERL module from recursively adding subdirectories specified in the package-manifest. Also reviewed and cleaned up the package-manifests for all applications.
- Landed on trunk – Bug 570689 [Toolkit] – Convert preprocess-locale.pl to a python script [Windows]. This substantially cleans up the Makefiles and scripts used to build the NSIS installer for all apps. Also landed patches on comm-central to use the python script.
- Landed on trunk – Bug 544442 [Toolkit] – Add support for signed AUS update snippets [All]. Filed Bug 583408 [Toolkit] – Notify user when the certificate attribute check fails [All] to figure out the best way to notify users when the certificate attribute check fails.
- Submitted patch for review for Bug 567258 [Testing] – Update the SoftwareUpdateAPI for Firefox 4.0 [All]. There have been several bug comments about needing or wanting client and server (AUS) side changes for mozmill which didn’t make sense to me and after reviewing the mozmill code, writing the patch, and testing it thoroughly I am quite certain that they don’t need to be made for mozmill though there are other reasons such as bugs in the client side to make those changes.
Future:
- Finish the patch for Bug 523410 [Core] – Disable LSPs in WinSock for Firefox [Windows].
- Figure out the appropriate behavior and write a patch for Bug 583408 [Toolkit] – Notify user when the certificate attribute check fails [All]
- Hopefully fix Bug 577563 [Toolkit] – Consider renaming log files so they don’t have a .log file extension [Windows]. This bug breaks uninstalls after running a utility that removes .log files… meh.
- Get back to working on silent updates on Windows if at all possible
App Update / Win Installer status – 2010-07-25
July 25th, 2010 by rstrong
Progress:
- Spent most of the week working on Bug 523410 [Core] – Disable LSPs in WinSock for Firefox [Windows]. I now have a pretty good understanding of the implications of implementing this and believe the benefits are worthwhile.
- Landed on trunk Bug 540537 [Firefox] – In China, set default browser does not work [Windows]. This might not fix all of the issues but it definitely fixes one of the issues.
- Landed on trunk Bug 580579 [Toolkit] – While creating services from category ‘profile-after-change’, service for entry ‘nsUpdateServiceStub’, contract ID ‘@mozilla.org/updates/update-service-stub;1′ does not implement nsIObserver. [All].
- Created builds using 1.9.1 and 1.9.2 for Thunderbird, SeaMonkey, and Sunbird just to be sure that landing Bug 367539 [Toolkit] – When upgrading an existing install use the uninstall.log to uninstall the previous version before install [Windows] on 1.9.1 and 1.9.2 won’t adversely affect them and all is clear to fix this bug on 1.9.1 and 1.9.2.
Future:
- Finish the patch for Bug 523410 [Core] – Disable LSPs in WinSock for Firefox [Windows].
- Fix Bug 544442 [Toolkit] – Add support for signed AUS update snippets [All]. I wanted to get this done last week but the first two items in the progress section got in the way.
- Land on 1.9.1 and 1.9.2 Bug 367539 [Toolkit] – When upgrading an existing install use the uninstall.log to uninstall the previous version before install [Windows].
- Fix Bug 577563 [Toolkit] – Consider renaming log files so they don’t have a .log file extension [Windows]. This bug breaks uninstalls after running a utility that removes log files… meh.
- Get review / land Bug 570689 [Toolkit] – Convert preprocess-locale.pl to a python script [Windows].
- Get review / land Bug 575838 [Toolkit] – Build scripts should be able to handle @BINPATH@/extensions/testpilot@labs.mozilla.com/* in package-manifest.in for the installer [Windows].
- Continue work on silent updates for windows.