Celebrating the 22th anniversary of the UltraVNC: https://forum.uvnc.com/viewtopic.php?t=38031
Update: UltraVNC 1.4.3.6 and UltraVNC SC 1.4.3.6: https://forum.uvnc.com/viewtopic.php?t=37885
Important: Please update to latest version before to create a reply, a topic or an issue: https://forum.uvnc.com/viewtopic.php?t=37864

Join us on social networks and share our announcements:
- Website: https://uvnc.com/
- GitHub: https://github.com/ultravnc
- Mastodon: https://mastodon.social/@ultravnc
- Bluesky/AT Protocol: https://bsky.app/profile/ultravnc.bsky.social
- Facebook: https://www.facebook.com/ultravnc1
- X/Twitter: https://x.com/ultravnc1
- Reddit community: https://www.reddit.com/r/ultravnc
- OpenHub: https://openhub.net/p/ultravnc

Remotely upgrade VNC server?

Any features you would like to see in UltraVNC? Propose it here
Post Reply
Mathog

Remotely upgrade VNC server?

Post by Mathog »

This isn't a suggestion so much as a question. How
would one remotely upgrade a VNC server installation?

1. VNC client -> VNC server
2. on server, download installer
3. on server, run installer

part way through it will either bomb because a component
it needs to replace is in use, or it will break the connection
to the client.

Seems like there needs to be some sort of special
mode of installation that will run without any intervention.
For instance, start up a secondary VNC server (on a different
port), switch the client to that, upgrade the primary VNC
server, switch back to the upgraded primary (carefully, in case
the install failed), and then upgrade the secondary.

Regards,

David Mathog
User avatar
Rudi De Vos
Admin & Developer
Admin & Developer
Posts: 6883
Joined: 2004-04-23 10:21
Contact:

Post by Rudi De Vos »

1) Disable driver use !!!!
No multiple instances can be handled by the driver !!!!!!!!!!!!!!!!
2) winvnc -multi (no revers, only standard)

winvnc -multi start a new server on 5901
Mathog

Post by Mathog »

Rudi De Vos wrote:1) Disable driver use !!!!
No multiple instances can be handled by the driver !!!!!!!!!!!!!!!!
2) winvnc -multi (no revers, only standard)

winvnc -multi start a new server on 5901
Are you saying that by following those steps one can
upgrade a VNC server while simultaneously connected
with a VNC client?

I just tried upgrading RC19.5 to RC20 over a VNC session (but
with no special care, since I don't understand your instructions.)

As expected, the client disconnected part way through the
install. Somewhat unexpectedly the Setup locked up on
the Server end too, leaving an empty "Setup" window
on the desktop. A subsequent reinstall without VNC
connected cleaned everything up.
netwolf
40
40
Posts: 112
Joined: 2004-05-13 11:33

Post by netwolf »

Mathog wrote:As expected, the client disconnected part way through the
install. Somewhat unexpectedly the Setup locked up on
the Server end too, leaving an empty "Setup" window
on the desktop. A subsequent reinstall without VNC
connected cleaned everything up.
I've had the same problem many times, and it was pretty annoying when I was not near the server.
But recently I found out that you can use "Upgrade RC18" instead of install and - guess what - it worked for the first time without a complete crash on the server side :)
The connection was lost, but it was no problem to reconnect and e.g. initiate a PC restart for the upgrade to become effective.

As already suggested, the string "Upgrade RC18" has to be changed to be clearer about what is actually meant (as currently it indicates that you can only upgrade from RC18...).
lizard
Former moderator
Former moderator
Posts: 171
Joined: 2004-05-03 07:43
Contact:

Post by lizard »

just as an example of thinking how you automate updating VNC remotely...
here's my solution with HTTP access, batch file and some commandline tools. destributed in an SFX package it has been working fine to me so far.

Code: Select all

@echo off

:init
set bindir=_update
set logfile=%bindir%\vncupdate.log
set zipfile=filename.zip
set suffix=.old
set url=http://hostname:port/%zipfile%

:check
if exist %logfile% attrib -H %logfile%
type nul>%logfile%

:download
echo Deleting previous update...
del /Q %zipfile% >nul 2>nul
echo Downloading update...
echo Downloading update...>>%logfile%
%bindir%\wget -c %url% >nul 2>nul
if not "%errorlevel%"=="0" (
	echo ERROR: Failed to download update.>>%logfile%
	if not exist %zipfile% goto exit
	goto stopsvc
)
echo Update was successfully downloaded.>>%logfile%

:stopsvc
echo Stopping VNC Server...
echo Stopping VNC Server...>>%logfile%
%bindir%\kill winvnc.exe >nul 2>nul
if not "%errorlevel%"=="0" (
	echo ERROR: Failed to stop VNC Server.>>%logfile%
	goto update
)
net stop "vnc server" >nul 2>nul
echo VNC Server was successfully stopped.>>%logfile%
%bindir%\sleep 1

:update
echo Updating VNC Server...
echo Updating VNC Server...>>%logfile%
%bindir%\unzip -o %zipfile% >nul 2>nul
if not "%errorlevel%"=="0" (
	echo ERROR: Failed to replace VNC Server.>>%logfile%
	goto startsvc
)
echo VNC Server was successfully replaced.>>%logfile%
echo Removing temporary files...
echo Removing temporary files...>>%logfile%
move /Y %zipfile% %bindir%\%zipfile%%suffix% >nul 2>nul
del /Q %zipfile% >nul 2>nul
if exist %zipfile% (
	echo ERROR: Failed to remove temporary files.>>%logfile%
)

:startsvc
echo Starting VNC Server...
echo Starting VNC Server in service mode...>>%logfile%
net start "vnc server" >nul 2>nul
if not "%errorlevel%"=="0" (
	echo ERROR: Failed to start VNC Server in service mode.>>%logfile%
	echo Starting VNC Server in user mode...>>%logfile%
	winvnc -run >nul 2>nul
	if not "%errorlevel%"=="0" (
		echo ERROR: Failed to start VNC Server in user mode.>>%logfile%
		goto exit
	)
	echo VNC Server was successfully started in user mode.>>%logfile%
	goto exit
)
echo VNC Server was successfully started in service mode.>>%logfile%

:exit
echo Update finished.>>%logfile%
attrib +H %logfile%
in the same directory where this batch file exists, there is supposed to be a sub directory named _update including:

kill.exe ... pskill.exe from http://www.sysinternals.com/ntw2k/freeware/pskill.shtml
sleep.exe ... D source code
unzip.exe ... unzip.exe from http://www.info-zip.org/pub/infozip/
wget.exe ... wget.exe from http://allserv.ugent.be/~bpuype/wget/
Lizard
Sergio
40
40
Posts: 103
Joined: 2004-05-22 20:02
Contact:

Post by Sergio »

lizard: Sorry about my ignorance, but ... how can I compile sleep.d and build sleep.exe ?

TIA
Last edited by Sergio on 2005-03-11 14:11, edited 1 time in total.
User avatar
Rudi De Vos
Admin & Developer
Admin & Developer
Posts: 6883
Joined: 2004-04-23 10:21
Contact:

Post by Rudi De Vos »

download sleep.exe
Look for "unix tools for windows"
lizard
Former moderator
Former moderator
Posts: 171
Joined: 2004-05-03 07:43
Contact:

Post by lizard »

Hello, Rudi!
the .d file is a D source file. You can compile it with a D compiler.
more details available here.

or you might want to download the compiled binary.
i'm sorry i didn't put it together in the .zip file.

Regards
Lizard
Sergio
40
40
Posts: 103
Joined: 2004-05-22 20:02
Contact:

Post by Sergio »

Rudi and lizard: thank you very much !
Mathog

Post by Mathog »

lizard wrote:just as an example of thinking how you automate updating VNC remotely...
Good proof of concept. For ease of use it leaves something
to be desired. One can imagine that most administrators
would much prefer an "update VNC on remote machine"
button and have some part of the UltraVNC package do
the heavy lifting.

Since you're moving stuff around from a .zip file presumably VNC
doesn't show up in the add/remove programs control panel, unless it was already there, right?

Thanks for script.
Post Reply