diff --git a/contrib/win32/install/product.wxs b/contrib/win32/install/product.wxs index 96920cf96..30c07a8ab 100644 --- a/contrib/win32/install/product.wxs +++ b/contrib/win32/install/product.wxs @@ -23,6 +23,9 @@ = 601]]> + + + diff --git a/contrib/win32/openssh/AppveyorHelper.psm1 b/contrib/win32/openssh/AppveyorHelper.psm1 index 1f897fcaf..c382ff9f0 100644 --- a/contrib/win32/openssh/AppveyorHelper.psm1 +++ b/contrib/win32/openssh/AppveyorHelper.psm1 @@ -171,9 +171,12 @@ function Install-OpenSSH $machinePath = [Environment]::GetEnvironmentVariable('Path', 'MACHINE') $newMachineEnvironmentPath = $machinePath - if (-not ($machinePath.ToLower().Contains($OpenSSHDir.ToLower()))) + if (-not $machinePath.ToLower().Contains("$OpenSSHDir;".ToLower())) { $newMachineEnvironmentPath = "$OpenSSHDir;$newMachineEnvironmentPath" + } + if (-not $env:Path.ToLower().Contains("$OpenSSHDir;".ToLower())) + { $env:Path = "$OpenSSHDir;$env:Path" } # Update machine environment path diff --git a/contrib/win32/openssh/OpenSSHUtils.psm1 b/contrib/win32/openssh/OpenSSHUtils.psm1 index cace31ecb..a6b6c46a0 100644 --- a/contrib/win32/openssh/OpenSSHUtils.psm1 +++ b/contrib/win32/openssh/OpenSSHUtils.psm1 @@ -829,4 +829,25 @@ function Enable-Privilege { $type[0]::EnablePrivilege($Privilege, $Disable) } -Export-ModuleMember -Function Repair-FilePermission, Repair-SshdConfigPermission, Repair-SshdHostKeyPermission, Repair-AuthorizedKeyPermission, Repair-UserKeyPermission, Repair-UserSshConfigPermission, Enable-Privilege, Get-UserAccount, Get-UserSID, Repair-AdministratorsAuthorizedKeysPermission, Repair-ModuliFilePermission, Repair-SSHFolderPermission, Repair-SSHFolderFilePermission, Repair-SSHFolderPrivateKeyPermission +Function Add-MachinePath { + [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact="High")] + param + ( + [parameter(Mandatory=$true)] + [string]$FilePath + ) + + if (Test-Path $FilePath) { + $machinePath = (Get-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH).Path + if (-not $machinePath.ToLower().Contains("$FilePath;".ToLower())) + { + $newPath = $FilePath + ’;’ + $machinePath + Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH –Value $newPath + if ((Get-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH).Path -eq $newPath) { + Write-Host "Updated Machine PATH to include OpenSSH directory, restart/re-login required to take effect globally" -ForegroundColor Yellow + } + } + } +} + +Export-ModuleMember -Function Repair-FilePermission, Repair-SshdConfigPermission, Repair-SshdHostKeyPermission, Repair-AuthorizedKeyPermission, Repair-UserKeyPermission, Repair-UserSshConfigPermission, Enable-Privilege, Get-UserAccount, Get-UserSID, Repair-AdministratorsAuthorizedKeysPermission, Repair-ModuliFilePermission, Repair-SSHFolderPermission, Repair-SSHFolderFilePermission, Repair-SSHFolderPrivateKeyPermission, Add-MachinePath diff --git a/contrib/win32/openssh/install-sshd.ps1 b/contrib/win32/openssh/install-sshd.ps1 index e4343bcb9..46246b845 100644 --- a/contrib/win32/openssh/install-sshd.ps1 +++ b/contrib/win32/openssh/install-sshd.ps1 @@ -3,6 +3,7 @@ # @manojampalam - removed ntrights.exe dependency # @bingbing8 - removed secedit.exe dependency # @tessgauthier - added permissions check for %programData%/ssh +# @tessgauthier - added update to system path for scp/sftp discoverability [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact="High")] param () @@ -126,3 +127,6 @@ New-Service -Name sshd -DisplayName "OpenSSH SSH Server" -BinaryPathName `"$sshd sc.exe privs sshd SeAssignPrimaryTokenPrivilege/SeTcbPrivilege/SeBackupPrivilege/SeRestorePrivilege/SeImpersonatePrivilege Write-Host -ForegroundColor Green "sshd and ssh-agent services successfully installed" + +# add folder to system PATH +Add-MachinePath -FilePath $scriptdir @psBoundParameters