Jump to content


one executable....many users


  • Please log in to reply
17 replies to this topic

#1 somebody

somebody
  • Guests

Posted 17 April 2007 - 03:14 PM

I have an executable written in AHK sitting on a network drive...I have multiple users that run this executable from that network drive. Now, when I make enhancements/fix bugs with the program and try to put the updated version into that network folder, it wont' let me b/c the program is currently running. Is there a way to suspend the program and throw my updated version out there, then reload the script without the users ever knowing?

Any suggestions would be greatly appreciated.

#2 Grumpy

Grumpy
  • Guests

Posted 17 April 2007 - 03:56 PM

I have seen exactly the same question some time ago...
Perhaps it is worth searching the forum, although finding the right keywords can be hard...

#3 BoBo

BoBo
  • Guests

Posted 17 April 2007 - 04:07 PM

[unlock file]

#4 engunneer

engunneer
  • Fellows
  • 9162 posts

Posted 17 April 2007 - 05:08 PM

I have done something like this at work, and have a hack that works for me. I basically have the program checking for a trigger on the network drive (which is another script that is compiled), then the program exits on everyone's computer, and runs the trigger script, which waits for a second trigger (which is a second compiled script) that tells it to run the main program again.

It shounds messy, but is in fact quite easy. I can post the code if needed.

#5 somebody

somebody
  • Guests

Posted 17 April 2007 - 05:14 PM

I checked the other link that uses some type of 3rd party unlocking software, but I'd prefer to use strictly AHK to do this. Enguneer, if you could point me in the right direction, that would be helpful.

#6 BoBo

BoBo
  • Guests

Posted 17 April 2007 - 05:25 PM

I have an executable written in AHK sitting on a network drive

You could set the exe to use AHK's OnExit to write the clients 'offline' status to a log hosted at the same place as the executable.
Another script watches out (reads the log) till all clients are stated as offline, to replace the executable once that happened.

JM2€C's. Good luck. 8)

#7 engunneer

engunneer
  • Fellows
  • 9162 posts

Posted 17 April 2007 - 05:46 PM

I will state again that this is not particularly elegant, but it works for me.

;*** marks things you need to change for your environment

main script
;autoexecute section
Loop, 
{
	IfNotExist, TurnOff.exe
	{
		IfNotExist, TurnOn.exe
		{
			break 			;don't start until the trigger files are deleted
		}

	}
	sleep, 5000
}

SetTimer, UpdateAll, 30000    ;Run every N milliseconds

;your code can go here

Return

UpdateAll:
;Check for reloader
IfExist, TurnOff.exe
{
Run, TurnOff.exe
ExitApp
}

Return



TurnOff.ahk
;Instructions
;Compile TurnOff.ahk
;wait for ready message
;Compile main script.ahk
;Compile TurnOn.ahk
;wait a few seconds
;delete turnoff.exe

;*** put the name of your program here to notify users that the program is reloading
MsgBox, MAIN SCRIPT is being updated to a new version. It will start again automatically in 2-3 minutes.

Sleep, 60000

EnvGet, username, USERNAME
IfEqual, username, YOURUSERNAME                      ;*** put your user name here to be notified when all scripts should be closed
	MsgBox, Try it now - compile the main script`nwait a few seconds`ncompile TurnOn`nwait a few seconds`ndelete Turnoff.exe`nwait a few seconds`ndelete Turnon.exe
  ;You can also cause TurnOff.exe to compile your main script, but I did not do this.

Loop,
;Check for reloader
{
	IfExist, TurnOn.exe
	{
		Run, TurnOn.exe
		ExitApp
	}
Sleep, 5000
}

TurnOn.ahk
Run, main script.exe          ;*** change to name of your compiled script
ExitApp


#8 somebody

somebody
  • Guests

Posted 17 April 2007 - 05:50 PM

thank you very much....don't worry about the elegance, you haven't seen some of my code. thanks again and I'll give this a try.

#9 somebody

somebody
  • Guests

Posted 17 April 2007 - 09:47 PM

THANKS! It worked perfectly...I changed it up a little bit, to send the user a msgbox when it was updated.

#10 Rhys

Rhys
  • Members
  • 761 posts

Posted 04 May 2007 - 02:14 PM

Very interesting solution! I am tagging this for future reference.

#11 tank

tank
  • Members
  • 4134 posts

Posted 26 August 2009 - 08:43 PM

i know this is a particularly old thread but happened upon it
I use a web server to deploy scripts to a local desktop to run the scripts first line deletes itself
the web site is a trusted source so no active x prompts

if anyone is interested i might create a small template to demonstrate the technique

#12 jaco0646

jaco0646
  • Fellows
  • 3163 posts

Posted 26 August 2009 - 10:03 PM

It is an interesting idea, though I have no use for it personally. Isn't this why IT updates are usually scheduled during system down time (i.e. the wee hours of the morning)?

#13 tank

tank
  • Members
  • 4134 posts

Posted 27 August 2009 - 02:17 AM

IT updates are typically scheduled during off peak hours to avoid large impacts if the updatesbreak something and allow minimum impact to trigger rollback
many development teams use something know as cvs CODE Versioning Store

this allows for instance JAVA developers to mercge changes when going live

My method of deploying applications made with ahk ensures the files are always fresh and never running from the server or network share so edits can be done freely. Wise developers push updates live at carefully scheduled times

#14 MasterFocus

MasterFocus
  • Moderators
  • 4155 posts

Posted 27 August 2009 - 03:46 AM

if anyone is interested i might create a small template to demonstrate the technique

That'd be welcome.

#15 vahju

vahju
  • Members
  • 329 posts

Posted 28 August 2009 - 02:02 AM

My method of deploying applications made with ahk ensures the files are always fresh and never running from the server or network share so edits can be done freely. Wise developers push updates live at carefully scheduled times


I would like to hear more about how you do this. I work with a 20 man helpdesk and would love to find a way to synch helpdesk hotkey list.