rzander / ruckzuck

software package manager for windows
https://ruckzuck.tools
Microsoft Public License
224 stars 21 forks source link

Zoom update is breaking pre-existing MSI conditions #94

Closed amartin253 closed 4 years ago

amartin253 commented 4 years ago

I have a core MSI deployment for Zoom that gets pushed out to our PC user base with the following parameters:

/norestart MSIRESTARTMANAGERCONTROL=”Disable” ZoomAutoUpdate="true" ZSSOHOST="mycompany" ZConfig="kCmdParam_InstallOption=8" ZNoDesktopShortCut="true" /passive ALLUSERS=1 REBOOT=ReallySuppress'

After running the rzupdate.exe /update it will update Zoom to the latest version but my SSO settings, auto update settings and desktop shortcut get stripped away.

Is there any way to modify this update to just do an in-place upgrade without modifying any of the custom bits?

Screen Shot 2020-07-16 at 12 02 49 PM Screen Shot 2020-07-16 at 12 02 30 PM Screen Shot 2020-07-16 at 12 02 02 PM Screen Shot 2020-07-16 at 12 01 07 PM Screen Shot 2020-07-16 at 11 59 45 AM

rzander commented 4 years ago

RuckZuck does just trigger:

$proc = (Start-Process -FilePath "msiexec.exe" -ArgumentList "/i `"ZoomInstallerFull.msi`" /qn ALLUSERS=2 REBOOT=REALLYSUPPRESS" -Wait -PassThru);$proc.WaitForExit();$ExitCode = $proc.ExitCode

image

You may have to ask the zoom community/support if there is a way to trigger the setup with keeping the original options ?!

amartin253 commented 4 years ago

Thanks @rzander . I found a workaround to this by setting my custom settings up as a GPO rather than in the initial install to maintain the settings! Appreciate the prompt reply and building this awesome application!

One quick question. Is there any way to output a log file of what got updated from the rzupdate.exe /update parameter? Thanks in advance!

rzander commented 4 years ago

I recommend to use the RuckZuck-OneGet-Provider if you want to do some logging or having more control of what is getting updated... https://github.com/rzander/ruckzuck/wiki/RuckZuck-OneGet-Provider

amartin253 commented 4 years ago

I recommend to use the RuckZuck-OneGet-Provider if you want to do some logging or having more control of what is getting updated... https://github.com/rzander/ruckzuck/wiki/RuckZuck-OneGet-Provider

Thanks @rzander

I am trying to use this method now and see the command in PowerShell once the MSI is installed is "Find-Package -ProviderName RuckZuck -Updates | Install-Package" but is there a way then to set up logging of what gets updated to a custom location?

rzander commented 4 years ago

An example to update only a specific set of SW; replace Write-Log with you own way to log...

$SWList = @("7-Zip", "7-Zip(MSI)", "FileZilla", "Google Chrome", "Firefox" , "Notepad++", "Notepad++(x64)", "Code", "AdobeReader DC MUI", "VSTO2010", "GIMP",
    "AdobeReader DC", "Microsoft Power BI Desktop", "Putty", "WinSCP", "AdobeAir", "ShockwavePlayer", 
    "VCRedist2019x64" , "VCRedist2019x86", "VCRedist2013x64", "VCRedist2013x86", "Slack", "Microsoft OneDrive", "Paint.Net",
    "VCRedist2012x64", "VCRedist2012x86", "VCRedist2010x64" , "VCRedist2010x86", "Office Timeline", "WinRAR", "Viber", "Teams Machine-Wide Installer",
    "VLC", "JavaRuntime8", "JavaRuntime8x64", "FlashPlayerPlugin", "FlashPlayerPPAPI", "Microsoft Azure Information Protection", "KeePass" )

#Find Software Updates
$updates = Find-Package -ProviderName RuckZuck -Updates | Select-Object PackageFilename | Sort-Object { Get-Random }

#Update only managed Software
$SWList | ForEach-Object { 
    if ($updates.PackageFilename -contains $_) { 
        Write-Log -JSON ([pscustomobject]@{Computer = $env:COMPUTERNAME; EventID = 2000; Description = "RuckZuck updating: $($_)"})
        "Updating: " + $_ ;
        Install-Package -ProviderName RuckZuck "$($_)" -ea SilentlyContinue
    }
}