This is recommended for COM executables and OCXes (I don't fully understand why but probably due to COM Registry requirements) but what about other types of files?
In particular, if component contains multiple files how does one handle adding and removing files from the component when it comes to small updates and minor upgrades?
For example, if component is transitive and has a condition, and if it contains just one file, handling file removal with new patches is as easy as changing the condition truth value.
But what if component contains several files? It seems that it is then impossible to handle the removal of individual files inside that component because transitivity and condition are defined per component.
Therefore, if one wants a control over each individual installed file, regarding possible file removal in future releases, it seems that each file should be a separate component and each component should contain just one file.
> This is recommended for COM executables and OCXes (I don't fully > understand why but probably due to COM Registry requirements) but what > about other types of files?
> In particular, if component contains multiple files how does one > handle adding and removing files from the component when it comes to > small updates and minor upgrades?
> For example, if component is transitive and has a condition, and if it > contains just one file, handling file removal with new patches is as > easy as changing the condition truth value.
> But what if component contains several files? It seems that it is then > impossible to handle the removal of individual files inside that > component because transitivity and condition are defined per > component.
> Therefore, if one wants a control over each individual installed file, > regarding possible file removal in future releases, it seems that each > file should be a separate component and each component should contain > just one file.
You got it right. MSI defines component as the smallest part of an installation. If you have two files in a component, they are always stuck together. To remove only a part of a component, you must remove the whole component and re-install a new component with the remaining files.
> This is recommended for COM executables and OCXes (I don't fully > understand why but probably due to COM Registry requirements) but what > about other types of files?
> In particular, if component contains multiple files how does one > handle adding and removing files from the component when it comes to > small updates and minor upgrades?
> For example, if component is transitive and has a condition, and if it > contains just one file, handling file removal with new patches is as > easy as changing the condition truth value.
> But what if component contains several files? It seems that it is then > impossible to handle the removal of individual files inside that > component because transitivity and condition are defined per > component.
> Therefore, if one wants a control over each individual installed file, > regarding possible file removal in future releases, it seems that each > file should be a separate component and each component should contain > just one file.
That would be burdensome because you're talking about unversioned files. Why create a component for each one? Unnecessary...besides that file versioning rules would not work on non-executable files because they're not versioned, which removes any advantage to having each file in its own component.
On Wed, 28 May 2008 17:33:20 -0700 (PDT), Owen Gilmore <aogilm...@gmail.com> wrote: > Why create a component for each one? Unnecessary...besides >that file versioning rules would not work on non-executable files >because they're not versioned, which removes any advantage to having >each file in its own component.
>Owen
Windows Installer is not without "features", I think that any file (versioned or not) that can be held in use by your application (whether you stop it or not during install/uninstall) should be in its own component so Windows Installer can recover (or hide the problem if you like) by advertising.