- NSIS Discussion
- reinstaller
Archive: reinstaller
superwan
3rd October 2004 18:26 UTC
reinstaller
hello
i've succesfully created a great installer for a great gpl tvonpc software : K!TV (www.kastortv.org)
this installer has an advanced function : an uninstaller which can completely reinstall the software
for that, i had to use the same "file" commands in the uninstall section as in the install section
BUT the command "file" has a bug...
when I'm using for example :
"file k!tv.exe", in the installer section,
I have to write in the uninstaller section :
"file k!tv.exe"
(because the uninstaller can reinstall...)
as a consequence, the bug makes that "k!tv.exe" is copyied two times in my setup.exe...
all my files are copyed two times un my setup.exe !!
---> my setup.exe is 2 times bigger than it should be...
I should create a function "copy files for install and reinstall", and then my files would be copyied only once,
BUT
the functions can't be the same for the uninstaller and for the installer........
have You any idea how to avoid this problem ???
Afrow UK
3rd October 2004 19:49 UTC
Use the installer not the uninstaller to reinstall.
-Stu
superwan
3rd October 2004 20:29 UTC
thanks for your answer, but is this a solution ????
i'm telling you that i don't find any chocolate ice cream and you're answering me that i juste have to buy a vanilla ice cream...
this is nonsense
my installer can reinstall too... (like the nsis installer)
but what happens if i have deleted my installer, and i want to reinstall my software ?
ps : what does "-stu" mean ?
Yathosho
3rd October 2004 23:19 UTC
are you sure, that you are using the uninstall-section properly? have a look at the examples as comparison. if you still insist using the same .exe to install/uninstall, have a look at this.
Afrow UK
4th October 2004 20:24 UTC
It is not nonsense. Think of it logically. If you want the installer and uninstaller to install, then both exe's need the files stored in them to do the install!
The link Yathosho pointed to is probably your best solution, as NSIS does not compress the same files only once if you specify them twice (it will always compress them twice).
And Stu is my name (Stuart)
-Stu
superwan
4th October 2004 20:46 UTC
ok hello stuart
and thank you both (stuart and yathosho) to answer my questions ;) this is nice of you ;)
well...
what you said me to do, is to make a "reninstaller - uninstaller" in the installer
that's what I did...
(http://www.kastortv.org if you want to try the exe file :
- install it once it's ok
- if you try to reinstall it, you have the choice to uninstall and/or reinstall ;) )
thank you for your links, but that's already what i did :D
(and it's nice)
but if you think logically...
the uninstaller should be able to repair (and to reinstall) the installation...
stuart says : "If you want the installer and uninstaller to install, then both exe's need the files stored in them to do the install"
in fact, you don't need to store the files twice, if you create the uninstaller during the installation, and not during compiling the setup.exe
and you the developpers can change it, can't you ? :D
see you ;)
superwan
5th October 2004 15:46 UTC
arf :(
Afrow UK
5th October 2004 18:54 UTC
Yes you do have to store the files twice, in both the installer and uninstaller like I said. But no you can't tell NSIS to compress the files once and then copy them into the uninstaller because that would require a large overhead to move the compressed file data from the installer exe into the uninstaller exe.
The only thing that I can think of is that your main installer has a command-line switch that will make it do the reinstall (so your uninstaller will Exec it and voila you get a reinstallation!)
Without the switch the installer will just run as normal.
However, you still have a problem if the user deletes the installer so :(
-Stu
superwan
6th October 2004 08:35 UTC
yee :(
and as i said to you, that'"s already what i have done... a reinstaller in the installer
well, ok...
thank you afrow stuart and yathosho ;)
see ya ;)
kichik
10th October 2004 14:47 UTC
If you use File with the same file twice, the datablock optimizer will make sure the file is not included twice. However, the installer and the uninstaller do not share the same datablock, so this case can't be optimized.
goofee691
11th October 2004 18:33 UTC
i know how to do this
rather than useing the file command just resrve the files then just call on them this should work i hope
im lookin gnow to see if it does
goofee691
11th October 2004 18:36 UTC
no unfotunatly it doesent
Takhir
12th October 2004 11:51 UTC
Create multi-file distribution (normally NSIS creates single exe package). Use CopyFile instead of File. A lot of forum posts. May be 2 files: Installer/Uninstaller and compressed files archive. This is not very good for Inet downloads, but "WinZipSE for software distribution" on the first step might work fine. And I saw NSIS selfextractor forum thread somewhere :)
Takhir
12th October 2004 13:26 UTC
Another variant - don't use Uninstall section at all. Finally you need to copy a whole package to $INSTDIR and create link to this file called Uninstall or Setup. On .inInit you need to decide where you are. For example, if you see your package already installed on the comp, offer to user Uninstall/Repair. Otherwise make a simple Install. But you need to implement Uninstall functionality somewhere in Install section.
superwan
4th January 2005 16:46 UTC
Hello Hello :)
I've found the solution :D
to a very interesting problem (takhir wasn't far... and its solution is perhaps good... mine works, I tested it ;) )
The question was :
how to make an uninstaller which can reinstall everything if you ask him to do it, without double-ing the size of the final setup.exe
1) don't copy any file during the installation...
2) just copy the uninstaller
3) once it is installed, do an execwait which launches the uninstaller, and "say" to it that you are installing
4) make your uninstaller behave like an installer, copying all the files...
5) when you launch the uninstall, the uninstaller can install the files too if you ask him to do it
only one command "file" per file installed
so no size double-ing ;)
see ya ;)
RobGrant
5th January 2005 13:47 UTC
What about not creating a standard uninstaller, but instead include the makensis.exe and anything else needed and a script to make an (un|re)installer.
At the end of your install (with all of your files deployed on the target hard drive) you use those same files to create your (un|re)installer using makensis.exe, with your script as a guide.
Does that make sense?
superwan
5th January 2005 18:11 UTC
this surely make sense :D
like i said 10:04:2004 :
"in fact, you don't need to store the files twice, if you create the uninstaller during the installation, and not during compiling the setup.exe"
which is the most easy to do ?
Well in fact I'm hardly working on my technic to launch uninstaller during installation...
therefore I won't try your solution, but thx :D
superwan
6th February 2005 01:45 UTC
hello hello
my installer-uninstaller-reinstaller is complete youpeee
well, this works fine :)
I wanted to thx every forumer of the nsis forum... this foruml is great, people are patient, and you all really, really helped me with talent
What I wanted to do is done... doing an installer and an uninstaller which can reinstall parts or every components of my software, without double-ing the size of the setup.exe
isn't it great ? :D
if some one wants my script, mail me... eronpatapon@ifrance.com
see ya ;)
deepesh
8th February 2005 09:55 UTC
WoW
Wow1 Thank You, what a gr8 thread.
Deepesh Agarwal,
http://www.freeware-alternative.uni.cc
superwan
12th February 2005 12:27 UTC
hello hello
I'm releasing the code of my script
click here
the full script (not really cleared, but fully working, no bug inside, perhaps one or two ahaha who knows)
It isn't as hard to understand as it seems...
I give too the installer (i've removed all "file" commands)
see ya
and ask your questions in this topic