[HOW-TO/SUPPORT/CHAT] OFFICE C2R Download/Install/Activation

Discussion in 'Microsoft Office' started by s1ave77, Jul 19, 2015.

  1. Dark Dinosaur

    Dark Dinosaur X Æ A-12

    Feb 2, 2011
    3,880
    5,447
    120
    Office Licenses Information by Yerong ~ New version
    updated with latest keys of 2024 channel
    thanks abbodi1406 for providing the new keys
    still have some missing retail keys ..
    it is what it is.

    upload_2024-4-11_21-18-52.png
     

    Attached Files:

    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  2. Dark Dinosaur

    Dark Dinosaur X Æ A-12

    Feb 2, 2011
    3,880
    5,447
    120
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  3. richwood

    richwood MDL Novice

    Nov 16, 2013
    39
    27
    0
  4. Dark Dinosaur

    Dark Dinosaur X Æ A-12

    Feb 2, 2011
    3,880
    5,447
    120
    #5167 Dark Dinosaur, Apr 22, 2024
    Last edited: Apr 22, 2024
    `pkeyconfig` data reader, just for fun [v6]
    new Result's ..................... :D

    Code:
    Ref: 5041
    Type: Volume:GVLK
    ID: {FCEDA083-1203-402A-8EC4-3D7ED9F3648C}
    Name: Office24_ProPlus2024PreviewVL_KMS_Client_AE
    KeyInfo command line usage => KeyInfo 13B1 0 0
    KeyRange: [0] => [999], Number: X23-60459, Type: ltKMS, IsValid: True
    
    Ref: 5044
    Type: Volume:MAK
    ID: {8FDB1F1E-663F-4F2E-8FDB-7C35AEE7D5EA}
    Name: Office24_ProPlus2024PreviewVL_MAK_AE
    KeyInfo command line usage => KeyInfo 13B4 0 0
    KeyRange: [0] => [99999], Number: X23-60462, Type: ltMAK, IsValid: True
    
    upload_2024-4-22_10-24-46.png

    Code:
    Class KeyRange {
      [string] $RefActConfigId
      [string] $PartNumber
      [string] $EulaType
      [bool]   $IsValid
      [int]    $Start
      [int]    $End
    }
    
    Class ConfigInfo {
      [string] $ActConfigId
      [int]    $RefGroupId
      [string] $ProductDescription
      [string] $ProductKeyType
      [bool]   $IsRandomized
      [KeyRange[]] $KeyRanges
    
      [String] ToString() {
        $output = $null
        $GroupId = [System.String]::Format("{0:X}",$this.RefGroupId)
        $output = "Ref: $($this.RefGroupId)`nType: $($this.ProductKeyType)`nID: $($this.ActConfigId)`nName: $($this.ProductDescription)`n"
        $output += "KeyInfo command line usage => KeyInfo $($GroupId) 0 0`n"
        $this.KeyRanges | Sort-Object -Property @{Expression = "Start"; Descending = $false } | % {
          $keyInfo = $_ -as [KeyRange]
          $output += "KeyRange: [$($keyInfo.Start)] => [$($keyInfo.End)], Number: $($keyInfo.PartNumber), Type: $($keyInfo.EulaType), IsValid: $($keyInfo.IsValid)`n" }
        return $output
      }
    }
    
    $LicenseInfo =
      Join-Path @([Environment]::GetFolderPath("Desktop")) 'LicenseInfo.xml'
    
    Function GenerateConfigList {
      param  (
        [ValidateNotNullOrEmpty()]
        [Parameter(ValueFromPipeline)]
        [string] $pkeyconfig = "$env:ProgramFiles\Microsoft Office\root\Licenses16\pkeyconfig-office.xrm-ms"
      )
    $Output = @{}
    if (-not [IO.FILE]::Exists($pkeyconfig)) {
      return $null }
    
    $data = Get-Content -Path $pkeyconfig
    $iStart = $data.IndexOf('<tm:infoBin name="pkeyConfigData">') + 34
    $iEnd = $data.Substring($iStart).IndexOf('</tm:infoBin>')
    $Conf = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($data.Substring($iStart, $iEnd)))
    
    $iStart = $Conf.IndexOf('<pkc:Configurations>') + 21
    $iEnd   = [INT]::Parse($Conf.IndexOf('</pkc:Configurations>')) - $iStart
    $Configurations = $Conf.Substring($iStart,$iEnd) -split '<pkc:Configuration>'
    
    $iStart = $Conf.IndexOf('<pkc:KeyRanges>') + 17
    $iEnd   = [INT]::Parse($Conf.IndexOf('</pkc:KeyRanges>')) - $iStart
    $KeyRanges = $Conf.Substring($iStart,$iEnd) -split '<pkc:KeyRange>'
    
    $Configurations | % {
     $Source = $_|Out-String
    
     if ($Source.IndexOf('<pkc:ActConfigId>') -ne '-1') {
      $iStart = $Source.IndexOf('<pkc:ActConfigId>') + 17
      $iEnd   = $Source.IndexOf('</pkc:ActConfigId>') - $iStart
      $ActConfigId = $Source.Substring($iStart, $iEnd)
    
      $iStart = $Source.IndexOf('<pkc:RefGroupId>') + 16
      $iEnd   = $Source.IndexOf('</pkc:RefGroupId>') - $iStart
      $RefGroupId = $Source.Substring($iStart, $iEnd)
    
      $iStart = $Source.IndexOf('<pkc:EditionId>') + 15
      $iEnd   = $Source.IndexOf('</pkc:EditionId>') - $iStart
      $EditionId = $Source.Substring($iStart, $iEnd)
    
      $iStart = $Source.IndexOf('<pkc:ProductDescription>') + 24
      $iEnd   = $Source.IndexOf('</pkc:ProductDescription>') - $iStart
      $ProductDescription = $Source.Substring($iStart, $iEnd)
    
      $iStart = $Source.IndexOf('<pkc:ProductKeyType>') + 20
      $iEnd   = $Source.IndexOf('</pkc:ProductKeyType>') - $iStart
      $ProductKeyType = $Source.Substring($iStart, $iEnd)
    
      $iStart = $Source.IndexOf('<pkc:IsRandomized>') + 18
      $iEnd   = $Source.IndexOf('</pkc:IsRandomized>') - $iStart
      $IsRandomized = $Source.Substring($iStart, $iEnd) -as [BOOL]
    
      $cInfo = [ConfigInfo]::new()
      $cInfo.ActConfigId = $ActConfigId
      $cInfo.IsRandomized= $IsRandomized
      $cInfo.ProductDescription = $ProductDescription
      $cInfo.RefGroupId = $RefGroupId
      $cInfo.ProductKeyType = $ProductKeyType
      $cInfo.KeyRanges =
     
      $Output.Add(
        $ActConfigId, $cInfo )
     }}
    
     $KeyRanges | % {
       $Source = $_|Out-String
       if ($Source.IndexOf('<pkc:RefActConfigId>') -ne '-1') {
    
        $iStart = $Source.IndexOf('<pkc:RefActConfigId>') + 20
        $iEnd   = $Source.IndexOf('</pkc:RefActConfigId>') - $iStart
        $RefActConfigId = $Source.Substring($iStart, $iEnd)
    
        $iStart = $Source.IndexOf('<pkc:PartNumber>') + 16
        $iEnd   = $Source.IndexOf('</pkc:PartNumber>') - $iStart
        $PartNumber = $Source.Substring($iStart, $iEnd)
    
        $iStart = $Source.IndexOf('<pkc:EulaType>') + 14
        $iEnd   = $Source.IndexOf('</pkc:EulaType>') - $iStart
        $EulaType = $Source.Substring($iStart, $iEnd)
    
        $iStart = $Source.IndexOf('<pkc:IsValid>') + 13
        $iEnd   = $Source.IndexOf('</pkc:IsValid>') - $iStart
        $IsValid = $Source.Substring($iStart, $iEnd) -as [BOOL]
    
        $iStart = $Source.IndexOf('<pkc:Start>') + 11
        $iEnd   = $Source.IndexOf('</pkc:Start>') - $iStart
        $Start = $Source.Substring($iStart, $iEnd) -as [INT]
    
        $iStart = $Source.IndexOf('<pkc:End>') + 9
        $iEnd   = $Source.IndexOf('</pkc:End>') - $iStart
        $End = $Source.Substring($iStart, $iEnd) -as [INT]
    
        $kRange = [KeyRange]::new()
        
        $kRange.End = $End
        $kRange.Start = $Start
        $kRange.IsValid = $IsValid
        $kRange.EulaType = $EulaType
        $kRange.PartNumber = $PartNumber
        $kRange.RefActConfigId = $RefActConfigId
    
        $cInfo = $Output[$RefActConfigId] -as [ConfigInfo]
        $cInfo.KeyRanges += $kRange
       }
     }
    
     return $Output.Values
    }
    
    cls;
    Write-Host;
    
    $Licenses = GenerateConfigList |
      OGV -Title 'Select Licenses' -OutputMode Multiple
    
    if ($Licenses) {
      $Licenses | % {$_.ToString()} }
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  5. Dark Dinosaur

    Dark Dinosaur X Æ A-12

    Feb 2, 2011
    3,880
    5,447
    120

    Attached Files:

    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  6. Sansa1

    Sansa1 MDL Novice

    Oct 3, 2022
    19
    2
    0
    Hi
    I was using YAOCTRU_v9.0 and The script didn´t detect latest version of Office 2024. I saw that Microsoft Office 2024 v2405 Build 17706.2000 Preview ist out, but the script detects only Microsoft Office 2024 v2405 Build 17702.2000 Preview. So I tried YAOCTRU_v10.0 but still the same.
    Is there a way to fix it?
     
  7. Sansa1

    Sansa1 MDL Novice

    Oct 3, 2022
    19
    2
    0
    Thanks abbodi1406.
    Just to know. Is Microsoft Office 2024 still "DevMain Channel" or changed it to "Beta / Insider Fast" ?
     
  8. Dolmatov

    Dolmatov MDL Addicted

    Aug 16, 2017
    528
    450
    30
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  9. abbodi1406

    abbodi1406 MDL KB0000001

    Feb 19, 2011
    16,431
    86,387
    340
    RTM? i think it reached Beta channel
     
  10. Dark Dinosaur

    Dark Dinosaur X Æ A-12

    Feb 2, 2011
    3,880
    5,447
    120
    #5176 Dark Dinosaur, May 25, 2024
    Last edited: Jun 12, 2024
    this RTM license's only work under dev main channel only
    any other case, word fail


    old news, ignore this
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...