Winamp & Shoutcast Forums

Winamp & Shoutcast Forums (http://forums.winamp.com/index.php)
-   NSIS Discussion (http://forums.winamp.com/forumdisplay.php?f=65)
-   -   How to handle replacing files which are in use? (http://forums.winamp.com/showthread.php?t=293513)

richiebabes 23rd June 2008 18:18

How to handle replacing files which are in use?
 
I created an NSIS install script that works unless a certain application is running which is part of the install. What is the best way to handle this?

I.e. let's say myexecutable.exe is in the list of files I want to install but when the user installs they have an older version running and myexecutable.exe is running.

Afrow UK 23rd June 2008 19:38

This is a macro I use to replace on reboot:
code:
!macro InstallOnReboot Source Destination
SetFileAttributes `${Destination}` NORMAL
File `/oname=${Destination}.new` `${Source}`
Delete /rebootok `${Destination}`
Rename /rebootok `${Destination}.new` `${Destination}`
!macroend


Usage:
code:
!insertmacro InstallOnReboot localfile.exe $SYSDIR\outfile.exe

The SetFileAttributes fixes a problem we found with files set to hidden+system (they were not always replaced).

Stu

richiebabes 23rd June 2008 19:52

OK, I figured out how to use this and it works... but the only problem is that it requires a reboot. Is there no way we can ask the user to nicely close down the application before proceeding with the install?

richiebabes 23rd June 2008 20:40

Like you know, a handy window saying "The following applications need to be closed down before installation can continue. Please close them and click Retry to continue, or you will be sent to the fires of hell for the weekend".

Afrow UK 23rd June 2008 20:47

Sure, http://nsis.sf.net/LockedList_plug-in
You can use the AddModule function and give it the path to your application.

Stu

richiebabes 23rd June 2008 21:17

Awesome, thanks!

richiebabes 23rd June 2008 21:57

Is it possible to only show the locked files page if there are actually files to be closed? If there are none I'd really like to just skip past it...

Afrow UK 24th June 2008 09:11

This would be a good addition. I'll add that option when I am next free (may be at the weekend).

Stu

richiebabes 25th June 2008 20:55

Good stuff. If I have any spare time (rofl) I can look into it too now I am getting the hang of this NSIS stuff.

Just want to say, after being plagued with using InstallShield the last couple of years, NSIS is a wonderful breath of fresh air!

Animaether 20th January 2009 17:22

coming from...
http://forums.winamp.com/showthread....42#post2476542
( WINAMP.COM | Forums > Developer Center > NSIS Discussion > How do we overwrite a running file )

Quote:

Originally posted by Afrow UK
This is a macro I use to replace on reboot:
Could that easily be adapted to try the File method first, then check for the Error flag, and only use the .new-extraction/delete/rename on reboot -if- the File method failed?
I think that in the end, the result would be the same, but the number of file interactions would presumably go down? Any caveats with that thought?


All times are GMT. The time now is 17:39.

Copyright © 1999 - 2010 Nullsoft. All Rights Reserved.