ZCM agent update fails when agent directory is beneath a NTFS Mount Point

  • 7004370
  • 03-Sep-2009
  • 27-Apr-2012

Environment

Novell ZENworks 10 Configuration Management System Update

Situation

The ZCM 10.x agent upgrade fails to upgrade .dll files to the new version when a Mount Point is being used for the %ZENWORKS_HOME% folder.  This failure to update certain files causes various agent problems such as:
  • The agent will not connect to the ZCM server.
  • Agent appears to refresh indefinitely.
  •  Bundles\Policies not showing up under the Z-icon correctly.
  • Novell ZENworks Agent Service randomly fails.

Resolution

A Mount Point for the %ZENWORKS_HOME% folder is not supported, because of Microsoft API limitations
Copying the data locally and resetting the folder permissions fixes the issue for the next upgrade.
http://support.microsoft.com/kb/948601 - Link to MS KB

Additional Information

%ZENworks_HOME%\logs\system‑update\<guid>\system-update.log will not show any errors. 
The MSI specific log(in this case novell-zenworks-primary-agent-10.2.1.msi.log) shows -1603 error.  These errors mean that certain files that needed to be replaced during the upgrade were in use (_LOCKED).  The files in this state are scheduled for replacement on the next reboot by Msiexec.exe using the MOVEFILE_DELAY_UNTIL_REBOOT API.  Msiexec calls the session manager (Smss.exe) to process the PendingFileRenameOperations value.  This value is in the registry at HKEY_LOCAL_MACHINE\SYSTEM_CurrentControlSet\Control\Session Manager\PendingFileRenameOperations and will contain the list of files that are scheduled to be replaced. 


Msiexec uses the standard MOVEFILEEX Windows API which calls MOVEFILE_DELAY_UNTIL_REBOOT.  This API requires a  dwFlags to be set and this value cannot be set if Mount Points are being used. 
http://msdn.microsoft.com/en-us/library/aa365240%28VS.85%29.aspx - API documentation
http://support.microsoft.com/kb/948601 - MS KB Link

Note: This problem will not occur on a new install, only an upgrade where a file might already be in use.