SlideShare uma empresa Scribd logo
1 de 8
Baixar para ler offline
Using Chained .MSI Packages
W H I T E PA P E R




                     to Componentize Your
                     Windows Installer Setup
                     By David Cole, Senior Software Engineer, IBM
Using Chained .MSI Packages to
Componentize Your Windows Installer Setup
Notice
Flexera Software and InstallShield are trademarks or registered    IBM is a trademark of International Business Machines
trademarks of Flexera Software LLC in the United States of         Corporation in the US, other countries, or both.
America and/or other countries.
                                                                   All other brand and product names mentioned herein are the
Windows is a registered trademark of Microsoft Corporation in      trademarks and registered trademarks of their respective owners.
the United States and other countries.


Introduction
Install developers often need to include other products within     make system changes at a time. This locking mechanism helps
their own setup. Flexera Software’s InstallShield 2009, coupled    ensure system integrity, but also limits where and how nested
with Microsoft’s Windows Installer (MSI) 4.5, offers new options   installations (sometimes called concurrent installations) can
for chaining installs together while avoiding the problems         be run. Microsoft acknowledged the need for one setup to be
associated with the existing options of merge modules and          launched from within another and developed special custom
nested installs.                                                   action types for nested installations2. Microsoft has since
                                                                   deprecated these types of custom actions and discourages their
This white paper describes using chained .msi packages in          use3, citing that, “…they are difficult for customers to service.”
InstallShield 2009 and MSI 4.5 to componentize a setup. You
will learn how to include other .msi packages within your own      A new hope: chained .msi packages
so that the result may be installed with the appearance of being   Chained .msi packages is a new feature of MSI 4.5 and is
a single product. The white paper also compares chained .msi       supported by InstallShield 2009. This function allows individual
packages with InstallShield prerequisites, which provide another   .msi packages to be integrated into a containing, parent .msi
method for including third-party setups.                           setup so that the combined install is managed as a single
                                                                   transaction. Thus, if the install of one .msi package fails, then
Footnotes are added with links to the InstallShield and MSI help   the entire install is rolled back. When the parent product is
for additional details.                                            uninstalled, the chained .msi packages are also uninstalled
                                                                   (although there are other options available).
The problem with merge modules
Microsoft originally developed merge modules as the preferred      Perhaps most importantly, each constituent .msi package is
method within MSI for developing components to be shared           installed under its own ProductCode. This means that each
among multiple products. A key problem with merge modules,         product can be serviced independently and thus avoids one of
however, is that the contents of a merge module are installed      the major problems with merge modules.
under the ProductCode1 of the product that includes the merge
module. Consequently, merge modules cannot be serviced             MSI 4.5 uses the chained .msi package’s own ProductCode to
independently; any service update for the merge module must be     determine whether that package has already been installed
packaged as a service update to the containing product.            or not, and thus skips the install step for packages that have
                                                                   already been installed. Similarly, if a chained .msi package has
For example, suppose a version of Acme WidgetWorks included        been upgraded so that it now has a different ProductCode, or if
Microsoft’s Windows Scripting Host 1.0 merge module, and that      the package has already been uninstalled, then the uninstall step
Microsoft later released a service update for that merge module.   for that package
Acme WidgetWorks would then have to release a service update       is skipped in the parent uninstall. Thus, chained .msi packages
of its own that includes the Microsoft update. This can quickly    behave as you would generally desire without having to write
become a service nightmare, especially if there are urgent         additional code.
security issues involved.
                                                                   Considerations for chained .msi packages
The problem with nested installs                                   Before you include chained .msi packages in your installation
MSI has always had the restriction that only one MSI install can   program, you should consider the following:
1
  “ProductCode Property” in the MSI help
2
  “Concurrent Installations” in the MSI help
3
  “Windows Installer Best Practices” in the MSI help

2                                                                                   Flexera Software: InstallShield White Paper Series
Using Chained .MSI Packages to Component ize Your Windows Installer Setup




Including MSI 4.5                                                            • The overall size of a .msi file is limited to 2GB, so the
Chained .msi packages require the use of MSI 4.5, which                        cumulative size of the parent setup must not exceed this limit.
is included with InstallShield 2009. (The GA version of MSI                  • Streamed packages are not visible to the end user, and thus
4.5 became available with InstallShield 2009 service pack                      cannot be accessed and installed independently.
1.) Unlike earlier versions of MSI, MSI 4.5 is added as an                   • Streamed packages must be streamed out into temporary
InstallShield Prerequisite4. We’ll discuss prerequisites in greater            storage during install, and thus affects both performance and
detail later in this white paper.                                              temporary disk space requirements.
                                                                             • A repair operation for a chained .msi package may prompt
MSI 4.5 is only required for the parent .msi package. Child                    for the install source location, and that can be more easily
packages are not required to use any particular version of MSI.                located if the package is on the install media (i.e., not
                                                                               streamed).
Installing MSI 4.5 does require a reboot, although the                       • If some chained .msi packages are optional – for example,
symptoms vary based on the version of Windows being used.                      they’re associated with features – then not streaming the
On Windows XP and Windows Server 2003, the reboot is                           chained .msi packages allows the end user to remove any
automatically deferred to the end of the setup. That is, on these              packages that are unneeded, and thus reduce the size of the
versions of Windows a setup that installs MSI 4.5 will run to                  overall install package. Administrators appreciate being able
completion and the user will be prompted for a reboot when                     to reduce an install image to only that which is needed for
the setup completes. On Windows Vista, a reboot is required                    their environment.
immediately after MSI 4.5 is installed. Based on discussions in
the InstallShield 2009 Community5, the cleanest approach on                  If you choose to locate the chained .msi packages on the install
Vista is to force the reboot by:                                             media then you should consider a directory structure for storing
                                                                             the .msi packages. In the event that the packages could have
  1. In the Redistributables view, right-click on ‘Windows                   accompanying files with non-unique names (such as language
     Installer 4.5 for XP SP2 and later (x86)’ and select Edit               transforms), it’s best to create a separate folder for each
     Prerequisite.                                                           package, perhaps similar to:
  2. In the resulting Prerequisites panel, select the Behavior tab
     and edit the ‘If the prerequisite appears to need a reboot’                  Packages
     drop-down list and choose ‘Prompt the user to reboot                             MyChainedMsi1
     the machine even if nothing is detected, and resume on                           MyChainedMsi2
     reboot’, as shown below.
                                                                             It’s helpful to be aware of the Postbuild tab6 on the release
                                                                             settings, which allows you to copy an installer to a specified
                                                                             location as part of the build. Set the ‘Distribute after build’
                                                                             property to Yes to copy the build output to a staging area
                                                                             automatically after each build.

                                                                             You can also use the Support Files view7 in InstallShield to
                                                                             incorporate the chained .msi packages as part of the overall
                                                                             InstallShield build. To do so, you’ll want to use the Disk1
                                                                             item under Advanced Files so you can add a folder for each
                                                                             package. This approach works well for a non-compressed build,
                                                                             such as what you’d create for CD-ROM distribution. Disk1 files
                                                                             are not included in a compressed setup.exe, however, so this
                                                                             approach does not work well when you need a single self-
                                                                             extracting executable.

                                                                             Organization of MSI 4.5 redistributables
Figure 1 Prerequisite settings to control reboot during install of MSI 4.5   Ah, the good old days when there were just two MSI
on Windows Vista                                                             redistributables, one for Windows 9x and one for Windows
                                                                             NT/2000, and either could fit on a floppy diskette. With MSI
On Windows Vista, you can defer the reboot by pre-installing                 4.5, there are now seven different redistributables, given the
MSI 4.5 and then launching your setup. While perhaps not                     different 32- and 64-bit versions of Windows and the different
elegant, this two-step approach can be a valuable alternative                underlying chip sets. If you include all seven versions, then your
for system administrators.                                                   setup will grow by a whopping 43.2 megabytes.

Organization of install media
Chained .msi packages can either be streamed into the parent                 4
                                                                                 “Adding Windows Installer Redistributables to Projects” in the InstallShield Help
.msi package or accessed from a specified location, usually on               5
                                                                                 “chained package only working on the 2nd installation” thread in the InstallShield 2009 Community
the install media. Streaming chained .msi packages is generally              6
                                                                                 “Postbuild Tab for a Release” in the InstallShield Help
                                                                             7
preferable, but you should consider the following:                           8
                                                                                 “Support Files View” in the InstallShield Help
                                                                                 “Fundamental 64Bit Installation Question” thread in the InstallShield 2009 Community
Flexera Software: InstallShield White Paper Series                                                                                                                              3
Using Chained .MSI Packages to Component ize Your Windows Installer Setup




In practice, you wouldn’t include all seven in the same setup,                          Preparing for upgrades
since 32-bit and 64-bit installs are typically separate8. Since                         A chained .msi package works best when it can install cleanly
the MSI 4.5 redistributables are included in InstallShield as                           over an existing, prior version of the same package. In MSI
prerequisites, you can have the prerequisites stored externally                         terms, it should be enabled for major upgrades. This topic is
to setup.exe (as opposed to being included in setup.exe). This                          described nicely in a recent white paper by Flexera Software’s
enables an administrator to remove the MSI redistributable(s)                           Robert Dickau, “Designing an Update-Friendly MSI Installation”9
to reduce the package size if they are already installed on the                         .
target system. To have prerequisites stored externally, go to the
Setup.exe tab in the Release Settings, and set the InstallShield                        Creating a chained .msi package
Prerequisite Location to ‘Copy From Source Media’, as                                   Creating a chained .msi package with InstallShield 2009 is
shown below.                                                                            very easy; simply navigate to the Releases view, right-click on
                                                                                        ‘Chained .msi packages’ in the center panel and select ‘New
                                                                                        Chained Package’. Afterwards you’ll see a series of settings in
                                                                                        the right panel, as shown, with which you to define the chained
                                                                                        .msi package and specify the desired behavior.




Figure 2 Release settings for MSI to be stored externally to setup.exe

Organization of chained packages
Since chained .msi packages work only with .msi files, it’s
important that a chained .msi file not be compressed into a
setup.exe launcher. This can be done in either of two ways, and
both are controlled by two different properties in the Release
Settings:

      1. Suppress creation of the setup.exe launcher                                    Figure 3 Default settings for a new chained .msi package

         In the Setup.exe tab of the Release Settings, set the Setup                    The InstallShield help does a good job of describing the chained
         Launcher property to No. With this setting in effect, the                      .msi settings10, so I won’t repeat that information here. Instead,
         companion Compression property, below, may be set                              I’ll elaborate on the choices (and consequences) you face with
         to either Compressed or Uncompressed, depending on                             each setting.
         whether you want .msi package’s files incorporated into or
         external to the .msi file.                                                     Installation (run-time path)
                                                                                        This setting specifies where the chained .msi package will be
      2. Suppress compression of files into the setup.exe launcher                      located during the install. See the topic earlier in this white
                                                                                        paper, “Organization of install media”, to help determine
         In the Build tab of the Release Settings, set the Compression                  whether the chained .msi packages should be streamed into
         property to Uncompressed. With this setting in effect, the                     the parent .msi package or not. If not, then this value would
         companion Setup Launcher property, above, may be set to                        typically point to the install media, such as
         either “Yes (no MSI engine included)” or No, depending on
         whether you want a setup launcher. If you want the option                        [SOURCEDIR]PackagesMyChainedMsi1MyChainedMsi1.
         of a chained .msi package to be independently installable,                     msi
         then it can be useful to include a setup launcher, particularly
         if the install supports multiple languages.                                    Note that using [SOURCEDIR] requires that the ResolveSource
                                                                                        standard action be included in the Install User Interface and
                                                                                        Execute sequences, and that ResolveSource should have the

9
     “Designing an Update-Friendly MSI Installation” on the Flexera Software web site
10
     “Chained .msi Package Settings” in the InstallShield help

4                                                                                                           Flexera Software: InstallShield White Paper Series
Using Chained .MSI Packages to Component ize Your Windows Installer Setup




condition “Not Installed And Not PATCH” so that the user will          uninstalled when the parent is uninstalled.
not be prompted for the install media during uninstall and
patch operations.                                                      Removal properties
                                                                       This setting allows property values from the parent install to be
Product code                                                           passed to the chained .msi package during uninstall.
This setting specifies the ProductCode property of the .msi
package to be chained, and is typically set by the InstallShield       Release flags
IDE when the Installation (run-time path) setting is specified, if     This setting allows you to control whether the chained .msi
the specified folder and package exist at that time.                   package is included in a particular build. See the topic,
                                                                       “Release Flags” 12 in the InstallShield help to understand how
UI level                                                               release flags can be used to create subsets of a product.
This setting controls the MSI user interface level that is displayed
during the install. If you use any value other than silent (/qn),      Streamed files
you will want to ensure that the chained .msi packages support         This setting specifies additional files and/or folders to be
the same set of languages as the parent package. See the topic,        streamed into the parent .msi package along with the .msi
“Multi-language considerations” later in this article.                 file itself.

In practice, I have found the Full UI (/qf) setting to be confusing    Hints, tips, and gotcha’s (or, things you can’t learn by just
since the user will see an unexpected dialog flow, such as             reading the help information)
multiple InstallWelcome panels. The Basic UI (/qb) setting,            Chained .msi packages cannot have a name longer than nine
which is the default, shows just the progress bar, and is useful to    characters
indicate the install sequencing and progress.                          When you create a chained .msi package, if the name of the
                                                                       package is longer that nine characters then you may receive a
Install conditions                                                     build error: “6151 Cannot save target database.” To bypass this
This setting controls whether the chained .msi package is              problem, shorten the name of the chained .msi package (as it
installed or not. For example, if you wanted to install the            appears in the center panel in the Releases view) to nine or
package only if a particular feature has been selected, then you       fewer characters.
could use the Install Condition:
                                                                       Setups using chained .msi packages cannot themselves be chained
  Not Installed And &FeatureName=3                                     Chained .msi packages can be nested only one level deep.
                                                                       Thus, if a setup that includes chained .msi packages is itself
(See the topic, “Conditional Statement Syntax”11 in the MSI            chained, then the chained .msi packages of that setup will not
help for an explanation of how feature names may be used in            be installed, even though the install will appear to complete
conditions.)                                                           successfully. This means that the design of complex setups must
                                                                       consider where .msi chaining will be used, as using chaining at
Install properties                                                     one level precludes chaining from being used at a higher level.
This setting allows property values to be passed to the chained
.MSI package for install. Here are some examples:                      There are no built-in properties to indicate that a .msi package
                                                                       is chained
  1. To have the chained .msi package be installed in a folder         It is possible that you may want to vary the behavior of a .msi
     within the parent install’s target folder, use something such     package depending on whether it’s running as a top-level install
     as:                                                               or whether it’s chained. For example, there might be error
                                                                       conditions that would be sufficient to fail a smaller, stand-alone
    INSTALLDIR=[INSTALLDIR]MyChainedMsi1                              install but not a larger, chained install. But, there are no built-in
                                                                       properties to determine whether a setup is running as chained
  2. To cause the chained .msi package to NOT appear in the            or not. This can be remedied by passing a public property such
     Add or Remove Programs applet, use:                               as CHAINED=1 on the Install Properties, but this then requires
                                                                       additional understanding between the parent and chained
    ARPSYSTEMCOMPONENT=1                                               packages. That is, the parent will need to know what property to
                                                                       set, and the chained package will need to know what property
Removal conditions                                                     to reference.
This setting controls when the chained .msi package should be
uninstalled. If the package has been associated with a feature in      There is no built-in way to communicate back to the parent install
the parent installation, then the package should be uninstalled if     While Install Properties can be used to pass property values
the feature is uninstalled. This can be specified as                   to a chained .msi package, there is no built-in mechanism for
                                                                       property values to be passed back to the parent. To a certain
  &FeatureName=2                                                       extent this makes sense, as chained .msi packages are, by
                                                                       design, considered to be separate, stand-alone installs. But, to
The default value of REMOVE=”ALL” causes the package to be             communicate back to the parent install, you must resort to some
                                                                       11
                                                                            “Conditional Statement Syntax” in the MSI help
                                                                       12
                                                                            “Release Flags” in the InstallShield help

Flexera Software: InstallShield White Paper Series                                                                                             5
Using Chained .MSI Packages to Component ize Your Windows Installer Setup




external means such as file or registry data. This also means you                                         Chained .msi packages are installed after the parent install
must make provisions to clean up any such file or registry data.                                          If you look at the log file for a setup that includes chained .msi
                                                                                                          packages you’ll notice that the parent package installs first,
There is no way to associate costing with feature selection                                               followed by any chained packages. This isn’t necessarily a
The good news is that MSI automatically includes the size of any                                          problem, of course, but it’s important to understand if you
nested .msi packages as part of the overall size requirements                                             have dependencies on chained packages, such as modifying
for the parent install. However, if you use Install Conditions to                                         configuration data they install.
associate a chained .msi package with a particular feature (by
specifying &FeatureName=3, for example), then there is no                                                 Some custom actions are sequenced differently in a chained
way for the size of that feature to accurately reflect the size of                                        .msi package
the chained .msi package. If you use the ReserveCost table to                                             Chaining effects the order of when some actions are run14.
specify the space required by the chained .msi package, then                                              In particular, immediate custom actions sequenced after
the overall space requirement will be too large by that                                                   InstallFinalize, and deferred commit-execution custom actions
same amount.                                                                                              are affected. In a stand-alone .msi package, all deferred actions
                                                                                                          (including commit) will run at InstallFinalize, followed by the
Admin installs don’t copy external chained .msi packages                                                  remainder of the immediate execute sequence. In chained .msi
Admin installs copy a .msi package to a network location                                                  transaction, the immediate execute sequence will complete,
and expand the included files to match the target folder                                                  and then the commit execution actions will run once the entire
configuration. Some products can run from an admin install                                                transaction completes.
image, and all products, ideally, should install from an admin
install image. But, MSI doesn’t know about files outside of the                                           This can lead to problems in a chained setup if commit-execution
.msi package itself, such as setup.exe and setup.ini, which are                                           custom actions attempt to access files in SUPPORTDIR, as
provided by InstallShield. These files are not copied during                                              SUPPORTDIR is a temporary location and may already be
an admin install. If they are required in order for the product                                           cleaned up.
to install from an admin image, then custom actions must be
developed to copy any such needed files to the admin install                                              Chained .msi package settings may need to be manually updated
target network location.                                                                                  The settings for chained .msi files are static, and the chaining
                                                                                                          operation depends on the Product Code for each package. If a
This problem is further complicated with chained .msi packages                                            chained .msi package is rebuilt so that the Product Code
if they are not streamed into the parent .msi package. In this                                            changes, then the settings for that package must be manually
case, they also become files that are external to the parent                                              updated in the parent to reflect the new Product Code; it doesn’t
.msi package and thus are not copied during an admin install.                                             happen automatically.
Consequently, installs run from this image would fail because
the chained .msi packages would not be found. Here, too,                                                  Chained .msi packages won’t run on older versions of Windows
custom code will need to be developed to not just copy setup.                                             Chained .msi packages require MSI 4.5, and MSI 4.5 only runs
exe, but also copy the whole folder structure of any chained .msi                                         on newer versions of Windows. In particular, MSI 4.5 requires
packages.                                                                                                 Windows XP SP2 or later, Windows 2003 Server SP2 or later,
                                                                                                          Windows Vista, or Windows Server 2008.15
Chained .msi packages can’t use InstallShield prerequisites
InstallShield prerequisites13 are another means of incorporating                                          Chained .msi packages do not automatically run with
third-party packages into your install. (InstallShield prerequisites                                      elevated privileges
are described in greater detail later in this white paper).                                               A parent install launched via setup.exe on Windows Vista will
InstallShield prerequisites, however, require the use of a setup.                                         automatically run with elevated privileges, while the same install
exe launcher, and such launchers are ignored for chained                                                  if launched via msiexec will not.16 Chained .msi packages
.msi packages, as only the .msi package itself is used. One                                               likewise run with default (i.e. non-elevated) privileges, and as
workaround to this limitation is for the parent install (which may                                        such some custom actions may fail. You should be familiar with
use a setup launcher) to include any prerequisites otherwise                                              guidelines for using Windows Installer with UAC17 (User Account
needed by the .msi packages it chains in.                                                                 Control) and author your setup accordingly. Among other
                                                                                                          things, you will likely want to schedule any custom actions as
                                                                                                          “deferred execution in system context”.

    13
       “Adding InstallShield Prerequisites, Merge Modules, and Objects to Basic MSI, InstallScript MSI,   Chained .msi packages must be signed to avoid unwanted
    14
        and Web Projects” in the InstallShield help                                                       UAC prompts
       “Chained MSIs” thread in the InstallShield 2009 community
    15
       “Windows Installer 4.5 Versions” in the MSI Team blog                                              Only chained packages that have been digitally signed18 can
                                                                                                          elevate their execute sequences on Vista and later without
    16
       “Reasons why your setup may fail on Windows Vista” on InstallSite.org
    17
       “Using Windows Installer with UAC” in the MSI help
    18
       “Digital Signature Panel” in the InstallShield Help                                                triggering a UAC prompt. Signing must be done at build time
    19
       “Error message when you use Windows Installer (MSI) 4.5 to install multiple MSI packages in        so that InstallShield can populate the MsiDigitalCertificate and
       Windows Server 2008, Windows Vista, Windows Server 2003 or Windows XP: “API call
       rejected - No actions in Context”” on the Microsoft web site
                                                                                                          MsiPackageCertificate tables.
    20
       “Chained .msi Package - Small Upgrade not working” in the InstallShield 2009 community
                                                                                                          The latest version of MSI 4.5 should be used


6                                                                                                                            Flexera Software: InstallShield White Paper Series
Using Chained .MSI Packages to Component ize Your Windows Installer Setup




Microsoft has issued an update for MSI 4.5 to correct a known          • InstallShield prerequisites do not require any particular
problem.17 One way to ensure you are using the latest version            version of MSI, and thus avoid any related reboot
of MSI 4.5 is to go to the Redistributables view in InstallShield        requirements. Chained .msi packages require MSI 4.5,
2009 and scroll to the bottom to see the 7 different MSI 4.5             which requires a reboot that may or may not be deferred,
redistributables. If the text in the Location column reads ‘Needs        depending on the version of Windows installed on the
to be downloaded’ for any of the MSI 4.5 redistributables                target system.
you’re using, then simply de-select and re-select those items          • Chained .msi packages are handled by MSI as a single
and InstallShield will download the latest version.                      transaction, while prerequisites are not. This means it is left
                                                                         as an exercise for the install developer to roll back cleanly
Small and minor upgrades do not work by default                          after an install failure of a prerequisite.
Small and minor upgrades, in which an installed product is             • Chained .msi packages, predictably, only work with .msi
upgraded in place (as opposed to a major upgrade, where                  packages, whereas InstallShield prerequisites can work with
an installed product is uninstalled and replaced with a newer            any executable, even a .bat file.
version), do not work by default with chained .msi packages.20         • Prerequisites have more packaging options than do chained
This can be remedied by either updating the chained .msi                 .msi packages. InstallShield prerequisites may even be
package independently, or by setting the ecoReinstallInstalled           downloaded from the web if needed and not included in
(16) flag in the Options column of the ISChainPackage table in           the distributed install image at all. In contrast, chained .msi
the parent install. This flag is not documented outside the above-       packages must be directly accessible during install.
referenced InstallShield community post.                               • Prerequisites are presumed to be just that – system
                                                                         prerequisites – and as such persist after the including
Setups using chained .msi packages may fail on Windows XP                application has been uninstalled. Consequently there are
and Windows Server 2003 when accessed via Remote                         no built-in uninstall mechanisms for prerequisites. Chained
Desktop Connection                                                       .msi packages, on the other hand, uninstall by default when
This problem is currently under investigation by the InstallShield       the parent is uninstalled. This behavior is easily changed by
service team and appears to be related to how the process tree           changing the associated Uninstall Conditions.
is managed on those particular versions of Windows.                    • InstallShield prerequisites allow you to specify dependencies
                                                                         on other prerequisites, while chained .msi packages must
Multi-language considerations                                            each be individually specified, and any dependencies must
If the parent install supports multiple languages, then there are        be understood by the setup author.
extra steps to take so that any chained .msi packages install with     • Prerequisites and chained .msi packages both have
the same language settings as the parent.                                difficulties if immediate reboots are needed. With either,
                                                                         any reboots should be deferred to the end of the install.
  1. All chained .msi packages should support at least the same        • Chained .msi packages by default all write to the same .msi
     set of languages as the parent.                                     log file, which is useful for debugging. Prerequisites can
  2. Each chained .msi package and its accompanying                      only write to the same .msi file if all the prerequisites are
     language transforms should all be in the same location.             themselves .msi packages, and then only if the appropriate
  3. The Language selected for the parent install (saved in the          command line parameters are passed.
     ProductLanguage property) should be used to apply the
     language transform for the chained .msi package. This is        Summary
     done by specifying the following Input Property:                In this white paper you have learned about using chained .msi
                                                                     packages and the associated considerations that must be made.
    TRANSFORMS=[ProductLanguage].mst                                 This information should help you make informed, productive
                                                                     choices as you design your own installation programs using
InstallShield prerequisites                                          InstallShield 2009. You can evaluate a copy of InstallShield
InstallShield prerequisites are another option, in addition to       2009 for free at www.flexerasoftware.com/installshield/eval.
chained .msi packages, for including third party packages in a
setup. However, there are important differences to understand.       About the Author
To make an informed decision as to which will better suit your       David Cole is a Senior Software Engineer and Install Architect at
needs you should consider the following:                             IBM and is responsible for the software installation strategy for
                                                                     the IBM Systems Director family of products. He can be reached
  • InstallShield prerequisites require the use of a setup.exe       at dlcole@nc.rr.com.
    launcher by the parent install. Chained .msi packages,
    strictly speaking, do not require a setup.exe launcher and
    thus may be easier to distribute. (In practice, since chained
    .msi packages require MSI 4.5, and MSI 4.5 is included
    in InstallShield as a prerequisite, then setups using chained
    .msi packages will typically include a setup.exe launcher to
    simplify the process of ensuring that the necessary version
    of MSI is installed.)



Flexera Software: InstallShield White Paper Series                                                                                          7
Flexera Software LLC                      Schaumburg                                United Kingdom (Europe,                   Japan (Asia,                              For more office locations visit:
1000 East Woodfield Road,                 (Global Headquarters):                    Middle East Headquarters):                Pacific Headquarters):                    www.flexerasoftware.com
Suite 400                                 +1 800-809-5659                           +44 870-871-1111                          +81 3-4360-8291
Schaumburg, IL 60173 USA                                                            +44 870-873-6300

Copyright © 2011 Flexera Software LLC. All other brand and product names mentioned herein may be the trademarks and registered trademarks of their respective owners.
                                                                                                                                                                             IA_WP_Chained_MSI_Oct11

Mais conteúdo relacionado

Mais procurados

Eql tr symantec-backup-exec-10d-tr1024
Eql tr symantec-backup-exec-10d-tr1024Eql tr symantec-backup-exec-10d-tr1024
Eql tr symantec-backup-exec-10d-tr1024casanoteva
 
Using VMware Infrastructure for Backup and Restore
Using VMware Infrastructure for Backup and RestoreUsing VMware Infrastructure for Backup and Restore
Using VMware Infrastructure for Backup and Restorewebhostingguy
 
Vb.net session 14
Vb.net session 14Vb.net session 14
Vb.net session 14Niit Care
 
VDI Performance of PRIMERGY S7 Server Generation
VDI Performance of PRIMERGY S7 Server GenerationVDI Performance of PRIMERGY S7 Server Generation
VDI Performance of PRIMERGY S7 Server GenerationKingfin Enterprises Limited
 
Cluster aware updating v1.0
Cluster aware updating v1.0Cluster aware updating v1.0
Cluster aware updating v1.0hypervnu
 
Net framework session03
Net framework session03Net framework session03
Net framework session03Niit Care
 
system state backup restore
system state backup restoresystem state backup restore
system state backup restoressuser1eca7d
 
Managing enterprise with PowerShell remoting
Managing enterprise with PowerShell remotingManaging enterprise with PowerShell remoting
Managing enterprise with PowerShell remotingConcentrated Technology
 
Ms Sql server installation 2008R2
Ms Sql server installation 2008R2Ms Sql server installation 2008R2
Ms Sql server installation 2008R2Harshad Patel
 
Plesk 8.1 for Windows
Plesk 8.1 for WindowsPlesk 8.1 for Windows
Plesk 8.1 for Windowswebhostingguy
 
Performance tuningtoolkitintroduction
Performance tuningtoolkitintroductionPerformance tuningtoolkitintroduction
Performance tuningtoolkitintroductionRohit Kelapure
 
DB2 10 Security Enhancements
DB2 10 Security EnhancementsDB2 10 Security Enhancements
DB2 10 Security EnhancementsLaura Hood
 
Java Standard Edition 5 Performance
Java Standard Edition 5 PerformanceJava Standard Edition 5 Performance
Java Standard Edition 5 Performancewhite paper
 

Mais procurados (19)

Windows 7 Deployment
Windows 7 DeploymentWindows 7 Deployment
Windows 7 Deployment
 
Eql tr symantec-backup-exec-10d-tr1024
Eql tr symantec-backup-exec-10d-tr1024Eql tr symantec-backup-exec-10d-tr1024
Eql tr symantec-backup-exec-10d-tr1024
 
SP1_Battlecard
SP1_BattlecardSP1_Battlecard
SP1_Battlecard
 
Using VMware Infrastructure for Backup and Restore
Using VMware Infrastructure for Backup and RestoreUsing VMware Infrastructure for Backup and Restore
Using VMware Infrastructure for Backup and Restore
 
Vb.net session 14
Vb.net session 14Vb.net session 14
Vb.net session 14
 
VDI Performance of PRIMERGY S7 Server Generation
VDI Performance of PRIMERGY S7 Server GenerationVDI Performance of PRIMERGY S7 Server Generation
VDI Performance of PRIMERGY S7 Server Generation
 
Packaging Event 2008
Packaging Event 2008Packaging Event 2008
Packaging Event 2008
 
Cluster aware updating v1.0
Cluster aware updating v1.0Cluster aware updating v1.0
Cluster aware updating v1.0
 
Net framework session03
Net framework session03Net framework session03
Net framework session03
 
system state backup restore
system state backup restoresystem state backup restore
system state backup restore
 
Managing enterprise with PowerShell remoting
Managing enterprise with PowerShell remotingManaging enterprise with PowerShell remoting
Managing enterprise with PowerShell remoting
 
Ms Sql server installation 2008R2
Ms Sql server installation 2008R2Ms Sql server installation 2008R2
Ms Sql server installation 2008R2
 
Plesk 8.1 for Windows
Plesk 8.1 for WindowsPlesk 8.1 for Windows
Plesk 8.1 for Windows
 
DB2 LUW Auditing
DB2 LUW AuditingDB2 LUW Auditing
DB2 LUW Auditing
 
Performance tuningtoolkitintroduction
Performance tuningtoolkitintroductionPerformance tuningtoolkitintroduction
Performance tuningtoolkitintroduction
 
DB2 10 Security Enhancements
DB2 10 Security EnhancementsDB2 10 Security Enhancements
DB2 10 Security Enhancements
 
2) security
2) security2) security
2) security
 
Java Standard Edition 5 Performance
Java Standard Edition 5 PerformanceJava Standard Edition 5 Performance
Java Standard Edition 5 Performance
 
Vmware inter
Vmware interVmware inter
Vmware inter
 

Destaque

Install shield
Install shieldInstall shield
Install shieldSoubow Su
 
Cooking UX with Cultural Leftovers
Cooking UX with Cultural LeftoversCooking UX with Cultural Leftovers
Cooking UX with Cultural LeftoversErik Dahl
 
Earn More Work Less, Teach ESL Online
Earn More Work Less, Teach ESL OnlineEarn More Work Less, Teach ESL Online
Earn More Work Less, Teach ESL OnlineLouisa Chan 陈毅信
 
Magazine Analysis.
Magazine Analysis.Magazine Analysis.
Magazine Analysis.BecWalton1
 
2011 WBECS Speaker Final Lineup
2011 WBECS Speaker Final Lineup 2011 WBECS Speaker Final Lineup
2011 WBECS Speaker Final Lineup Ben Croft
 
Next Level Crm
Next Level CrmNext Level Crm
Next Level CrmNext Level
 
Guia de ordenamiento para la firma del libro de acta 2013-I
Guia de ordenamiento para la firma del libro de acta 2013-IGuia de ordenamiento para la firma del libro de acta 2013-I
Guia de ordenamiento para la firma del libro de acta 2013-IDavid Leon Sicilia
 
Pradip's childbooks and apps illustration 2015
Pradip's childbooks and apps illustration   2015Pradip's childbooks and apps illustration   2015
Pradip's childbooks and apps illustration 2015Freelancer
 
Sharepoint 2010 e Infopath 2010
Sharepoint 2010 e Infopath 2010Sharepoint 2010 e Infopath 2010
Sharepoint 2010 e Infopath 2010Eva Ordoñez Perez
 
Build V. Buy Infographic
Build V. Buy InfographicBuild V. Buy Infographic
Build V. Buy InfographicFlexera
 
Administracion Sharepoint 2010
Administracion Sharepoint 2010Administracion Sharepoint 2010
Administracion Sharepoint 2010Eva Ordoñez Perez
 
InstallAnywhere 2014- FR
InstallAnywhere 2014- FRInstallAnywhere 2014- FR
InstallAnywhere 2014- FRFlexera
 
FlexNet Operations Datasheet
FlexNet Operations DatasheetFlexNet Operations Datasheet
FlexNet Operations DatasheetFlexera
 
MÉTRICAS PARA ASEGURAR LA CALIDAD DEL SOFTWARE
MÉTRICAS PARA ASEGURAR LA CALIDAD DEL SOFTWAREMÉTRICAS PARA ASEGURAR LA CALIDAD DEL SOFTWARE
MÉTRICAS PARA ASEGURAR LA CALIDAD DEL SOFTWAREDavid Leon Sicilia
 

Destaque (19)

Install shield
Install shieldInstall shield
Install shield
 
Cooking UX with Cultural Leftovers
Cooking UX with Cultural LeftoversCooking UX with Cultural Leftovers
Cooking UX with Cultural Leftovers
 
Fever the musical! 1
Fever the musical! 1Fever the musical! 1
Fever the musical! 1
 
Earn More Work Less, Teach ESL Online
Earn More Work Less, Teach ESL OnlineEarn More Work Less, Teach ESL Online
Earn More Work Less, Teach ESL Online
 
Magazine Analysis.
Magazine Analysis.Magazine Analysis.
Magazine Analysis.
 
2011 WBECS Speaker Final Lineup
2011 WBECS Speaker Final Lineup 2011 WBECS Speaker Final Lineup
2011 WBECS Speaker Final Lineup
 
Next Level Crm
Next Level CrmNext Level Crm
Next Level Crm
 
Guia de ordenamiento para la firma del libro de acta 2013-I
Guia de ordenamiento para la firma del libro de acta 2013-IGuia de ordenamiento para la firma del libro de acta 2013-I
Guia de ordenamiento para la firma del libro de acta 2013-I
 
melnic
melnicmelnic
melnic
 
The Dark Knight
The Dark KnightThe Dark Knight
The Dark Knight
 
Pradip's childbooks and apps illustration 2015
Pradip's childbooks and apps illustration   2015Pradip's childbooks and apps illustration   2015
Pradip's childbooks and apps illustration 2015
 
HAITI
HAITIHAITI
HAITI
 
Sharepoint 2010 e Infopath 2010
Sharepoint 2010 e Infopath 2010Sharepoint 2010 e Infopath 2010
Sharepoint 2010 e Infopath 2010
 
Build V. Buy Infographic
Build V. Buy InfographicBuild V. Buy Infographic
Build V. Buy Infographic
 
Administracion Sharepoint 2010
Administracion Sharepoint 2010Administracion Sharepoint 2010
Administracion Sharepoint 2010
 
InstallAnywhere 2014- FR
InstallAnywhere 2014- FRInstallAnywhere 2014- FR
InstallAnywhere 2014- FR
 
Sharepoint 2010 IT
Sharepoint 2010 ITSharepoint 2010 IT
Sharepoint 2010 IT
 
FlexNet Operations Datasheet
FlexNet Operations DatasheetFlexNet Operations Datasheet
FlexNet Operations Datasheet
 
MÉTRICAS PARA ASEGURAR LA CALIDAD DEL SOFTWARE
MÉTRICAS PARA ASEGURAR LA CALIDAD DEL SOFTWAREMÉTRICAS PARA ASEGURAR LA CALIDAD DEL SOFTWARE
MÉTRICAS PARA ASEGURAR LA CALIDAD DEL SOFTWARE
 

Semelhante a Using Chained .MSI Packages to Componentize Your Windows Installer Setup

Ad msi-installation via Active Directory
Ad msi-installation via Active DirectoryAd msi-installation via Active Directory
Ad msi-installation via Active DirectoryKalai Mani
 
Windows installerbasics
Windows installerbasicsWindows installerbasics
Windows installerbasicsseethalux
 
TDF Professional Conf 2010 - Rapid Windows 7 Deployments
TDF Professional Conf 2010 - Rapid Windows 7 DeploymentsTDF Professional Conf 2010 - Rapid Windows 7 Deployments
TDF Professional Conf 2010 - Rapid Windows 7 Deploymentsjimboks
 
Troubleshooting methedology v2.pdf
Troubleshooting methedology v2.pdfTroubleshooting methedology v2.pdf
Troubleshooting methedology v2.pdfTejasM47
 
Free tools for rapidly deploying software
Free tools for rapidly deploying softwareFree tools for rapidly deploying software
Free tools for rapidly deploying softwareConcentrated Technology
 
Virtual box installation
Virtual box installationVirtual box installation
Virtual box installationNiranjan Pandey
 
Creating InstallAnywhere Installations for Hybrid (32-Bit & 64-Bit) Windows A...
Creating InstallAnywhere Installations for Hybrid (32-Bit & 64-Bit) Windows A...Creating InstallAnywhere Installations for Hybrid (32-Bit & 64-Bit) Windows A...
Creating InstallAnywhere Installations for Hybrid (32-Bit & 64-Bit) Windows A...Flexera
 
Guia instalacion SQL Server Denali
Guia instalacion SQL Server DenaliGuia instalacion SQL Server Denali
Guia instalacion SQL Server DenaliEduardo Castro
 
PHP mysql Installing my sql 5.1
PHP mysql  Installing my sql 5.1PHP mysql  Installing my sql 5.1
PHP mysql Installing my sql 5.1Mudasir Syed
 
OSGi made simple - Fuse Application Bundles
OSGi made simple - Fuse Application BundlesOSGi made simple - Fuse Application Bundles
OSGi made simple - Fuse Application BundlesRob Davies
 
TechMentor Fall, 2011 - Packaging Software for Automated Deployment with Wind...
TechMentor Fall, 2011 - Packaging Software for Automated Deployment with Wind...TechMentor Fall, 2011 - Packaging Software for Automated Deployment with Wind...
TechMentor Fall, 2011 - Packaging Software for Automated Deployment with Wind...Concentrated Technology
 
Lavigne bsdmag sept12
Lavigne bsdmag sept12Lavigne bsdmag sept12
Lavigne bsdmag sept12Dru Lavigne
 

Semelhante a Using Chained .MSI Packages to Componentize Your Windows Installer Setup (20)

Ad msi-installation via Active Directory
Ad msi-installation via Active DirectoryAd msi-installation via Active Directory
Ad msi-installation via Active Directory
 
Rapidly deploying software
Rapidly deploying softwareRapidly deploying software
Rapidly deploying software
 
Windows installerbasics
Windows installerbasicsWindows installerbasics
Windows installerbasics
 
Windows installerbasics
Windows installerbasicsWindows installerbasics
Windows installerbasics
 
Prepping software for w7 deployment
Prepping software for w7 deploymentPrepping software for w7 deployment
Prepping software for w7 deployment
 
TDF Professional Conf 2010 - Rapid Windows 7 Deployments
TDF Professional Conf 2010 - Rapid Windows 7 DeploymentsTDF Professional Conf 2010 - Rapid Windows 7 Deployments
TDF Professional Conf 2010 - Rapid Windows 7 Deployments
 
Troubleshooting methedology v2.pdf
Troubleshooting methedology v2.pdfTroubleshooting methedology v2.pdf
Troubleshooting methedology v2.pdf
 
O2007pia readme
O2007pia readmeO2007pia readme
O2007pia readme
 
Backbase CXP Manager Setup
Backbase CXP Manager SetupBackbase CXP Manager Setup
Backbase CXP Manager Setup
 
MSI Packaging Free eBook
MSI Packaging Free eBookMSI Packaging Free eBook
MSI Packaging Free eBook
 
MDT Step public
MDT Step publicMDT Step public
MDT Step public
 
O2007pia readme
O2007pia readmeO2007pia readme
O2007pia readme
 
Free tools for rapidly deploying software
Free tools for rapidly deploying softwareFree tools for rapidly deploying software
Free tools for rapidly deploying software
 
Virtual box installation
Virtual box installationVirtual box installation
Virtual box installation
 
Creating InstallAnywhere Installations for Hybrid (32-Bit & 64-Bit) Windows A...
Creating InstallAnywhere Installations for Hybrid (32-Bit & 64-Bit) Windows A...Creating InstallAnywhere Installations for Hybrid (32-Bit & 64-Bit) Windows A...
Creating InstallAnywhere Installations for Hybrid (32-Bit & 64-Bit) Windows A...
 
Guia instalacion SQL Server Denali
Guia instalacion SQL Server DenaliGuia instalacion SQL Server Denali
Guia instalacion SQL Server Denali
 
PHP mysql Installing my sql 5.1
PHP mysql  Installing my sql 5.1PHP mysql  Installing my sql 5.1
PHP mysql Installing my sql 5.1
 
OSGi made simple - Fuse Application Bundles
OSGi made simple - Fuse Application BundlesOSGi made simple - Fuse Application Bundles
OSGi made simple - Fuse Application Bundles
 
TechMentor Fall, 2011 - Packaging Software for Automated Deployment with Wind...
TechMentor Fall, 2011 - Packaging Software for Automated Deployment with Wind...TechMentor Fall, 2011 - Packaging Software for Automated Deployment with Wind...
TechMentor Fall, 2011 - Packaging Software for Automated Deployment with Wind...
 
Lavigne bsdmag sept12
Lavigne bsdmag sept12Lavigne bsdmag sept12
Lavigne bsdmag sept12
 

Mais de Flexera

Get a Complete View of Your Business Services and IT Estate in ServiceNow wit...
Get a Complete View of Your Business Services and IT Estate in ServiceNow wit...Get a Complete View of Your Business Services and IT Estate in ServiceNow wit...
Get a Complete View of Your Business Services and IT Estate in ServiceNow wit...Flexera
 
Make Smarter Cloud Decisions at Every Step of Your Journey
Make Smarter Cloud Decisions at Every Step of Your JourneyMake Smarter Cloud Decisions at Every Step of Your Journey
Make Smarter Cloud Decisions at Every Step of Your JourneyFlexera
 
10 Tips to Optimize, Automate, and Govern your Hybrid IT Environment
10 Tips to Optimize, Automate, and Govern your Hybrid IT Environment10 Tips to Optimize, Automate, and Govern your Hybrid IT Environment
10 Tips to Optimize, Automate, and Govern your Hybrid IT EnvironmentFlexera
 
Using Automated Policies for SaaS Governance and Compliance
Using Automated Policies for SaaS Governance and ComplianceUsing Automated Policies for SaaS Governance and Compliance
Using Automated Policies for SaaS Governance and ComplianceFlexera
 
The Practical Approach for End-to-End SaaS Management
The Practical Approach for End-to-End SaaS ManagementThe Practical Approach for End-to-End SaaS Management
The Practical Approach for End-to-End SaaS ManagementFlexera
 
7 Things You Need to Know for Your Cloud-First Strategy
7 Things You Need to Know for Your Cloud-First Strategy7 Things You Need to Know for Your Cloud-First Strategy
7 Things You Need to Know for Your Cloud-First StrategyFlexera
 
The Role of In-House & External Counsel in Managing Open Source Software
The Role of In-House & External Counsel in Managing Open Source SoftwareThe Role of In-House & External Counsel in Managing Open Source Software
The Role of In-House & External Counsel in Managing Open Source SoftwareFlexera
 
Addressing Open Source Risks During M&A: A Legal View
Addressing Open Source Risks During M&A: A Legal ViewAddressing Open Source Risks During M&A: A Legal View
Addressing Open Source Risks During M&A: A Legal ViewFlexera
 
Having Trouble Managing All Your Cloud Services? We Know!
Having Trouble Managing All Your Cloud Services? We Know!Having Trouble Managing All Your Cloud Services? We Know!
Having Trouble Managing All Your Cloud Services? We Know!Flexera
 
Webinar: Maximizing the ROI of IT by Simplifying Technology Complexity
Webinar: Maximizing the ROI of IT by Simplifying Technology ComplexityWebinar: Maximizing the ROI of IT by Simplifying Technology Complexity
Webinar: Maximizing the ROI of IT by Simplifying Technology ComplexityFlexera
 
Webinar: What's New In FlexNet Manager Suite 2018 R1
Webinar: What's New In FlexNet Manager Suite 2018 R1Webinar: What's New In FlexNet Manager Suite 2018 R1
Webinar: What's New In FlexNet Manager Suite 2018 R1Flexera
 
Open Source Security - It can be done easily.
Open Source Security - It can be done easily.Open Source Security - It can be done easily.
Open Source Security - It can be done easily.Flexera
 
Software Distribution, Customer Experience and the IoT: Get Ready for Fast, S...
Software Distribution, Customer Experience and the IoT: Get Ready for Fast, S...Software Distribution, Customer Experience and the IoT: Get Ready for Fast, S...
Software Distribution, Customer Experience and the IoT: Get Ready for Fast, S...Flexera
 
Windows 10 webinar: What’s new for IT pros Windows 10 v 1709
Windows 10 webinar: What’s new for IT pros Windows 10 v 1709Windows 10 webinar: What’s new for IT pros Windows 10 v 1709
Windows 10 webinar: What’s new for IT pros Windows 10 v 1709Flexera
 
Don’t Let Hackers Breach Your Data: Shutting Your Risk Window on Apache Struts2
Don’t Let Hackers Breach Your Data:  Shutting Your Risk Window on Apache Struts2Don’t Let Hackers Breach Your Data:  Shutting Your Risk Window on Apache Struts2
Don’t Let Hackers Breach Your Data: Shutting Your Risk Window on Apache Struts2Flexera
 
BDNA joins Flexera
BDNA joins FlexeraBDNA joins Flexera
BDNA joins FlexeraFlexera
 
Flexera Event - The Game Has Changed - Are You Ready?
Flexera Event - The Game Has Changed - Are You Ready?Flexera Event - The Game Has Changed - Are You Ready?
Flexera Event - The Game Has Changed - Are You Ready?Flexera
 
Webinar: Take Proactive Control of Your SAP Licensing, Indirect Usage and Ven...
Webinar: Take Proactive Control of Your SAP Licensing, Indirect Usage and Ven...Webinar: Take Proactive Control of Your SAP Licensing, Indirect Usage and Ven...
Webinar: Take Proactive Control of Your SAP Licensing, Indirect Usage and Ven...Flexera
 
Keeping a Lid on Costs for Cloud Infrastructure and SaaS Applications
Keeping a Lid on Costs for Cloud Infrastructure and SaaS ApplicationsKeeping a Lid on Costs for Cloud Infrastructure and SaaS Applications
Keeping a Lid on Costs for Cloud Infrastructure and SaaS ApplicationsFlexera
 
Do You Manage Software? Understanding Your Role in Cybersecurity Defense
Do You Manage Software? Understanding Your Role in Cybersecurity DefenseDo You Manage Software? Understanding Your Role in Cybersecurity Defense
Do You Manage Software? Understanding Your Role in Cybersecurity DefenseFlexera
 

Mais de Flexera (20)

Get a Complete View of Your Business Services and IT Estate in ServiceNow wit...
Get a Complete View of Your Business Services and IT Estate in ServiceNow wit...Get a Complete View of Your Business Services and IT Estate in ServiceNow wit...
Get a Complete View of Your Business Services and IT Estate in ServiceNow wit...
 
Make Smarter Cloud Decisions at Every Step of Your Journey
Make Smarter Cloud Decisions at Every Step of Your JourneyMake Smarter Cloud Decisions at Every Step of Your Journey
Make Smarter Cloud Decisions at Every Step of Your Journey
 
10 Tips to Optimize, Automate, and Govern your Hybrid IT Environment
10 Tips to Optimize, Automate, and Govern your Hybrid IT Environment10 Tips to Optimize, Automate, and Govern your Hybrid IT Environment
10 Tips to Optimize, Automate, and Govern your Hybrid IT Environment
 
Using Automated Policies for SaaS Governance and Compliance
Using Automated Policies for SaaS Governance and ComplianceUsing Automated Policies for SaaS Governance and Compliance
Using Automated Policies for SaaS Governance and Compliance
 
The Practical Approach for End-to-End SaaS Management
The Practical Approach for End-to-End SaaS ManagementThe Practical Approach for End-to-End SaaS Management
The Practical Approach for End-to-End SaaS Management
 
7 Things You Need to Know for Your Cloud-First Strategy
7 Things You Need to Know for Your Cloud-First Strategy7 Things You Need to Know for Your Cloud-First Strategy
7 Things You Need to Know for Your Cloud-First Strategy
 
The Role of In-House & External Counsel in Managing Open Source Software
The Role of In-House & External Counsel in Managing Open Source SoftwareThe Role of In-House & External Counsel in Managing Open Source Software
The Role of In-House & External Counsel in Managing Open Source Software
 
Addressing Open Source Risks During M&A: A Legal View
Addressing Open Source Risks During M&A: A Legal ViewAddressing Open Source Risks During M&A: A Legal View
Addressing Open Source Risks During M&A: A Legal View
 
Having Trouble Managing All Your Cloud Services? We Know!
Having Trouble Managing All Your Cloud Services? We Know!Having Trouble Managing All Your Cloud Services? We Know!
Having Trouble Managing All Your Cloud Services? We Know!
 
Webinar: Maximizing the ROI of IT by Simplifying Technology Complexity
Webinar: Maximizing the ROI of IT by Simplifying Technology ComplexityWebinar: Maximizing the ROI of IT by Simplifying Technology Complexity
Webinar: Maximizing the ROI of IT by Simplifying Technology Complexity
 
Webinar: What's New In FlexNet Manager Suite 2018 R1
Webinar: What's New In FlexNet Manager Suite 2018 R1Webinar: What's New In FlexNet Manager Suite 2018 R1
Webinar: What's New In FlexNet Manager Suite 2018 R1
 
Open Source Security - It can be done easily.
Open Source Security - It can be done easily.Open Source Security - It can be done easily.
Open Source Security - It can be done easily.
 
Software Distribution, Customer Experience and the IoT: Get Ready for Fast, S...
Software Distribution, Customer Experience and the IoT: Get Ready for Fast, S...Software Distribution, Customer Experience and the IoT: Get Ready for Fast, S...
Software Distribution, Customer Experience and the IoT: Get Ready for Fast, S...
 
Windows 10 webinar: What’s new for IT pros Windows 10 v 1709
Windows 10 webinar: What’s new for IT pros Windows 10 v 1709Windows 10 webinar: What’s new for IT pros Windows 10 v 1709
Windows 10 webinar: What’s new for IT pros Windows 10 v 1709
 
Don’t Let Hackers Breach Your Data: Shutting Your Risk Window on Apache Struts2
Don’t Let Hackers Breach Your Data:  Shutting Your Risk Window on Apache Struts2Don’t Let Hackers Breach Your Data:  Shutting Your Risk Window on Apache Struts2
Don’t Let Hackers Breach Your Data: Shutting Your Risk Window on Apache Struts2
 
BDNA joins Flexera
BDNA joins FlexeraBDNA joins Flexera
BDNA joins Flexera
 
Flexera Event - The Game Has Changed - Are You Ready?
Flexera Event - The Game Has Changed - Are You Ready?Flexera Event - The Game Has Changed - Are You Ready?
Flexera Event - The Game Has Changed - Are You Ready?
 
Webinar: Take Proactive Control of Your SAP Licensing, Indirect Usage and Ven...
Webinar: Take Proactive Control of Your SAP Licensing, Indirect Usage and Ven...Webinar: Take Proactive Control of Your SAP Licensing, Indirect Usage and Ven...
Webinar: Take Proactive Control of Your SAP Licensing, Indirect Usage and Ven...
 
Keeping a Lid on Costs for Cloud Infrastructure and SaaS Applications
Keeping a Lid on Costs for Cloud Infrastructure and SaaS ApplicationsKeeping a Lid on Costs for Cloud Infrastructure and SaaS Applications
Keeping a Lid on Costs for Cloud Infrastructure and SaaS Applications
 
Do You Manage Software? Understanding Your Role in Cybersecurity Defense
Do You Manage Software? Understanding Your Role in Cybersecurity DefenseDo You Manage Software? Understanding Your Role in Cybersecurity Defense
Do You Manage Software? Understanding Your Role in Cybersecurity Defense
 

Último

Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 

Último (20)

Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 

Using Chained .MSI Packages to Componentize Your Windows Installer Setup

  • 1. Using Chained .MSI Packages W H I T E PA P E R to Componentize Your Windows Installer Setup By David Cole, Senior Software Engineer, IBM
  • 2. Using Chained .MSI Packages to Componentize Your Windows Installer Setup Notice Flexera Software and InstallShield are trademarks or registered IBM is a trademark of International Business Machines trademarks of Flexera Software LLC in the United States of Corporation in the US, other countries, or both. America and/or other countries. All other brand and product names mentioned herein are the Windows is a registered trademark of Microsoft Corporation in trademarks and registered trademarks of their respective owners. the United States and other countries. Introduction Install developers often need to include other products within make system changes at a time. This locking mechanism helps their own setup. Flexera Software’s InstallShield 2009, coupled ensure system integrity, but also limits where and how nested with Microsoft’s Windows Installer (MSI) 4.5, offers new options installations (sometimes called concurrent installations) can for chaining installs together while avoiding the problems be run. Microsoft acknowledged the need for one setup to be associated with the existing options of merge modules and launched from within another and developed special custom nested installs. action types for nested installations2. Microsoft has since deprecated these types of custom actions and discourages their This white paper describes using chained .msi packages in use3, citing that, “…they are difficult for customers to service.” InstallShield 2009 and MSI 4.5 to componentize a setup. You will learn how to include other .msi packages within your own A new hope: chained .msi packages so that the result may be installed with the appearance of being Chained .msi packages is a new feature of MSI 4.5 and is a single product. The white paper also compares chained .msi supported by InstallShield 2009. This function allows individual packages with InstallShield prerequisites, which provide another .msi packages to be integrated into a containing, parent .msi method for including third-party setups. setup so that the combined install is managed as a single transaction. Thus, if the install of one .msi package fails, then Footnotes are added with links to the InstallShield and MSI help the entire install is rolled back. When the parent product is for additional details. uninstalled, the chained .msi packages are also uninstalled (although there are other options available). The problem with merge modules Microsoft originally developed merge modules as the preferred Perhaps most importantly, each constituent .msi package is method within MSI for developing components to be shared installed under its own ProductCode. This means that each among multiple products. A key problem with merge modules, product can be serviced independently and thus avoids one of however, is that the contents of a merge module are installed the major problems with merge modules. under the ProductCode1 of the product that includes the merge module. Consequently, merge modules cannot be serviced MSI 4.5 uses the chained .msi package’s own ProductCode to independently; any service update for the merge module must be determine whether that package has already been installed packaged as a service update to the containing product. or not, and thus skips the install step for packages that have already been installed. Similarly, if a chained .msi package has For example, suppose a version of Acme WidgetWorks included been upgraded so that it now has a different ProductCode, or if Microsoft’s Windows Scripting Host 1.0 merge module, and that the package has already been uninstalled, then the uninstall step Microsoft later released a service update for that merge module. for that package Acme WidgetWorks would then have to release a service update is skipped in the parent uninstall. Thus, chained .msi packages of its own that includes the Microsoft update. This can quickly behave as you would generally desire without having to write become a service nightmare, especially if there are urgent additional code. security issues involved. Considerations for chained .msi packages The problem with nested installs Before you include chained .msi packages in your installation MSI has always had the restriction that only one MSI install can program, you should consider the following: 1 “ProductCode Property” in the MSI help 2 “Concurrent Installations” in the MSI help 3 “Windows Installer Best Practices” in the MSI help 2 Flexera Software: InstallShield White Paper Series
  • 3. Using Chained .MSI Packages to Component ize Your Windows Installer Setup Including MSI 4.5 • The overall size of a .msi file is limited to 2GB, so the Chained .msi packages require the use of MSI 4.5, which cumulative size of the parent setup must not exceed this limit. is included with InstallShield 2009. (The GA version of MSI • Streamed packages are not visible to the end user, and thus 4.5 became available with InstallShield 2009 service pack cannot be accessed and installed independently. 1.) Unlike earlier versions of MSI, MSI 4.5 is added as an • Streamed packages must be streamed out into temporary InstallShield Prerequisite4. We’ll discuss prerequisites in greater storage during install, and thus affects both performance and detail later in this white paper. temporary disk space requirements. • A repair operation for a chained .msi package may prompt MSI 4.5 is only required for the parent .msi package. Child for the install source location, and that can be more easily packages are not required to use any particular version of MSI. located if the package is on the install media (i.e., not streamed). Installing MSI 4.5 does require a reboot, although the • If some chained .msi packages are optional – for example, symptoms vary based on the version of Windows being used. they’re associated with features – then not streaming the On Windows XP and Windows Server 2003, the reboot is chained .msi packages allows the end user to remove any automatically deferred to the end of the setup. That is, on these packages that are unneeded, and thus reduce the size of the versions of Windows a setup that installs MSI 4.5 will run to overall install package. Administrators appreciate being able completion and the user will be prompted for a reboot when to reduce an install image to only that which is needed for the setup completes. On Windows Vista, a reboot is required their environment. immediately after MSI 4.5 is installed. Based on discussions in the InstallShield 2009 Community5, the cleanest approach on If you choose to locate the chained .msi packages on the install Vista is to force the reboot by: media then you should consider a directory structure for storing the .msi packages. In the event that the packages could have 1. In the Redistributables view, right-click on ‘Windows accompanying files with non-unique names (such as language Installer 4.5 for XP SP2 and later (x86)’ and select Edit transforms), it’s best to create a separate folder for each Prerequisite. package, perhaps similar to: 2. In the resulting Prerequisites panel, select the Behavior tab and edit the ‘If the prerequisite appears to need a reboot’ Packages drop-down list and choose ‘Prompt the user to reboot MyChainedMsi1 the machine even if nothing is detected, and resume on MyChainedMsi2 reboot’, as shown below. It’s helpful to be aware of the Postbuild tab6 on the release settings, which allows you to copy an installer to a specified location as part of the build. Set the ‘Distribute after build’ property to Yes to copy the build output to a staging area automatically after each build. You can also use the Support Files view7 in InstallShield to incorporate the chained .msi packages as part of the overall InstallShield build. To do so, you’ll want to use the Disk1 item under Advanced Files so you can add a folder for each package. This approach works well for a non-compressed build, such as what you’d create for CD-ROM distribution. Disk1 files are not included in a compressed setup.exe, however, so this approach does not work well when you need a single self- extracting executable. Organization of MSI 4.5 redistributables Figure 1 Prerequisite settings to control reboot during install of MSI 4.5 Ah, the good old days when there were just two MSI on Windows Vista redistributables, one for Windows 9x and one for Windows NT/2000, and either could fit on a floppy diskette. With MSI On Windows Vista, you can defer the reboot by pre-installing 4.5, there are now seven different redistributables, given the MSI 4.5 and then launching your setup. While perhaps not different 32- and 64-bit versions of Windows and the different elegant, this two-step approach can be a valuable alternative underlying chip sets. If you include all seven versions, then your for system administrators. setup will grow by a whopping 43.2 megabytes. Organization of install media Chained .msi packages can either be streamed into the parent 4 “Adding Windows Installer Redistributables to Projects” in the InstallShield Help .msi package or accessed from a specified location, usually on 5 “chained package only working on the 2nd installation” thread in the InstallShield 2009 Community the install media. Streaming chained .msi packages is generally 6 “Postbuild Tab for a Release” in the InstallShield Help 7 preferable, but you should consider the following: 8 “Support Files View” in the InstallShield Help “Fundamental 64Bit Installation Question” thread in the InstallShield 2009 Community Flexera Software: InstallShield White Paper Series 3
  • 4. Using Chained .MSI Packages to Component ize Your Windows Installer Setup In practice, you wouldn’t include all seven in the same setup, Preparing for upgrades since 32-bit and 64-bit installs are typically separate8. Since A chained .msi package works best when it can install cleanly the MSI 4.5 redistributables are included in InstallShield as over an existing, prior version of the same package. In MSI prerequisites, you can have the prerequisites stored externally terms, it should be enabled for major upgrades. This topic is to setup.exe (as opposed to being included in setup.exe). This described nicely in a recent white paper by Flexera Software’s enables an administrator to remove the MSI redistributable(s) Robert Dickau, “Designing an Update-Friendly MSI Installation”9 to reduce the package size if they are already installed on the . target system. To have prerequisites stored externally, go to the Setup.exe tab in the Release Settings, and set the InstallShield Creating a chained .msi package Prerequisite Location to ‘Copy From Source Media’, as Creating a chained .msi package with InstallShield 2009 is shown below. very easy; simply navigate to the Releases view, right-click on ‘Chained .msi packages’ in the center panel and select ‘New Chained Package’. Afterwards you’ll see a series of settings in the right panel, as shown, with which you to define the chained .msi package and specify the desired behavior. Figure 2 Release settings for MSI to be stored externally to setup.exe Organization of chained packages Since chained .msi packages work only with .msi files, it’s important that a chained .msi file not be compressed into a setup.exe launcher. This can be done in either of two ways, and both are controlled by two different properties in the Release Settings: 1. Suppress creation of the setup.exe launcher Figure 3 Default settings for a new chained .msi package In the Setup.exe tab of the Release Settings, set the Setup The InstallShield help does a good job of describing the chained Launcher property to No. With this setting in effect, the .msi settings10, so I won’t repeat that information here. Instead, companion Compression property, below, may be set I’ll elaborate on the choices (and consequences) you face with to either Compressed or Uncompressed, depending on each setting. whether you want .msi package’s files incorporated into or external to the .msi file. Installation (run-time path) This setting specifies where the chained .msi package will be 2. Suppress compression of files into the setup.exe launcher located during the install. See the topic earlier in this white paper, “Organization of install media”, to help determine In the Build tab of the Release Settings, set the Compression whether the chained .msi packages should be streamed into property to Uncompressed. With this setting in effect, the the parent .msi package or not. If not, then this value would companion Setup Launcher property, above, may be set to typically point to the install media, such as either “Yes (no MSI engine included)” or No, depending on whether you want a setup launcher. If you want the option [SOURCEDIR]PackagesMyChainedMsi1MyChainedMsi1. of a chained .msi package to be independently installable, msi then it can be useful to include a setup launcher, particularly if the install supports multiple languages. Note that using [SOURCEDIR] requires that the ResolveSource standard action be included in the Install User Interface and Execute sequences, and that ResolveSource should have the 9 “Designing an Update-Friendly MSI Installation” on the Flexera Software web site 10 “Chained .msi Package Settings” in the InstallShield help 4 Flexera Software: InstallShield White Paper Series
  • 5. Using Chained .MSI Packages to Component ize Your Windows Installer Setup condition “Not Installed And Not PATCH” so that the user will uninstalled when the parent is uninstalled. not be prompted for the install media during uninstall and patch operations. Removal properties This setting allows property values from the parent install to be Product code passed to the chained .msi package during uninstall. This setting specifies the ProductCode property of the .msi package to be chained, and is typically set by the InstallShield Release flags IDE when the Installation (run-time path) setting is specified, if This setting allows you to control whether the chained .msi the specified folder and package exist at that time. package is included in a particular build. See the topic, “Release Flags” 12 in the InstallShield help to understand how UI level release flags can be used to create subsets of a product. This setting controls the MSI user interface level that is displayed during the install. If you use any value other than silent (/qn), Streamed files you will want to ensure that the chained .msi packages support This setting specifies additional files and/or folders to be the same set of languages as the parent package. See the topic, streamed into the parent .msi package along with the .msi “Multi-language considerations” later in this article. file itself. In practice, I have found the Full UI (/qf) setting to be confusing Hints, tips, and gotcha’s (or, things you can’t learn by just since the user will see an unexpected dialog flow, such as reading the help information) multiple InstallWelcome panels. The Basic UI (/qb) setting, Chained .msi packages cannot have a name longer than nine which is the default, shows just the progress bar, and is useful to characters indicate the install sequencing and progress. When you create a chained .msi package, if the name of the package is longer that nine characters then you may receive a Install conditions build error: “6151 Cannot save target database.” To bypass this This setting controls whether the chained .msi package is problem, shorten the name of the chained .msi package (as it installed or not. For example, if you wanted to install the appears in the center panel in the Releases view) to nine or package only if a particular feature has been selected, then you fewer characters. could use the Install Condition: Setups using chained .msi packages cannot themselves be chained Not Installed And &FeatureName=3 Chained .msi packages can be nested only one level deep. Thus, if a setup that includes chained .msi packages is itself (See the topic, “Conditional Statement Syntax”11 in the MSI chained, then the chained .msi packages of that setup will not help for an explanation of how feature names may be used in be installed, even though the install will appear to complete conditions.) successfully. This means that the design of complex setups must consider where .msi chaining will be used, as using chaining at Install properties one level precludes chaining from being used at a higher level. This setting allows property values to be passed to the chained .MSI package for install. Here are some examples: There are no built-in properties to indicate that a .msi package is chained 1. To have the chained .msi package be installed in a folder It is possible that you may want to vary the behavior of a .msi within the parent install’s target folder, use something such package depending on whether it’s running as a top-level install as: or whether it’s chained. For example, there might be error conditions that would be sufficient to fail a smaller, stand-alone INSTALLDIR=[INSTALLDIR]MyChainedMsi1 install but not a larger, chained install. But, there are no built-in properties to determine whether a setup is running as chained 2. To cause the chained .msi package to NOT appear in the or not. This can be remedied by passing a public property such Add or Remove Programs applet, use: as CHAINED=1 on the Install Properties, but this then requires additional understanding between the parent and chained ARPSYSTEMCOMPONENT=1 packages. That is, the parent will need to know what property to set, and the chained package will need to know what property Removal conditions to reference. This setting controls when the chained .msi package should be uninstalled. If the package has been associated with a feature in There is no built-in way to communicate back to the parent install the parent installation, then the package should be uninstalled if While Install Properties can be used to pass property values the feature is uninstalled. This can be specified as to a chained .msi package, there is no built-in mechanism for property values to be passed back to the parent. To a certain &FeatureName=2 extent this makes sense, as chained .msi packages are, by design, considered to be separate, stand-alone installs. But, to The default value of REMOVE=”ALL” causes the package to be communicate back to the parent install, you must resort to some 11 “Conditional Statement Syntax” in the MSI help 12 “Release Flags” in the InstallShield help Flexera Software: InstallShield White Paper Series 5
  • 6. Using Chained .MSI Packages to Component ize Your Windows Installer Setup external means such as file or registry data. This also means you Chained .msi packages are installed after the parent install must make provisions to clean up any such file or registry data. If you look at the log file for a setup that includes chained .msi packages you’ll notice that the parent package installs first, There is no way to associate costing with feature selection followed by any chained packages. This isn’t necessarily a The good news is that MSI automatically includes the size of any problem, of course, but it’s important to understand if you nested .msi packages as part of the overall size requirements have dependencies on chained packages, such as modifying for the parent install. However, if you use Install Conditions to configuration data they install. associate a chained .msi package with a particular feature (by specifying &FeatureName=3, for example), then there is no Some custom actions are sequenced differently in a chained way for the size of that feature to accurately reflect the size of .msi package the chained .msi package. If you use the ReserveCost table to Chaining effects the order of when some actions are run14. specify the space required by the chained .msi package, then In particular, immediate custom actions sequenced after the overall space requirement will be too large by that InstallFinalize, and deferred commit-execution custom actions same amount. are affected. In a stand-alone .msi package, all deferred actions (including commit) will run at InstallFinalize, followed by the Admin installs don’t copy external chained .msi packages remainder of the immediate execute sequence. In chained .msi Admin installs copy a .msi package to a network location transaction, the immediate execute sequence will complete, and expand the included files to match the target folder and then the commit execution actions will run once the entire configuration. Some products can run from an admin install transaction completes. image, and all products, ideally, should install from an admin install image. But, MSI doesn’t know about files outside of the This can lead to problems in a chained setup if commit-execution .msi package itself, such as setup.exe and setup.ini, which are custom actions attempt to access files in SUPPORTDIR, as provided by InstallShield. These files are not copied during SUPPORTDIR is a temporary location and may already be an admin install. If they are required in order for the product cleaned up. to install from an admin image, then custom actions must be developed to copy any such needed files to the admin install Chained .msi package settings may need to be manually updated target network location. The settings for chained .msi files are static, and the chaining operation depends on the Product Code for each package. If a This problem is further complicated with chained .msi packages chained .msi package is rebuilt so that the Product Code if they are not streamed into the parent .msi package. In this changes, then the settings for that package must be manually case, they also become files that are external to the parent updated in the parent to reflect the new Product Code; it doesn’t .msi package and thus are not copied during an admin install. happen automatically. Consequently, installs run from this image would fail because the chained .msi packages would not be found. Here, too, Chained .msi packages won’t run on older versions of Windows custom code will need to be developed to not just copy setup. Chained .msi packages require MSI 4.5, and MSI 4.5 only runs exe, but also copy the whole folder structure of any chained .msi on newer versions of Windows. In particular, MSI 4.5 requires packages. Windows XP SP2 or later, Windows 2003 Server SP2 or later, Windows Vista, or Windows Server 2008.15 Chained .msi packages can’t use InstallShield prerequisites InstallShield prerequisites13 are another means of incorporating Chained .msi packages do not automatically run with third-party packages into your install. (InstallShield prerequisites elevated privileges are described in greater detail later in this white paper). A parent install launched via setup.exe on Windows Vista will InstallShield prerequisites, however, require the use of a setup. automatically run with elevated privileges, while the same install exe launcher, and such launchers are ignored for chained if launched via msiexec will not.16 Chained .msi packages .msi packages, as only the .msi package itself is used. One likewise run with default (i.e. non-elevated) privileges, and as workaround to this limitation is for the parent install (which may such some custom actions may fail. You should be familiar with use a setup launcher) to include any prerequisites otherwise guidelines for using Windows Installer with UAC17 (User Account needed by the .msi packages it chains in. Control) and author your setup accordingly. Among other things, you will likely want to schedule any custom actions as “deferred execution in system context”. 13 “Adding InstallShield Prerequisites, Merge Modules, and Objects to Basic MSI, InstallScript MSI, Chained .msi packages must be signed to avoid unwanted 14 and Web Projects” in the InstallShield help UAC prompts “Chained MSIs” thread in the InstallShield 2009 community 15 “Windows Installer 4.5 Versions” in the MSI Team blog Only chained packages that have been digitally signed18 can elevate their execute sequences on Vista and later without 16 “Reasons why your setup may fail on Windows Vista” on InstallSite.org 17 “Using Windows Installer with UAC” in the MSI help 18 “Digital Signature Panel” in the InstallShield Help triggering a UAC prompt. Signing must be done at build time 19 “Error message when you use Windows Installer (MSI) 4.5 to install multiple MSI packages in so that InstallShield can populate the MsiDigitalCertificate and Windows Server 2008, Windows Vista, Windows Server 2003 or Windows XP: “API call rejected - No actions in Context”” on the Microsoft web site MsiPackageCertificate tables. 20 “Chained .msi Package - Small Upgrade not working” in the InstallShield 2009 community The latest version of MSI 4.5 should be used 6 Flexera Software: InstallShield White Paper Series
  • 7. Using Chained .MSI Packages to Component ize Your Windows Installer Setup Microsoft has issued an update for MSI 4.5 to correct a known • InstallShield prerequisites do not require any particular problem.17 One way to ensure you are using the latest version version of MSI, and thus avoid any related reboot of MSI 4.5 is to go to the Redistributables view in InstallShield requirements. Chained .msi packages require MSI 4.5, 2009 and scroll to the bottom to see the 7 different MSI 4.5 which requires a reboot that may or may not be deferred, redistributables. If the text in the Location column reads ‘Needs depending on the version of Windows installed on the to be downloaded’ for any of the MSI 4.5 redistributables target system. you’re using, then simply de-select and re-select those items • Chained .msi packages are handled by MSI as a single and InstallShield will download the latest version. transaction, while prerequisites are not. This means it is left as an exercise for the install developer to roll back cleanly Small and minor upgrades do not work by default after an install failure of a prerequisite. Small and minor upgrades, in which an installed product is • Chained .msi packages, predictably, only work with .msi upgraded in place (as opposed to a major upgrade, where packages, whereas InstallShield prerequisites can work with an installed product is uninstalled and replaced with a newer any executable, even a .bat file. version), do not work by default with chained .msi packages.20 • Prerequisites have more packaging options than do chained This can be remedied by either updating the chained .msi .msi packages. InstallShield prerequisites may even be package independently, or by setting the ecoReinstallInstalled downloaded from the web if needed and not included in (16) flag in the Options column of the ISChainPackage table in the distributed install image at all. In contrast, chained .msi the parent install. This flag is not documented outside the above- packages must be directly accessible during install. referenced InstallShield community post. • Prerequisites are presumed to be just that – system prerequisites – and as such persist after the including Setups using chained .msi packages may fail on Windows XP application has been uninstalled. Consequently there are and Windows Server 2003 when accessed via Remote no built-in uninstall mechanisms for prerequisites. Chained Desktop Connection .msi packages, on the other hand, uninstall by default when This problem is currently under investigation by the InstallShield the parent is uninstalled. This behavior is easily changed by service team and appears to be related to how the process tree changing the associated Uninstall Conditions. is managed on those particular versions of Windows. • InstallShield prerequisites allow you to specify dependencies on other prerequisites, while chained .msi packages must Multi-language considerations each be individually specified, and any dependencies must If the parent install supports multiple languages, then there are be understood by the setup author. extra steps to take so that any chained .msi packages install with • Prerequisites and chained .msi packages both have the same language settings as the parent. difficulties if immediate reboots are needed. With either, any reboots should be deferred to the end of the install. 1. All chained .msi packages should support at least the same • Chained .msi packages by default all write to the same .msi set of languages as the parent. log file, which is useful for debugging. Prerequisites can 2. Each chained .msi package and its accompanying only write to the same .msi file if all the prerequisites are language transforms should all be in the same location. themselves .msi packages, and then only if the appropriate 3. The Language selected for the parent install (saved in the command line parameters are passed. ProductLanguage property) should be used to apply the language transform for the chained .msi package. This is Summary done by specifying the following Input Property: In this white paper you have learned about using chained .msi packages and the associated considerations that must be made. TRANSFORMS=[ProductLanguage].mst This information should help you make informed, productive choices as you design your own installation programs using InstallShield prerequisites InstallShield 2009. You can evaluate a copy of InstallShield InstallShield prerequisites are another option, in addition to 2009 for free at www.flexerasoftware.com/installshield/eval. chained .msi packages, for including third party packages in a setup. However, there are important differences to understand. About the Author To make an informed decision as to which will better suit your David Cole is a Senior Software Engineer and Install Architect at needs you should consider the following: IBM and is responsible for the software installation strategy for the IBM Systems Director family of products. He can be reached • InstallShield prerequisites require the use of a setup.exe at dlcole@nc.rr.com. launcher by the parent install. Chained .msi packages, strictly speaking, do not require a setup.exe launcher and thus may be easier to distribute. (In practice, since chained .msi packages require MSI 4.5, and MSI 4.5 is included in InstallShield as a prerequisite, then setups using chained .msi packages will typically include a setup.exe launcher to simplify the process of ensuring that the necessary version of MSI is installed.) Flexera Software: InstallShield White Paper Series 7
  • 8. Flexera Software LLC Schaumburg United Kingdom (Europe, Japan (Asia, For more office locations visit: 1000 East Woodfield Road, (Global Headquarters): Middle East Headquarters): Pacific Headquarters): www.flexerasoftware.com Suite 400 +1 800-809-5659 +44 870-871-1111 +81 3-4360-8291 Schaumburg, IL 60173 USA +44 870-873-6300 Copyright © 2011 Flexera Software LLC. All other brand and product names mentioned herein may be the trademarks and registered trademarks of their respective owners. IA_WP_Chained_MSI_Oct11