/build/static/layout/Breadcrumb_cap_w.png

Software Deployment Question


iSeries Patch Upgrade

03/06/2015 1615 views

I am trying to upgrade iSeries Patch 49800 to 55797.  (IBM i Access for Windows 7.1)  (64bit computer)

I found that using the Registry Key Exists for the detection rule in Intune won't work due to the fact the uninstall guid would be identical for both patches.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{31E11496-1F84-4DCC-B07A-369B40B8B4A7}

Has anyone been successful with using the 'MSI Product Code Exists' or the 'File Exists' options in Intune to get a 'unique detection rule' that will allow the update to successfully run?

Thank you.



0 Comments   [ + ] Show comments

Comments


All Answers

0

Why not just use 'Registry key exists' and use the entry from the patch list, HKEY_CLASSES_ROOT\Installer\Patches\[Compressed GUID]\SourceList\Media? The format for the so-called "compression" is pretty bizarre (and pointless, in my view!) but hey ho...

Here's some QAD code:

'strCode  = "{24B76264-FE15-4A02-B4FE-E527003E6FB9}"
strMungedCode  = "2A2AE8CF3A56E6636A78B53649A308F0"

'Call MungeGUID(strCode, strMungedCode)
'WScript.Echo strCode & " munged becomes " & strMungedCode

Call UnMungeGUID(strMungedCode, strCode)
WScript.Echo strMungedCode & " unmunged becomes " & strCode


   Sub MungeGUID(ByVal strGUID, ByRef strMungedGUID)
    '// This routine munges the GUID into the munged format
    '// used by various registry entries for Windows Installer
    '// For example: {D650B8A9-C547-42D3-A7DF-0FAD0AC6E9ED}
    '//    becomes
    '//   9A8B056D745C3D247AFDF0DAA06C9EDE

    Dim arrSortOrder
    Dim strNewCode
    Dim intIndex

    arrSortOrder     = Array(9,8,7,6,5,4,3,2,14,13,12,11,19,18,17,16,22,21,24,23,27,26,29,28,31,30,33,32,35,34,37,36)

    '// Generate the munged code
    For intIndex = 0 To UBound(arrSortOrder)
     strNewCode    = strNewCode & Mid(strGUID,arrSortOrder(intIndex),1)
    Next

    strMungedGUID    = strNewCode
   End Sub

   Sub UnMungeGUID(ByVal strMungedGUID, ByRef strGUID)
    '// This routine reconstructs a GUID from the munged format
    '// used by various registry entries for Windows Installer
    '// For example: 9A8B056D745C3D247AFDF0DAA06C9EDE
    '//    becomes
    '//   {D650B8A9-C547-42D3-A7DF-0FAD0AC6E9ED}

    Dim arrSortOrder
    Dim intIndex
    Dim strPartTemp
    Dim strPart1
    Dim strPart2
    Dim strPart3
    Dim strPart4
    Dim strPart5

    '// Part 1
    strPartTemp    = Left(strMungedGUID, 8)
    strPart1    = StrReverse(strPartTemp)

    '// Part 2
    strPartTemp    = Mid(strMungedGUID, 9, 4)
    strPart2    = StrReverse(strPartTemp)

    '// Part 3
    strPartTemp    = Mid(strMungedGUID, 13, 4)
    '// Excuse me! May I borrow these variables for a moment?
    strPart3    = Left(strPartTemp, 2)
    strPart4    = Right(strPartTemp, 2)
    strPart3    = StrReverse(strPart4) & StrReverse(strPart3)

    '// Now deal with part 4 properly
    strPartTemp    = Mid(strMungedGUID, 17, 2)
    strPart4    = Mid(strMungedGUID, 19, 2)
    strPart4    = StrReverse(strPartTemp) & StrReverse(strPart4)

    strPartTemp    = Mid(strMungedGUID, 21, 12)

    arrSortOrder     = Array(2,1,4,3,6,5,8,7,10,9,12,11)

    '// Generate the product code
    For intIndex = 0 To UBound(arrSortOrder)
     strPart5    = strPart5 & Mid(strPartTemp,arrSortOrder(intIndex),1)
    Next

    strGUID    = ""
    strGUID    = strGUID & "{"
    strGUID    = strGUID & strPart1
    strGUID    = strGUID & "-"
    strGUID    = strGUID & strPart2
    strGUID    = strGUID & "-"
    strGUID    = strGUID & strPart3
    strGUID    = strGUID & "-"
    strGUID    = strGUID & strPart4
    strGUID    = strGUID & "-"
    strGUID    = strGUID & strPart5
    strGUID    = strGUID & "}"
   End Sub

Answered 03/12/2015 by: VBScab
Red Belt

 
This website uses cookies. By continuing to use this site and/or clicking the "Accept" button you are providing consent Quest Software and its affiliates do NOT sell the Personal Data you provide to us either when you register on our websites or when you do business with us. For more information about our Privacy Policy and our data protection efforts, please visit GDPR-HQ