Hello All ~
This might have already been covered somewhere, but I'm needing some assistance with a major upgrade problem. To provide some background, we've created a MSI package (WI 2.0) to install a series of files, write some registry keys, install a system service, and then reboot the workstation. The MSI itself is constructed in the following manner, which may or may not be relevant.
This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Not all new files installed on an upgrade?
Started by
prouteus
, Mar 23 2006 22:02
2 replies to this topic
Posted 23 March 2006 - 22:02
CODE |
*Feature 1 - Windows NT Component 1: FILE Component 2: FILE / REGISTRY KEYS / SYSTEM SERVICE Component 3: FILE / REGISTRY KEYS Component 4: FILE Component 5: FILE Component 6: FILE *Feature 2 - Windows 9x Component 1: FILE Component 2: FILE / REGISTRY KEYS Component 3: INI FILE CREATION Component 4: FILE Component 5: FILE Component 6: FILE Component 7: FILE * Each feature has a condition defined that changes the install level, based upon what version of Windows the MSI is being executed on. |
On a new installation (no previous version), the MSI works just fine, installing all of the necessary components for the specific version of Windows. However, on an upgrade there seems to be an issue after the old version is removed, and the new version is installed (Major Upgrade). We've placed "RemoveExistingProducts" between the "InstallValidate" and "InstallInitialize" actions in the "InstallExecuteSequence" table to ensure that the old product is first completely removed prior to installing the updated components. I realize that this isn't the most efficient way to perform an upgrade, but we must ensure the installation is done this way for our product. We are not using a UI for the package, since it is mostly deployed using Group Policy Objects.
Here's the issue --
When the MSI is executed, it correctly locates the previous version and removes it, along with all of the old installed components. Next, the updated components are installed on the workstation, however, not all of the components are installed. For example, in Feature 1 above, only Components 3, 4, 5, 6 are installed on an upgrade. Components 1 and 2 seem to be completely ignored, resulting in a "blown" installation because the System service is removed, but not re-created. If after performing the upgrade, I reboot the workstation, and then tell the MSI to "repair", the missing components (and system service) are installed correctly.
Can anyone tell me why this might be occurring? I've checked through the File Table to make sure that nothing is different about the files listed. The only change to the files from the old version to the new version would be the size and file/date time stamps. We are not using internal versioning on the files themselves.
This package was first created using WinINSTALL LE, and then later edited using ORCA to implement the UPGRADE table.
Any help would be greatly appreciated!
- Brian
*******************
* Brian Hill *
* MCSE 2000/CCNA *
*******************
Posted 23 March 2006 - 22:37
Just a follow-up:
To make things really interesting, we checked the Windows 9x feature (Feature 2) to see if it too causes missing components on an upgrade. Much to our surprsise, all of the old components were removed and replaced by the new components successfully.
This issue appears only to be occuring with "Feature 1" of the MSI, which applies only to NT-based workstations. The major difference between these two features is that "Feature 1" creates a system service.
- Brian
To make things really interesting, we checked the Windows 9x feature (Feature 2) to see if it too causes missing components on an upgrade. Much to our surprsise, all of the old components were removed and replaced by the new components successfully.
This issue appears only to be occuring with "Feature 1" of the MSI, which applies only to NT-based workstations. The major difference between these two features is that "Feature 1" creates a system service.
- Brian
Edited by prouteus, 23 March 2006 - 22:38.
Posted 24 March 2006 - 19:16
Generate a verbose log to see what's going on.
I suspect that the files that are missing are files that wouldn't need to be overwritten (if you were not removing the old version), e.g. because the file version hasn't changed, the file doesn't have a version but has been modified, or the component is set to never overwrite. In this case what you see is a Windows Installer problem that has been reported before (but I think it hasen't been officially accepted as a bug by Microsoft, so you may want to contact their support). What happens is that CostFinalize detects that the component should not be installed (using Windows Instalelr's file versioning rules) and therefore un-selects the component. Later RemoveExistingProducts deletes the file.
I suspect that the files that are missing are files that wouldn't need to be overwritten (if you were not removing the old version), e.g. because the file version hasn't changed, the file doesn't have a version but has been modified, or the component is set to never overwrite. In this case what you see is a Windows Installer problem that has been reported before (but I think it hasen't been officially accepted as a bug by Microsoft, so you may want to contact their support). What happens is that CostFinalize detects that the component should not be installed (using Windows Instalelr's file versioning rules) and therefore un-selects the component. Later RemoveExistingProducts deletes the file.
Stefan Krüger
InstallSite.org twitter facebook