Jump to content


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.
Photo

Not all new files installed on an upgrade?


2 replies to this topic

prouteus

prouteus
  • Members
  • 2 posts

Posted 23 March 2006 - 22:02

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.

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! smile.gif

- Brian

*******************
* Brian Hill *
* MCSE 2000/CCNA *
*******************

prouteus

prouteus
  • Members
  • 2 posts

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

Edited by prouteus, 23 March 2006 - 22:38.


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

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.