Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 46 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
46
Dung lượng
1,64 MB
Nội dung
250 Part V — Installation, Automation, Tools, and Tricks On Windows systems, the default location for profiles is as follows: C:\Documents and Settings\User Name\Application Data\Mozilla\Firefox\Profiles. For Linux: firefox.exe -CreateProfile “MyProfile ~/.mozilla/firefox/” It is important to note that the two parameters, the profile name and the directory paths, need to be quoted together, as together they are the single value that is used by the - CreateProfile instruction when you specify a custom path for the MyProfile directory. For more information on other Mozilla Suite command-line options that may work with Firefox, visit http://www.mozilla.org/docs/command-line-args.html. Adding Global Extensions and Themes One interesting but somewhat limited set of features that is available is global installations of extensions and themes. These options are available as command-line options after Firefox has been installed, so they are Firefox options and not install file options. The -install- global-extension and -install-global-theme command-line options allow exten- sions and themes to be installed to the main directory in which Firefox is installed, much like the similar option in the Mozilla Suite. On the surface, these look to be ideal for deploying extension and themes, but in my experience a global extension installation might not be worth the hassle. Before I dive into how to best use these, I will just cover the issues I have come across in trying to implement them. What I have found on Windows-based systems is that the extension parameter does not play nice when it comes to the location of the actual extension XPI file. After some testing, the only way to get extensions to install was to have the XPI file reside in the same directory as the Firefox.exe or the Firefox installation path. This makes deploying a tad annoying because the files have to be copied over the computer, the installation for each executed, and then cleaned up afterward. This, coupled with the fact that the Options dialog for globally installed extension is disabled, makes it difficult for users to customize extensions. All preference changes for globally installed extensions will have to be entered into the user.js or prefs.js file in the profile. Installing themes globally, though, was a tad smoother, and I was able to get all my themes to install properly. Installing extensions globally works best on brand-new Firefox installations with a new and clean profile. Profiles that already contain the same extension that will be installed globally may encounter issues. If the extension is installed in the profile, uninstall it and restart Firefox. Additionally, the directory associated to the GUID in the profile’s extension directory needs to be deleted, as well as any references in the chrome.rdf file located in the profile’s chrome directory. 20_596500 ch13.qxd 6/30/05 3:06 PM Page 250 251 Chapter 13 — Hacking Installation and Deployment To install an extension globally, you should make sure of the following: Ⅲ You have the extension XPI install file saved locally into the Firefox installation path. Ⅲ The user must have read and write access to the Firefox installation path. Ⅲ All instances of Firefox must be closed. Once these have been satisfied, open a command prompt to the Firefox installation path and issue the following command: firefox -install-global-extension “local_install.xpi” If the installation fails, try removing the quotes. Though all of this seems straightforward, I have had several issues with getting extensions to register themselves properly, and I would recommend using the extension installation enhance- ments that are slated for the Firefox 1.1 release. With less of a configuration headache, you can install themes by issuing the following command: firefox -install-global-theme “D:\Firefox\apollo_fx.jar” As you can see, having the themes in a different directory works and makes installing themes globally a more viable option. For each extension and theme, Firefox will run and then exit, so on slower computers it will take longer to deploy using this method. Deploying Plugins We covered finding and fixing plugins in Chapter 11; here I show you how to automate the plugin installation and disclose where some of the required files are located. Adding Macromedia Flash and Shockwave Support To deploy Flash and Shockwave updates that support Firefox, simply run the latest Macromedia installers, and they will automatically add Firefox plugin support. Automating this is a little trickier, especially for the Shockwave installer. To download the Flash installer, just visit the following Macromedia site using Firefox and download the installer: http://www.macromedia.com/go/getflashplayer. The reason I specify “using Firefox” is if you go to download the installer using Internet Explorer, the site delivers and installs the ActiveX version of the plugin. When you download the Flash installer with Firefox, the Macromedia site provides support for Firefox, Opera, and Internet Explorer. 20_596500 ch13.qxd 6/30/05 3:06 PM Page 251 252 Part V — Installation, Automation, Tools, and Tricks To download Shockwave just visit and download the installer using Firefox: http://sdc .shockwave.com/shockwave/download/download.cgi? . Both installers have the ability to run in silent mode by specifying a command-line parameter of /silent, as shown for the Flash Installer: flashplayer7installer.exe /silent The only major problem is that the new Shockwave installer now also includes the Yahoo! Toolbar installation, and this will be automatically installed if you run the Shockwave installer with the command-line /silent parameter. Unless you have or want to use the Yahoo! Toolbar, the silent option will not work. An alternative approach to silent installation is to sign up for the Macromedia Distribution Program. The distribution program, found at http:// www.macromedia.com/support/shockwave/info/licensing/ , gives you one installer for both Flash and Shockwave that can also be executed with the /silent parameter. Installation is a breeze; during the installation, an installer tray icon and the Shockwave extrac- tion screen are visible, but the whole process is automated and works well to add Flash and Shockwave support to Firefox. After you fill out the registration form for the distribution program, a download link is sent via e-mail. Once the installer has been downloaded, it can be run in silent mode with the following: mm_fl_sw_installer.exe /silent Adding Apple QuickTime and RealPlayer Support Both QuickTime and RealPlayer come with components and plugin files that allow Firefox to offer embedded playback of these media file types. The newer QuickTime and RealPlayer installers automatically detect and copy the corresponding components and plugins if Firefox is already installed. Unfortunately, if Firefox is installed after these media tools, it will not have, nor will it be able to find, the plugins and components needed to allow them to work properly. So you can either reinstall both media tools after installing Firefox or just copy the contents of the components and plugins directories associated with QuickTime and RealPlayer to the cor- responding directories in the main Firefox application directory. The default Firefox path would be something like this: Ⅲ C:\Program Files\Mozilla Firefox\plugins Ⅲ C:\Program Files\Mozilla Firefox\components The default path for RealPlayer browser plugin and component files is C:\Program Files\ Real\RealPlayer\Netscape6. The default path for Apple QuickTime is C:\Program Files\Apple\QuickTime\Plugins. Creating a script to automatically copy these over will always ensure that the plugins and com- ponents match the installed versions of QuickTime or RealPlayer. 20_596500 ch13.qxd 6/30/05 3:06 PM Page 252 253 Chapter 13 — Hacking Installation and Deployment Create a Custom Windows Desktop Icon In a great posting on his site, Henrik Gemal has created Microsoft Windows Scripts to auto- mate the creation of Windows desktop icons for Firefox, Thunderbird, and Sunbird. The dif- ference between a desktop icon and a standard shortcut icon is that it implements Microsoft’s namespace functionality to give the desktop icon enhanced right-click functionality, much like Microsoft Outlook and Internet Explorer. Figure 13-3 shows the key right-click context menu options available: Open, Open (Safe Mode), Options, and Profile Manager. For more information on the status of integrating this feature into the official Firefox installer, visit the following Bugzilla posting: https://bugzilla.mozilla.org/show_bug .cgi?id=264889. F IGURE 13-3: Right-click menu for Firefox desktop icon To use this, just download and execute the Microsoft script file from http://gemal.dk/ misc/desktop-firefox.vbs , and a desktop icon will be created. Just remove the old Mozilla Firefox shortcut before running the script. You may have to refresh your desktop by switching focus to the desktop and pressing F5 or by logging off and then back on. For more information on the desktop links from Henrik’s site, visit http://gemal.dk/ blog/2004/11/05/firefox_thunderbird_and_sunbird_desktop_shortcuts/. This script is also a good reference point to use if you want to extract the necessary registry information to create your own script to accomplish the same thing. Hacking the Desktop Icon with Nullsoft Installer Script Tapping into Henrik’s script, I have converted it to a Nullsoft Installer script that you can com- pile with the Nullsoft Scriptable Install System (NSIS) installer engine. To download the NSIS visit its site at http://nsis.sourceforge.net/. 20_596500 ch13.qxd 6/30/05 3:06 PM Page 253 254 Part V — Installation, Automation, Tools, and Tricks The script is designed to do the following: Ⅲ Remove previous registry entries. Ⅲ Add the appropriate registry entries for the desktop icon. Ⅲ Remove the standard Mozilla Firefox shortcut link from the desktop. Ⅲ Refresh the desktop to force the display of the newly created icon. The script will automatically run in silent mode with no dialog windows and is available for download at http://www.hackingfirefox.com/desktop-icon.nsi. For easier editing and compiling, I like to use HM NIS Editor, an open-source editing tool for NSIS scripts. This editor includes a great Help file and syntax highlighting for all the NSIS keywords, functions, and commands. Figure 13-4 displays the desktop-icon.nsi script using the HM NIS Editor. F IGURE 13-4: HM NIS Editor with desktop-icon.nsi script loaded Following is a full listing of the desktop-icon.nsi source code: ############################################################### # Hacking Firefox: Desktop Icon - version 1.0 ############################################################### 20_596500 ch13.qxd 6/30/05 3:06 PM Page 254 255 Chapter 13 — Hacking Installation and Deployment # Define Variables !define PROD_NAME “Mozilla Firefox” !define PROD_PREF “chrome://browser/content/pref/pref.xul” !define TOOL_TIP “${PROD_NAME} - Rediscover the web” !define PROD_GUID “{EC8030F7-C20A-464F-9B0E-13A3A9E97384}” !define PROD_CLSID “CLSID\${PROD_GUID}” var PROD_EXE SetCompressor LZMA SilentInstall Silent OutFile “desktop-icon.exe” Section “Create Icons” section01 # Remove old icon settings DeleteRegKey HKCR “${PROD_CLSID}” # Get Current Path and Executable ReadRegStr $0 HKLM “SOFTWARE\Mozilla\${PROD_NAME}” “CurrentVersion” ReadRegStr $PROD_EXE HKLM “SOFTWARE\Mozilla\${PROD_NAME}\$0\Main” “PathToExe” # Setup NameSpace Icon WriteRegStr HKCR “${PROD_CLSID}” “” “${PROD_NAME}” WriteRegExpandStr HKCR “${PROD_CLSID}” “InfoTip” “${TOOL_TIP}” WriteRegStr HKCR “${PROD_CLSID}\DefaultIcon” “” “$PROD_EXE,0” WriteRegStr HKCR “${PROD_CLSID}\Shell\Open” “” “&Open” WriteRegStr HKCR “${PROD_CLSID}\Shell\Open\command” “” “$PROD_EXE” WriteRegStr HKCR “${PROD_CLSID}\Shell\Open (safe-mode)” “” “Open (&Safe Mode)” WriteRegStr HKCR “${PROD_CLSID}\Shell\Open (safe-mode)\Command” “” “$PROD_EXE -safe-mode” WriteRegStr HKCR “${PROD_CLSID}\Shell\Options” “” “Op&tions” WriteRegStr HKCR “${PROD_CLSID}\Shell\Options\Command” “” “$PROD_EXE -chrome ${PROD_PREF}” WriteRegStr HKCR “${PROD_CLSID}\Shell\Profilemanager” “” “&Profile Manager” WriteRegStr HKCR “${PROD_CLSID}\Shell\Profilemanager\Command” “” “$PROD_EXE -ProfileManager” 20_596500 ch13.qxd 6/30/05 3:06 PM Page 255 256 Part V — Installation, Automation, Tools, and Tricks WriteRegBin HKCR “${PROD_CLSID}\ShellFolder” “Attributes” 32000000 WriteRegStr HKCR “${PROD_CLSID}\ShellFolder” “HideOnDesktopPerUser” “” # Show Icons WriteRegDWORD HKCU “SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIco ns\NewStartPanel” “${PROD_GUID}” “0” WriteRegDWORD HKCU “SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIco ns\ClassicStartMenu” “${PROD_GUID}” “0” # Create NameSpace Icon WriteRegStr HKLM “SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSp ace\${PROD_GUID}” “” “${PROD_NAME}” # Remove Old Shortcut Delete “$DESKTOP\Mozilla Firefox.lnk” SetShellVarContext all Delete “$DESKTOP\Mozilla Firefox.lnk” # Refresh Desktop to show newly created desktop icon System::Call ‘user32.dll::RedrawWindow(i 0, i 0, i 0, i 0x0085) i .r1’ SectionEnd Other Notable Deploy Tools Currently, there is only one initiative to create a deployable and customized Firefox installation for Windows, and that is FFDeploy.The tool itself is just a combination of Windows Scripts and other small executables, but the effort to automate this is not trivial, and kudos go out to Bob Templeton for his hard work. To get more information on FFDeploy, just visit http://home.comcast.net/~ifrit/ FFDeploy.html. Creating a Custom Installer One issue I want to discuss without going too deeply into its logistics and semantics is the options available with different tools to create a custom Windows installer.The system used for deployment will determine what approach to take. Active Directory, ZENworks, and other sys- tems have built-in mechanisms for detecting which versions and packages are installed and come with different options. While an entire book could be written on how to deploy Firefox with all these systems, the following sections focus on highlighting tools that you could use with these systems, including some short sample scripts to help with the automation process. 20_596500 ch13.qxd 6/30/05 3:06 PM Page 256 257 Chapter 13 — Hacking Installation and Deployment Custom Nullsoft Scriptable Install System Installer The Nullsoft Scriptable Install System is a great scripting tool that I like to use to create full installers, as well as customized scripting executables that run silently. It supports all the key areas with file management, and registry and other great functions. Another great feature of this tool is that it supports LZMA, ZLIB, and BZIP2 compression of files that are included with the installers that it will create; and the NSIS installer itself adds minimal overhead to the size of the installer created. To download the core NSIS installer tool, visit http://nsis .sourceforge.net/ . After installing the main NSIS engine tool, files with .nsi extensions get two right-click con- text menu options, Complete NSIS Script and Complete NSIS Script (Choose Compressor). Either can be used to quickly create an installer from an existing NSIS script file. All NSIS scripts are text-based and can be edited with any standard text editor.To gain better control over editing and to get color syntax highlighting of NSIS keywords and functions (as shown in Figure 13-4), I like to use the HM NIS Edit tool, which can be downloaded from http:// hmne.sourceforge.net/ . This free editor is a great companion to the NSIS engine and provides a nice interface to editing and compiling your source NSIS scripts. Knowing that I could modify the config.ini from the extracted installer, I wanted to write a script that would automate specific config.ini settings that I wanted to create; this script would make future upgrades easier to deploy.The script that follows focuses on providing methods for modifying the run mode; updating the installation path; disabling specific dialogs (if running in normal versus silent mode); and providing a mechanism to create a full installer, versus a stub installer, that would run the setup from the extracted directory. To download this NSIS script example, visit http://www.hackingfirefox.com/custom-installer.nsi. This script relies on the fact that the Firefox installer is extracted to a directory, as highlighted earlier in this chapter. To specify the path that the Firefox installer is extracted to, start by look- ing for the following line of code: !define SOURCE_PATH “setup” This current line looks for the config.ini and Firefox setup files in a subdirectory of setup. The setup path is a relative directory to the current location where the NSIS script is running from. To specify a different directory, just change this value, as in the following example: !define SOURCE_PATH “d:\Firefox Extracted Files” The value for SOURCE_PATH has to be a directory and does not have to have a trailing slash. All files in this directory will be included with the full installer. Trying to make the script as generic as possible, I have included sections of code that are com- mented out with semicolons, which can be used to further customize the script. To run the installer in normal mode and disable specific dialogs, change the Run Mode value of Silent to Normal, as follows: 20_596500 ch13.qxd 6/30/05 3:06 PM Page 257 258 Part V — Installation, Automation, Tools, and Tricks WriteINIStr “${SOURCE_PATH}\config.ini” “General” “Run Mode” “Normal” Then add the dialog window registry edits that you want to disable. For example, to disable the welcome dialog, uncomment this line: WriteINIStr “${SOURCE_PATH}\config.ini” “Dialog Welcome” “Show Dialog” “FALSE” Other installer dialogs include the following: Ⅲ Dialog Welcome Ⅲ Dialog License Ⅲ Dialog Setup Type Ⅲ Dialog Select Components Ⅲ Dialog Select Install Path Ⅲ Dialog Install Successful Another option I wanted to add was the ability to create a full installer and a stub installer. The full installer would repackage the customized config.ini with all the original Firefox installation files, and the stub installer would just have the config.ini changes and would execute the installer from the directory it was extracted to. The base script is designed to create a full installer.To modify it to create a stub installer, just switch the semicolon comments as follows: # 1) Use this section to make single installer containing # the complete installer ;File “${SOURCE_PATH}\*.*” ;ExecWait ‘“$INSTDIR\setup.exe”’ # 2) Use this for a stub installer with setup extracted # to the SOURCE_PATH ExecWait ‘“${SOURCE_PATH}\setup.exe”’ Following is the listing of the custom-installer.nsi source code: ############################################################### # Hacking Firefox: Custom Installer - version 1.0 # Source: http://www.hackingfirefox.com/custom-installer.nsi ############################################################### !define PRODUCT_NAME “Hacking Firefox Custom Installer” !define SOURCE_PATH “setup” !define CONFIG_INI “${SOURCE_PATH}\config.ini” # Use ZLIB compression to create installer faster # Use LZMA compression to create a smaller installer SetCompressor ZLIB 20_596500 ch13.qxd 6/30/05 3:06 PM Page 258 259 Chapter 13 — Hacking Installation and Deployment Name “${PRODUCT_NAME}” SilentInstall Silent OutFile “hacking_firefox.exe” # Create a random install path in Temp directory for single # installer using the NSIS $PLUGINSDIR variable InstallDir “$PLUGINSDIR” Section “Options” SEC01 # Run installer in Silent Mode - Default Value = Normal WriteINIStr “${CONFIG_INI}” “General” “Run Mode” “Silent” # Choose a custom installation path # ex: “d:\My Custom Apps\Mozilla Firefox” # Other Destination Path values include: # PROGRAMFILESDIR, WINDISK, WINDIR, WINSYSDIR ;WriteINIStr “${CONFIG_INI}” “General” “Path” “[PROGRAMFILESDIR]\Mozilla Firefox” # Disable the Welcome Dialog: Uncomment if changing # “Run Mode” to Normal ;WriteINIStr “${CONFIG_INI}” “Dialog Welcome” “Show Dialog” “FALSE” # Diable the License Dialog: Uncomment if changing # “Run Mode” to Normal ;WriteINIStr “${CONFIG_INI}” “Dialog License” “Show Dialog” “FALSE” # 1) Use this section to make single installer containing # the complete installer File “${SOURCE_PATH}\*.*” ExecWait ‘“$INSTDIR\setup.exe”’ # 2) Use this for a stub installer with setup extracted # to the SOURCE_PATH ;ExecWait ‘“${SOURCE_PATH}\setup.exe”’ SectionEnd Function .onInit # Initialize the random Plugins Directory for installation InitPluginsDir FunctionEnd 20_596500 ch13.qxd 6/30/05 3:06 PM Page 259 [...]... should not be allowed to grow to 50 MB Close Firefox 6 Copy this PortableProfile folder to a USB key, a floppy disk, or other removable medium 7 On another machine with Firefox installed, plug in your USB key or copy the profile to the hard drive Access the profile by starting Firefox with the -profile switch, like so: “c:\Program Files\Mozilla Firefox\ firefox.exe” -profile F:\PortableProfile F: is... can come in handy 271 272 Part V — Installation, Automation, Tools, and Tricks Launch Firefox with the Profile Manager, select your regular profile, and start Firefox Then close the browser Now open your profiles.ini file for editing It should look like this: [General] StartWithLastProfile=1 [Profile0] Name=default IsRelative=1 Path=Profiles/u31g6nph.default Default=1 [Profile1] Name =firefox2 IsRelative=0... Start Firefox with the Profile Manager 3 Create a new profile with the name MovedUser Change the path of the profile to your MovedProfile folder Click Finish 4 The main Profile Manager window appears, with the MovedUser profile selected Click the Start Firefox button to launch Firefox with the MovedUser profile Firefox opens with the default home page and bookmarks — a new, blank profile Close Firefox. .. C: 7 Start Firefox again, this time without the Profile Manager If all has gone well, Firefox should launch with your normal bookmarks, extensions, and themes intact To make sure you are using your new profile location, look in the MovedProfile folder for the parent.lock file Its presence indicates that the profile is active You will need to keep your old Firefox Profiles folder around, because Firefox. .. Official Firefox MSI installer Chapter 13 — Hacking Installation and Deployment To track the progress of the official Firefox MSI installer, visit the following Bugzilla posting: https://bugzilla.mozilla.org/show_bug.cgi?id=231062 FIGURE 13-6: FrontMotion’s MSI installer For more information on FrontMotion’s MSI installer, visit http://www.frontmotion com /Firefox/ Upon inspecting the official Firefox. .. the searchplugins folder in the Firefox application directory After reinstalling Firefox, copy the contents of the backup searchplugins folder to the new searchplugins folder in the Firefox application directory While some of the plugins come with Firefox, any plugins you have installed yourself will be restored to the browser Recommended Extensions for Backups Because Firefox doesn’t come with any built-in... prefs.js: This is Firefox s preferences file Ⅲ search.rdf: Contains information on Firefox s search plugins Ⅲ xpti.dat: This is a catalog for Component Object Model type library Ⅲ XUL.mfl: This is a cache file of the Firefox user interface for quick load of browser Chapter 14 — Backing Up and Managing Your Profile/Settings A brand new profile will also have three directories: Ⅲ cache: Stores the Firefox browser... http://www.advancedinstaller.com/ Chapter 13 — Hacking Installation and Deployment Summary This chapter should help you deploy and manage a core Firefox installation across multiple computers The chapter started by discussing hacking the installer and extracting the contents, moved on to configuration options, and finished with options and methods for building a deployable Firefox installer While this chapter... Documents\firefoxprofiles \firefox2 Your current profile will have the variable Default=1 listed under it Make a note of the path to that profile The random-looking code in the path will vary according to which version of Firefox the profile was created with, but, as long as you know the path, the name of the folder doesn’t matter You’ll need to know it when you move the profile Moving a Firefox profile... Settings\[your username]\Application Data\ Mozilla \Firefox\ Profiles In Linux, the profile for each user is stored in the user’s home directory, in the following path: ~/.mozilla /firefox/ [Profile name]/ In Mac OS X, profiles are located in either of these directories: ~/Library/Mozilla /Firefox/ Profiles/[Profile name]/ or ~/Library/Application Support/Mozilla /Firefox/ Profiles/ [Profile name]/ chapter by Phil . Firefox installation path. Ⅲ All instances of Firefox must be closed. Once these have been satisfied, open a command prompt to the Firefox installation path and issue the following command: firefox. code: ############################################################### # Hacking Firefox: Custom Installer - version 1.0 # Source: http://www.hackingfirefox.com/custom-installer.nsi ############################################################### !define. depends on where you installed Firefox, but the command line switch is the same: ~[path to Firefox] firefox -ProfileManager You can also edit the shortcut for Firefox and add the -ProfileManager