Hei, takk for svar. Her er scriptet jeg kjører fra PowerShell, merk at vi har en eldre versjon av global inne av ulike grunner, så ikke alt som er likt ser jeg. Sciptet fungerer fint, men jeg måtte i tillegg sørge for at DCOM var aktivert, og det fant jeg ingen umiddelbar måte å gjøre med PowerShell, så det ble egen policy. Det er også dumt at installer ikke kan kjøre helt silent (/qn), men trenger basic install, mulig det er vår versjon dette er et problem i.. Script og installasjonsfilene pakker jeg sammen med Microsoft-Win32-Content-Prep-Tool og kjører det som win32-app fra Intune. Brukt en del tid på å finne en god måte å kjøre dette i user context, da global installasjonen ikke kan kjøre helt silent i bakgrunnen (som SYSTEM), og fant egentlig ikke noen bedre løsning enn å velge "User" i Intune (ser ut som den kjører elevert om bruker har lokale adminrettigheter på maskinen). Ser ut til å ha fungert greit, men måtte slenge på en melding i applikasjonen med veiledning til hva brukeren måtte gjøre (klikke next, next, next). Ikke hørt noe annet enn at det virka, så da er jeg happy med det, hehe 🙂 Install-VismaGlobal.ps1 # If we are running as a 32-bit process on an x64 system, re-launch as a 64-bit process if ("$env:PROCESSOR_ARCHITEW6432" -ne "ARM64") { if (Test-Path "$($env:WINDIR)\SysNative\WindowsPowerShell\v1.0\powershell.exe") { & "$($env:WINDIR)\SysNative\WindowsPowerShell\v1.0\powershell.exe" -ExecutionPolicy bypass -NoProfile -File "$PSCommandPath" Exit $lastexitcode } } function Install-MSI { param( [String] $Path, [String] $AdditionalFlags, [Switch] $PassThru ) $msi = Get-Item $Path -ErrorAction Stop return Start-Process "msiexec" -ArgumentList "/i `"$($msi.FullName)`" $AdditionalFlags" -Wait -PassThru:$PassThru } # Start logging $vismaServer = "<applikasjonsserver>" $logdir = "$($env:ProgramData)\<firma>\Visma Global" Start-Transcript "$logdir\Install.log" ## Install prereqs Write-Host "Installing prerequisite vcredist_2015_SP2" Start-Process ".\Prerequisites\vcredist_x64_2015_SP2\vc_redist.x64.exe" -ArgumentList "/install /quiet /norestart" -Wait Start-Process ".\Prerequisites\vcredist_x86_2015_SP2\vc_redist.x86.exe" -ArgumentList "/install /quiet /norestart" -Wait Write-Host "Installing prerequisite DotNetFX452" Start-Process ".\Prerequisites\DotNetFX452\NDP452-KB2901907-x86-x64-AllOS-ENU.exe" -ArgumentList "/q /norestart" -Wait Write-Host "Installing prerequisite SQL CLR Types and Shared ManagementObjects" Install-MSI -Path ".\Prerequisites\SQL CLR Types 2012 SP2\x64\SQLSysClrTypes.msi" -AdditionalFlags "/passive" Install-MSI -Path ".\Prerequisites\SQL CLR Types 2016\x64\SQLSysClrTypes.msi" -AdditionalFlags "/passive" Install-MSI -Path ".\Prerequisites\SQL 2016 Management Objects\x64\SharedManagementObjects.msi" -AdditionalFlags "/qn /norestart" Write-Host "Installing prerequisite SQL Report Viewer" Install-MSI -Path ".\Prerequisites\ReportViewer2012\ReportViewer.msi" -AdditionalFlags "/qn /norestart" Write-Host "Prerequisites was installed!" # Fix firewall openings for VAF service Write-Host "`nAdding VAF firewall rules in local firewall" New-NetFirewallRule -DisplayName 'Visma Global - VAF Search Service 9151' -Profile 'Any' -Direction Inbound -Action Allow -Protocol TCP -LocalPort 9151 -ErrorAction SilentlyContinue | Out-Null New-NetFirewallRule -DisplayName 'Visma Global - VAF Search Service 9152' -Profile 'Any' -Direction Inbound -Action Allow -Protocol TCP -LocalPort 9152 -ErrorAction SilentlyContinue | Out-Null Write-Host "Firewall opened" # Install global Write-Host "`nInstalling Visma Global" $process = Install-MSI -Path ".\Visma Global.msi" -AdditionalFlags "/qb /norestart FORCECLIENT=yes COUNTRYCODE=47 SERVERNAME=$($vismaServer)" -PassThru Write-Host "Visma Global install exited with exit code: $($process.ExitCode)" # Stop logging and exit script Stop-Transcript exit $process.ExitCode Ved uninstall har jeg gjort det enkelt, og fjerner bare global, prerequisites får lov å leve.. (Kunne sikkert fjerna SQL-greien også, men ser lite vits å bruke mye tid på det da det kan være risiko for at andre applikasjoner kan slutte å virke om de er avhengig av samme prereqs). Uninstall-VismaGlobal.ps1 # If we are running as a 32-bit process on an x64 system, re-launch as a 64-bit process if ("$env:PROCESSOR_ARCHITEW6432" -ne "ARM64") { if (Test-Path "$($env:WINDIR)\SysNative\WindowsPowerShell\v1.0\powershell.exe") { & "$($env:WINDIR)\SysNative\WindowsPowerShell\v1.0\powershell.exe" -ExecutionPolicy bypass -NoProfile -File "$PSCommandPath" Exit $lastexitcode } } # Start logging $logdir = "$($env:ProgramData)\<firma>\Visma Global" Start-Transcript "$logdir\Uninstall.log" # Uninstall global $exitCode = 0 Get-WmiObject win32_product | Where-Object { $_.Name -like "*Visma Global*" } | ForEach-Object { Write-Host "`nUninstalling $($_.Name) $($_.Version) ($($_.IdentifyingNumber))" $process = Start-Process "msiexec" -ArgumentList "/x `"$($_.IdentifyingNumber)`" /qn /norestart" -PassThru -Wait Write-Host "$($_.Name) uninstall exited with exit code: $($process.ExitCode)" if ($exitCode -lt $process.ExitCode) { $exitCode = $process.ExitCode } } # Stop logging and exit Stop-Transcript exit $exitCode
... View more