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

Please log in to comment

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

Please log in to comment
Answer this question or Comment on this question for clarity

Share