- NSIS Discussion
- Net Based?
Archive: Net Based?
phre0n
14th October 2001 20:27 UTC
Net Based?
Ok bare with me.
Is there anyway or is there ever going to be a way to do web based install.
Example
create the installer with some sort or ftp command built in.
I would like it to connect to my server with an already set name and passwrd then copy all the contents of the folder and maby know if there is anything new in the folder.
I am not that great with c\c++. Or I would add it myself if it doesn't already exist.
But I think that would be a great feature.
Another good one would be passwrd required for install like a registration number.
Thank you for baring with me.
Please reply with anything that would help including how to add the source code my self to make the thing do what I would like.
phre0n
http://linux.ppp0.com <-Curently down
DuaneJeffers
14th October 2001 22:43 UTC
I wanted to create something like this, with an IDE, and it would be able to have "live updating" or patch updating. But Who knows.
-Duane
prodangle
15th October 2001 00:26 UTC
Edgewize has made something which helps do the job. It's at http://scorpius.spaceports.com/~edgewize/
It's impossible to do version checks on dlls on the web without downloading them first (so you can't only download DLL's if neccessary) - but if that's not what you'll be using it for then i'd say it's tip top.
phre0n
15th October 2001 00:43 UTC
That should work but I think i will modify it some.
One more how do you force a reboot.
i tried C:\windows\rundll.exe user.exe,exitwindowsexec doesn't work in ME
C:\windows\rundll.exe user.exe,exitwindows does shut it down but not what i want
thanks for the help.
pjw62
15th October 2001 18:42 UTC
You could have the program check the last modified stamp in the HTTP header when downloading.. or download a preliminary text file with the version numbers in. I personally hate installers like 'Wise' that you download once and then have to connect to the internet to download the install files. It is extrememly frustrating when the internet is unavailable at later times for whatever reason.
prodangle
15th October 2001 18:58 UTC
Originally posted by pjw62
You could have the program check the last modified stamp in the HTTP header when downloading.. or download a preliminary text file with the version numbers in. I personally hate installers like 'Wise' that you download once and then have to connect to the internet to download the install files. It is extrememly frustrating when the internet is unavailable at later times for whatever reason.
It would need to get the version number of the component, as the last modified stamp doesn't really mean anything. According to Edgewize it's damn difficult to compare the version number of DLL's on your system to numbers specified in a script (saying which DLLs should be there, and downloading if neccessary) so that's why his component doesn't do it.
If this could be made to work, downloading only the parts of programs the user hasn't already got could save most folks a lot of download time though.
phre0n
15th October 2001 19:11 UTC
That is the effect I am going for. Just to get the newer parts to something they may already have. I made one that used the reading and writing of ini files. I made an ini in the folder and put the version numbers and downloads they may need in it. Then had it get the ini first then compare to the one they already have. Then download it if it was different. My NSI is a cluster f*ck that way but it seems to be doing fine. Thanks for all the help. But I still can't figure how to force a reboot.
Also has anyone thought of making NSIS cross platform that would be nice for linux users like myself.
pjw62
15th October 2001 19:13 UTC
well ermm, what about writing a PERL/PHP/C proggy that the user can install on their webserver that returns the version of a given dll ? (From the version section of the pe).
it was only a suggestion :)
Pomflain
15th October 2001 19:23 UTC
Will it do the following?
Does it allow you to do an easy check for the file and then give you the option to update? For example, when you run the installer, it will check the specified URL for a filename and then return the filesize and timestamp so you can comare it to the current installer. Something like that, then you can inform the user about the new version if it is detected.
If not does anyone have some scripting that will do that? I think it would be kind of cool.
liquidmotion
16th October 2001 20:48 UTC
you can always have the installer download a .txt file with the dll versions in it, check the file, then download if necessary.
bye,
Pomflain
17th October 2001 23:21 UTC
There's no dll versions...
I want to be able to check a file on the site, the actual installer itself.
phre0n
17th October 2001 23:28 UTC
That is what i had to do with the ini file.
make an ini that goes with the program.
make it look something like this
[program_name]
version=1.1
then make a section called update.
have it down load the ini
compare version's string with the ini that is already with it.
if diferent have it download
there you have it.
if some one really wants i am good with perl i will right a script to check dll versions and have it where you could run it via cgi.
thanks
phre0n
http://linux.ppp0.com <- Still down
prodangle
18th October 2001 01:58 UTC
According to Edgewise, the problem comes with having NSIS compare a DLL version already on the user's system to a given number. Apparently it's easy to compare 2 DLLs on the system against each other, but not one against a version number. In his words (I'm sure he won't mind me posting this),
Right now, there is no simple way to check DLL versions against a number or string that you would put in a script. The version-resource API was designed from the ground up to frustrate programmers, it seems, and its a little trickier than I'd like it to be. So the short answer for you is, no there's no way to do this now.
Edgewize
18th October 2001 08:11 UTC
Hrm, I must correct myself here. What I was expressing before was a combination of frustrations with the Win32 API, Justin's EXEHEAD script parsing, and the CompareDLLVersions command. With the new numeric variables, this should be quite feasable.
But since Justin is on the upside of another manic NSIS swing, I'm leaving the code alone until he cools down a bit ;)
justin
18th October 2001 08:37 UTC
Originally posted by Edgewize
Hrm, I must correct myself here. What I was expressing before was a combination of frustrations with the Win32 API, Justin's EXEHEAD script parsing, and the CompareDLLVersions command. With the new numeric variables, this should be quite feasable.
But since Justin is on the upside of another manic NSIS swing, I'm leaving the code alone until he cools down a bit ;)
Heh I am so obsessive. Here's what's coming in 1.60 (due this weekend):
- Improved CopyFiles some (added /SILENT option)
- Added FindFirst, FindNext, FindClose.
- Added FileOpen, FileClose, FileSeek, FileRead, FileWrite (text file manipulation yay)
- Improved GCC compatibility (using some of Nels' suggestions)
- Made config.h options more granular.
- Cleaned up lots of code.
- Broke lots of code, I'm sure.
Right now with all features enabled, the exehead is exactly 36kb. Having the file i/o and directory scanning code is nice, too.
There will probably be more suprises as well.
-Justin
spanky
18th October 2001 08:48 UTC
ahem. not to sound gay or anything but..
Justin, I love you.
prodangle
18th October 2001 09:04 UTC
What I was expressing before was a combination of frustrations with the Win32 API, Justin's EXEHEAD script parsing, and the CompareDLLVersions command. With the new numeric variables, this should be quite feasable.
But since Justin is on the upside of another manic NSIS swing, I'm leaving the code alone until he cools down a bit ;)
Oh... sorry folks :D :D
phre0n
18th October 2001 23:31 UTC
I am looking forward to the text file manipulation that will be nice. And help a bunch in my work. keep up the good work justin.
thanks,
Michael Garcia
http://linux.ppp0.com <-- Damn thing is still down.
Someonebutnotme
19th October 2001 21:07 UTC
heh, Justin's on a role with nsis updates again. its nice.
prodangle
20th October 2001 15:54 UTC
Now this looks exciting:
from NSIS 1.60 beta whatsnew-
...
Added FileOpen, FileClose, FileSeek, FileRead, FileWrite (text file manipulation yay)
...
Removed CompareDLLVersions, CompareFileTimes, added GetDLLVersion, GetFileTime, GetDLLVersionLocal, GetFileTimeLocal, and IntCmpU.
...
Edgewize
20th October 2001 21:39 UTC
Edgewize
Well that solves the DLL version-test problem for good, I think :)
GetDLLVersion on the downloaded file, GetDLLVersion on the Windows\System file, compare with IntCmpU, and replace as necessary.
I like the direction NSIS scripting is headed :D