Thursday 28 September 2017

Enterprise Vault Outlook Plugin - Location is not valid. Choose a different installation location.

I was part of a project to upgrade Enterprise Vault system - my task was to ensure the Enterprise Vault Outlook plugin is properly deployed to Outlook clients. However, during my testing to install Enterprise Vault Outlook Plugin ver 12, I faced an issue as below :



Location is not valid. Choose a different installation location. 


No logs, just a warning. 


Thererfore, I performed some troubleshoting, which leads to the resoluton.


Issue : 
Unable to install Enterprise Vault Outlook Plugin version 12 - error : Location is not valid. Choose a different installation location. 



Troubleshooting

  1.  Normal EV Outlook plugin installation won’t produce any log. Therefore, for troubleshooting purpose (which then be used during automation), the installer executed with MSIEXEC command :

    msiexec /i "C:\temp\EVOutlookClient\Veritas Enterprise Vault Outlook Add-in (x86).msi" /qn /norestart /l* C:\temp\EV12Installation.log

  2.  Based on the log, these error (marked in yellow) captured


    Action ended 12:44:38: Set_TARGETDIR. Return value 1.Action 12:44:38: DiscoverUserProfileFolders.
    Action start 12:44:38: DiscoverUserProfileFolders.DiscoverUserProfileFolders:  Initialized.DiscoverUserProfileFolders:  GetRegKeyChildren : BEGINDiscoverUserProfileFolders:  Reading Software\Microsoft\Windows NT\CurrentVersion\ProfileList\ for childrenDiscoverUserProfileFolders:  GetRegKeyChildren : ENDDiscoverUserProfileFolders:  ReadRegistry : BEGINDiscoverUserProfileFolders:  Reading Software\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-18 for value ProfileImagePathDiscoverUserProfileFolders:  ReadRegistry : ENDDiscoverUserProfileFolders:  Found profile with SID S-1-5-18 and path %systemroot%\system32\config\systemprofileDiscoverUserProfileFolders:  ReadRegistry : BEGINDiscoverUserProfileFolders:  Reading Software\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-19 for value ProfileImagePathDiscoverUserProfileFolders:  ReadRegistry : ENDDiscoverUserProfileFolders:  Found profile with SID S-1-5-19 and path C:\Windows\ServiceProfiles\LocalServiceDiscoverUserProfileFolders:  ReadRegistry : BEGINDiscoverUserProfileFolders:  Reading Software\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-20 for value ProfileImagePathDiscoverUserProfileFolders:  ReadRegistry : ENDDiscoverUserProfileFolders:  Found profile with SID S-1-5-20 and path C:\Windows\ServiceProfiles\NetworkServiceDiscoverUserProfileFolders:  ReadRegistry : BEGINDiscoverUserProfileFolders:  Reading Software\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-2058597364-130651613-2805778835-2401 for value ProfileImagePathDiscoverUserProfileFolders:  ReadRegistry : ENDDiscoverUserProfileFolders:  Found profile with SID S-1-5-21-2058597364-130651613-2805778835-2401 and path C:\Users\.zHISclientDiscoverUserProfileFolders:  ReadRegistry : BEGINDiscoverUserProfileFolders:  Reading Software\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-2058597364-130651613-2805778835-26805 for value ProfileImagePathDiscoverUserProfileFolders:  Error 0x2: RegQueryValueEx failed to read ProfileImagePath with error 2DiscoverUserProfileFolders:  ReadRegistry : ENDDiscoverUserProfileFolders:  Found profile with SID S-1-5-21-2058597364-130651613-2805778835-26805 and path
    DiscoverUserProfileFolders:  ReadRegistry : BEGINDiscoverUserProfileFolders:  Reading Software\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-2058597364-130651613-2805778835-26814 for value ProfileImagePathDiscoverUserProfileFolders:  Error 0x2: RegQueryValueEx failed to read ProfileImagePath with error 2DiscoverUserProfileFolders:  ReadRegistry : END

  3.  Check on Registry Editor (REGEDIT) under HKLM\ Software\Microsoft\Windows NT\CurrentVersion\ProfileList, there are some registry keys which do not point to any profiles. It is most likely the profiles have been improperly deleted before this.

    Example of Registry Key Which Ties to User Profile : 



    Registry Key Which Not Ties to Any User Profile


 
Resolution :
  1.  Either, look for the keys one by one and delete them, or 
  2.  Run below script
On Error Resume Next
Const HKEY_LOCAL_MACHINE = &H80000002
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objRegistry=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
strProfileListKeyPath = "Software\Microsoft\Windows NT\CurrentVersion\ProfileList"
objRegistry.EnumKey HKEY_LOCAL_MACHINE, strProfileListKeyPath, arrProfileList
For intCurrentSID = 0 To UBound(arrProfileList)
objRegistry.GetStringValue HKEY_LOCAL_MACHINE,strProfileListKeyPath & "\" & arrProfileList(intCurrentSID),"ProfileImagePath",strProfileImagePath
If Not (objFSO.FolderExists (strProfileImagePath)) Then
DeleteRegEntry  HKEY_LOCAL_MACHINE, strProfileListKeyPath & "\" & arrProfileList(intCurrentSID)
End If
Next

Function DeleteRegEntry(sHive, sEnumPath)
' Attempt to delete key.  If it fails, start the subkey
' enumration process.
lRC = objRegistry.DeleteKey(sHive, sEnumPath)
' The deletion failed, start deleting subkeys.
If (lRC <> 0) Then
' Subkey Enumerator
   On Error Resume Next
   lRC = objRegistry.EnumKey(HKEY_LOCAL_MACHINE, sEnumPath, sNames)
   For Each sKeyName In sNames
      If Err.Number <> 0 Then Exit For
      lRC = DeleteRegEntry(sHive, sEnumPath & "\" & sKeyName)
   Next
   On Error Goto 0
' At this point we should have looped through all subkeys, trying
' to delete the registry key again.
   lRC = objRegistry.DeleteKey(sHive, sEnumPath)
End If
End Function

 






Share: