clientupdate: do not allow msiexec to reboot the OS (#11409)

According to
https://learn.microsoft.com/en-us/windows/win32/msi/standard-installer-command-line-options#promptrestart,
`/promptrestart` is ignored with `/quiet` is set, so msiexec.exe can
sometimes silently trigger a reboot. The best we can do to reduce
unexpected disruption is to just prevent restarts, until the user
chooses to do it. Restarts aren't normally needed for Tailscale updates,
but there seem to be some situations where it's triggered.

Updates #18254

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
pull/11415/head
Andrew Lytvynov 8 months ago committed by GitHub
parent da3cf12194
commit 48eef9e6eb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -836,7 +836,7 @@ func (up *Updater) switchOutputToFile() (io.Closer, error) {
func (up *Updater) installMSI(msi string) error { func (up *Updater) installMSI(msi string) error {
var err error var err error
for tries := 0; tries < 2; tries++ { for tries := 0; tries < 2; tries++ {
cmd := exec.Command("msiexec.exe", "/i", filepath.Base(msi), "/quiet", "/promptrestart", "/qn") cmd := exec.Command("msiexec.exe", "/i", filepath.Base(msi), "/quiet", "/norestart", "/qn")
cmd.Dir = filepath.Dir(msi) cmd.Dir = filepath.Dir(msi)
cmd.Stdout = up.Stdout cmd.Stdout = up.Stdout
cmd.Stderr = up.Stderr cmd.Stderr = up.Stderr

Loading…
Cancel
Save