Notices: This section not yet converted to new layout. Download stats are rolling back out.

OneDrive (Next Generation Sync Client)

17.3.6798.0207

Package test results are passing.

This package was approved by moderator AdmiringWorm on 8/19/2017.

The new OneDrive sync client lets you connect and sync files from your OneDrive for Business and from SharePoint sites. You can add a work or school account to the OneDrive sync client and sync all your files to your computer.

To install OneDrive (Next Generation Sync Client), run the following command from the command line or from PowerShell:

C:\> choco install onedrive

To upgrade OneDrive (Next Generation Sync Client), run the following command from the command line or from PowerShell:

C:\> choco upgrade onedrive

Files

Hide
  • tools\chocolateyInstall.ps1 Show
    [CmdletBinding()]
    param(
      [string]$PackageName = $env:chocolateyPackageName,
      [string]$PackageFolder = $env:chocolateyPackageFolder,
      [string]$PackageVersion = $env:chocolateyPackageVersion,
      [switch]$Force = $($env:ChocolateyForce -eq 'True')
    )
    
    $ErrorActionPreference = 'Stop'
    
    Write-Verbose "Importing file '.\tools\helpers.ps1'..."
    . "$($PackageFolder)\tools\helpers.ps1"
    
    # The install will fail if run as SYSTEM or a service account.
    # https://support.office.com/en-us/article/Deploy-the-new-OneDrive-sync-client-in-an-enterprise-environment-3f3a511c-30c6-404a-98bf-76f95c519668?ui=en-US&rs=en-US&ad=US#step2
    # "This command must be run at user logon and using Administrator permissions. It must be run for each user on a machine."
    if (-not(Test-LoggedOnUser)) {
    	Write-Warning "OneDrive setup must be run as a logged on user, the command will likely fail."
    }
    
    $PackageVersionObj = ConvertFrom-VersionString $PackageVersion
    
    $PackageVersionNumber = $PackageVersionObj.VersionNumber
    
    if ($PackageVersionObj.VersionFlag) {
      if ($PackageVersionObj.VersionFlag -eq 'Insider') {
        $PackageDownloadSource = 'Team'
      } else {
        throw "Unexpected version flag '$($PackageVersionObj.VersionFlag)'."
      }
    } else {
      $PackageDownloadSource = 'Direct'
    }
    
    if (-not($Force.IsPresent)) {
    	try {
    		$currentInstall = Get-Software 'Microsoft OneDrive' -EA 0
    
    		if ($currentInstall) {
    			if ($currentInstall.DisplayVersion -gt $PackageVersionNumber) {
    				Write-Warning "OneDrive v$($currentInstall.DisplayVersion) is already installed."
    				return
    			} elseif ($currentInstall.DisplayVersion -eq $PackageVersionNumber) {
    				Write-Warning "OneDrive v$($currentInstall.DisplayVersion) is already installed."
    				return
    			}
    		}
    	} catch {
    		if ($_.Exception.Message -eq "Didn't find software matching name 'Microsoft OneDrive'.") {
    			# Ignore error...
    		} else {
    			Write-Warning "Unable to determine current version: '$($_.Exception.Message)'."
    		}
    	}
    }
    
    Write-Host "Installing OneDrive v$($PackageVersionNumber)..."
    
    $packageArgs = @{
      packageName            = 'onedrive'
      fileType               = 'exe'
      url                    = "https://oneclient.sfx.ms/Win/$($PackageDownloadSource)/$($PackageVersionNumber)/OneDriveSetup.exe"
      checksum               = 'C1BDF2E4150AD93CB047AE339A44AB9612BA211475D8CA24C63303F7745D241C'
      checksumType           = 'sha256'
      silentArgs             = '/silent'
      validExitCodes         = @(0)
      softwareName           = 'Microsoft OneDrive'
    }
    
    Install-ChocolateyPackage @packageArgs
    
  • tools\chocolateyUninstall.ps1 Show
    [CmdletBinding()]
    param(
      [string]$PackageName = $env:chocolateyPackageName,
      [string]$PackageFolder = $env:chocolateyPackageFolder,
      [string]$PackageVersion = $env:chocolateyPackageVersion,
      [switch]$Force = $($env:ChocolateyForce -eq 'True')
    )
    
    $ErrorActionPreference = 'Stop'
    
    Write-Verbose "Importing file '.\tools\helpers.ps1'..."
    . "$($PackageFolder)\tools\helpers.ps1"
    
    $uninstallString = $null
    
    try {
        $currentInstall = Get-Software 'Microsoft OneDrive' -EA 0
    
        if ($currentInstall) {
            $uninstallString = $currentInstall.UninstallString
        }
    } catch {
        if ($_.Exception.Message -eq "Didn't find software matching name 'Microsoft OneDrive'.") {
            # Ignore error...
        } else {
            Write-Warning "Unable to determine current version: '$($_.Exception.Message)'."
        }
    }
    
    if ($uninstallString) {
        Write-Host "Running uninstall string => $uninstallString"
        Start-ChocolateyProcessAsAdmin "/C $uninstallString" 'cmd.exe' -validExitCodes @(0)
    } else {
        Write-Warning "OneDrive is not installed for user '$($env:USERNAME)'."
    }
    
  • tools\helpers.ps1 Show
    function Get-Software {
    	[CmdletBinding()]
    	param(
    		[string]$Name,
    
    		[ValidateSet('Everything', 'CurrentUser', 'LocalMachine')]
    		[string]$Scope = 'Everything'
    	)
    
    	# https://community.spiceworks.com/how_to/2238-how-add-remove-programs-works
    	# http://superuser.com/questions/681564/how-to-list-all-applications-displayed-from-add-remove-winxp-win7-via-command-li
    	# http://www.cagedrat.com/microsoft-windows/powershell/powershell-get-list-of-installed-programs-wmi-registry/
    
    	if (-not($Scope)) {
    		$Scope = 'CurrentUser'
    	}
    
    	$regKeys = @()
    
    	if ($Scope -eq 'LocalMachine' -or $Scope -eq 'Everything') {
    		Get-ChildItem "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall" -EA 0 | ForEach-Object {
    			$regKeys += $_
    		}
    	}
    
    	if ($Scope -eq 'CurrentUser' -or $Scope -eq 'Everything') {
    		Get-ChildItem "HKCU:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall" -EA 0 | ForEach-Object {
    			$regKeys += $_
    		}
    	}
    
    	if ($Scope -eq 'LocalMachine' -or $Scope -eq 'Everything') {
    		Get-ChildItem "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" -EA 0 | ForEach-Object {
    			$regKeys += $_
    		}
    	}
    
    	if ($Scope -eq 'CurrentUser' -or $Scope -eq 'Everything') {
    		Get-ChildItem "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" -EA 0 | ForEach-Object {
    			$regKeys += $_
    		}
    	}
    
    	$software = [array]($regKeys | ForEach-Object {
    		Get-ItemProperty $_.PSPath
    	} | Where-Object {
    		$_.SystemComponent -ne 1 -and $_.DisplayName -and -not($_.ParentDisplayName)
    	} | Where-Object {
    		-not($Name) -or $_.DisplayName -like $Name
    	})
    
    	if ($Name -and $software.Count -eq 0) {
    		Write-Error "Didn't find software matching name '$($Name)'."
    	}
    
    	return $software
    }
    
    function ConvertFrom-VersionString {
        [CmdletBinding()]
        param(
            [Parameter(Mandatory=$true, Position=0, ValueFromPipeline=$true)]
            [string]$InputObject
        )
    
        if ($InputObject -like '*-*') {
            $versionFlagIndex = $InputObject.IndexOf('-')
            $versionNumber = $InputObject.Substring(0, $versionFlagIndex)
            $versionFlag = $InputObject.Substring($versionFlagIndex + 1)
        } else {
            $versionNumber = $InputObject
            $versionFlag = $null
        }
    
        $version = New-Object 'PSObject'
    
        $version | Add-Member -Type 'NoteProperty' -Name 'VersionString' -Value $InputObject
        $version | Add-Member -Type 'NoteProperty' -Name 'VersionNumber' -Value $versionNumber
        $version | Add-Member -Type 'NoteProperty' -Name 'VersionFlag' -Value $versionFlag
    
        return $version
    }
    
    function Test-LoggedOnUser {
    	[CmdletBinding()]
    	param(
    	)
    
        # https://support.microsoft.com/en-us/help/243330/well-known-security-identifiers-in-windows-operating-systems
        $currentUser = [Security.Principal.WindowsIdentity]::GetCurrent().Name
        if ($currentUser -eq 'NT AUTHORITY\SYSTEM') {
            return $false
        } elseif ($currentUser -eq 'NT AUTHORITY\LOCAL SERVICE') {
            return $false
        } elseif ($currentUser -eq 'NT AUTHORITY\NETWORK SERVICE') {
            return $false
        } elseif ($env:USERNAME) {
    		return $true
    	}
    }
    

Virus Scan Results

In cases where actual malware is found, the packages are subject to removal. Software sometimes has false positives. Moderators do not necessarily validate the safety of the underlying software, only that a package retrieves software from the official distribution point and/or validate embedded software against official distribution point (where distribution rights allow redistribution).

Chocolatey Pro provides runtime protection from possible malware.

Dependencies

This package has no dependencies.

Package Maintainer(s)

Software Author(s)

  • Microsoft

Tags

Version History

Version Downloads Last updated Status
OneDrive 17.0.4041.0512 5189 Tuesday, July 1, 2014  

Discussion for the OneDrive (Next Generation Sync Client) Package

Ground rules:

  • This discussion is only about OneDrive (Next Generation Sync Client) and the OneDrive (Next Generation Sync Client) package. If you have feedback for Chocolatey, please contact the google group.
  • This discussion will carry over multiple versions. If you have a comment about a particular version, please note that in your comments.
  • The maintainers of this Chocolatey Package will be notified about new comments that are posted to this Disqus thread, however, it is NOT a guarantee that you will get a response. If you do not hear back from the maintainers after posting a message below, please follow up by using the link on the left side of this page or follow this link to contact maintainers. If you still hear nothing back, please follow the package triage process.
  • Tell us what you love about the package or OneDrive (Next Generation Sync Client), or tell us what needs improvement.
  • Share your experiences with the package, or extra configuration or gotchas that you've found.
  • If you use a url, the comment will be flagged for moderation until you've been whitelisted. Disqus moderated comments are approved on a weekly schedule if not sooner. It could take between 1-5 days for your comment to show up.

comments powered by Disqus
Chocolatey.org uses cookies to enhance the user experience of the site.
Ok