Jump to content

New Utility coming up... if you guys desire it


Recommended Posts

Hey everyone, I need your thoughts and opinions on this project I am working on.

The name of the program will most likely be, lame as I am, "BeUpdated". As the name indicates, it will um.. be updated. :D

Here's basically how the program works:

There will be a file list on an internet server. (which I will keep updated) Before you make your unattended installation CD/DVD, you run the utility in preparation mode, and choose which programs you'd like BeUpdated to keep updated for you. (The file list will contain dozens of programs, but you don't have to use them all, of course, only the ones you want) Then it will (optionally) download these files, and you burn them, together with BeUpdated. Then, during T-13 or in RunOnce mode or in GuiUnattended mode, or wherever you feel like installing your software, you run BeUpdated. When it is run, it will again download the file list. (on the remote server) If you chose to download those files in preparation mode, BeUpdated will check its file list against them, and if they are up to date, it will just install them. If they are not (or you chose not to download them), BeUpdated will download the updated version, and then install it. This way, even if your CD is not entirely up to date, your installtion can be. You can also save space, by not keeping the actual files on the CD, just downloading them during installation. That's the thought behind this.

Of course, the file list will only contain shareware and freeware. There will be no possibility to download full versions of programs that requires registration. (except for a few, like AVG Antivirus)

For those who are interested, I've created a flowchart of the installation program... although it was made more for myself. (I'm somewhat clumsy when it comes to programming -- I never really know which parts to do first and which to do last -- so this helps me to put the program together in the right order) It sorta gives you a wrong image of how the program works though. The flowchart suggests a synchronous flow; this program, however, is highly asynchronous in the way it works. I'll show you the (current) configuration file to let you know what I mean:

<?xml version="1.0" encoding="utf-8"?>
<BeUpdatedConfiguration version="1.0">

<!-- NOTICE
 All tags in this file are case sensitive, and must not be
 modified. Please only change the values between the ""
 characters of the value attributes.
-->

<RemoteFileList>

 <!-- USE REMOTE FILE LIST
 If this value is set to 1, then the program will use
 the value specified in URI to download a remote
 file list. If set to 0, it will use the local file,
 filelist.xml, which then must reside in the same
 folder as the program. If this file is not present,
 and the value is set to 0, or the remote download
 fails, and it is not present, the program will raise
 an error, and end.
 -->
 <Use value="1" />

 <!-- URI
 This value specifies the location of the remote file
 list. If you wish to use DarkPhoenix' updated file(s),
 just leave this value alone. This value can contain
 URIs to more than one file, and each file is to be
 separated by a '|'. (vertical pipe) Since the program
 currently only supports the http protocol, it will be
 added automaticlly, so don't have it here.
 -->
 <URI value="localhost/filelist.xml" />

 <!-- RETRIES IF DOWNLOAD FAILED
 This value specifices how many times the program should
 try to download the remote file list file before it
 should give up and resort to the local file. (which will
 most likely be out of date) If this value is set to less
 than 0, it will retry until it succeeds. (not recommended)
 The recommended value for this is a number between 2
 and 20.
 -->
 <RetriesIfFailed value="5" />

 <!-- TIME TO WAIT BETWEEN RETRIES
 This value specifies how long the program should wait
 before it will retry to download the remote file list
 in seconds. This value should not be any less than 30
 seconds, to avoid load on the server, and because if
 the file is unavailable, it will most likely take at
 least 30 seconds until it is ready. If this value
 is set to less than 30, the program will override it,
 and just set it to 30.
 -->
 <WaitTimeBetweenRetries value="30" />

</RemoteFileList>

<ProgramDownloads>

 <!--
 TRY TO REACH A BANDWITH OF
 This program will download and install files
 asynchronously for most efficiency. Because of this,
 it will try to reach a certain amount of kb/s in
 order to be as efficient as possible. This is done
 by starting the downlaod of one file, letting it run
 for a while, compare it's download speed with this
 value, and if it not within reasonable reach of this
 value, the program will start the next download. Then
 after a while, it will again test the speed, and this
 it will repeat until the download speed is within
 reasonable reach of this value. If the download speed
 exceeds this value, no action will be taken to reduce
 it. This is a minimum value, not a max value. If it
 is set to less than 1, it will not be cared for, and
 the program will only care for the MaxSimultaneous
 value.
 -->
 <TryReachBandwidthOf value="100" />

 <!--
 MAX SIMULTANEOUS DOWNLOADS
 This value indicates how many programs the programs
 will try to download simultaneously. This overrides
 the value set in TryReachBandwithOf. If the bandwith
 has not been reached, but the program is already
 downloading the amount of files set here, it will not
 try to download more. If this value is set to less
 than 1, there is no maximum amount of simultaneous
 downloads.
 Combinations of these two values can have the
 following scenarios:
 
 TryReachBandwidthOf > 0, MaxSimultaneous > 0:
   The program will try to reach the
   TryReachBandwithOf value, but stop if the
   amount of files would be more than
   MaxSimultaneous.

 TryReachBandwidthOf > 0, MaxSimultaneous < 1:
   The program will try to reach the
   TryReachBandwithOf value, and will do so by
   downloading more files simultaneously until
   it is reached. (or there are no more files
   left on the list to add)

 TryReachBandwidthOf < 1, MaxSimultaneous > 0:
   The program will always download the amount of
   files in MaxSimultaneous. (unless there are
   less files left to download, of course)

 TryReachBandwidthOf < 1, MaxSimultaneous < 1:
   No limits set, all files on the list will be
   downloaded simultaneously. (not recommended)
 -->
 <MaxSimultaneous value="10" />

 <!-- RETRIES IF DOWNLOAD FAILED
 This value specifices how many times the program should
 try to download the program before it should give up
 and resort to the local file. (if it exists) or skip
 the program in question. If this value is set to less
 than 0, it will retry until it succeeds. (not
 recommended) Recommended value for this is a number
 between 2 and 20.
 -->
 <RetriesIfFailed value="2" />

 <!-- TIME TO WAIT BETWEEN RETRIES
 This value specifies how long the program should wait
 before it will retry to download the program in
 seconds. This value should not be any less than 30
 seconds, to avoid load on the server, and because if
 the file is unavailable, it will most likely take at
 least 30 seconds until it is ready. If this value
 is set to less than 30, the program will override it,
 and just set it to 30.
 -->
 <WaitTimeBetweenRetries value="60" />

</ProgramDownloads>

<!-- SILENT MODE
 If this value is set to 1, then the program will show a GUI
 where the file download progress will be shown and which
 programs that have been installed will be shown. Since some
 people think that an unattended installation should not show
 any kind of progress or dialogs, this setting has been
 included to make it possible to not show any dialogs. Error
 messages will still be shown.
-->
<Silent value="0" />

</BeUpdatedConfiguration>

As you can see, it will (possibly) download more than one program at once. (although it will never install more than one program at a time) To be most efficient, this program will do its best to utilize your whole network speed, and the fact that windows can do multithreading.

This program will be made using the .NET Framework. Why? Cause I won't bother doing it the hard way. :) The .NET Framework is maybe cluttered, but it lets me do stuff quick, it works fine, and since most PCs using XP have enough RAM and processor speed, the fact that it uses .NET Framework shouldn't matter too much. This not a game that needs super fast calculations. If you don't like the .NET Framework and do not want to install it, you cannot use this program either.. but nobody forces you to.

I'll show you my sample filelist.xml too, in order to give you an idea how that works.

<?xml version="1.0" encoding="utf-8"?>
<BeUpdatedFileList version="1.0">
<FileEntry token="GetRight">
 <Name>GetRight</Name>
 <Size>3048387</Size>
 <MD5Hash>EE4D54C9F9F3168BF343A154B8C1BE1</MD5Hash>
 <Version>5.1.0</Version>
 <URI>http://www.xright.com/getrt510.exe</URI>
 <FileName>getrt510.exe</FileName>
 <SilentSwitches>/s</SilentSwitches>
 <VerySilentSwitches>/s</SilentSwitches>
</FileEntry>
</BeUpdatedFileList>

During my testing phases, I only deal with GetRight.. but when the program is done, this file will contain many more programs. When you run the preparation program, there will be another file that stores the tokens only. Then, when the installation part comes, it will only care about the tokens you picked when downloading and installing programs. SilentSwitches will be those switches that may show up a progress bar or something, but still be unattended. The VerySilentSwitches will hide everything. I figured I'd do it this way, since some people prefer the former, and some the latter.

Finally, there are some command-line arguments you can use against BeUpdated. Here:

/conf <path-to-configuration>

This can be used to for instance have the configuration file on a floppy disk or something, in order to change it without updating your CD.

/log <path-to-log>

If you wish to log how things are going, this is the one to use.

/silent <1 or 0>

This overrides the configuration file. No idea why I added this.

Wow, that was a lot of text.. well, if you've read it all, you're probably interested.. so tell me guys.. what do you think? Should I complete this? Would anyone use it? Does it seem useful? Do you have any suggestions or improvements that I should add? More options maybe? Any thoughts? Do tell me. :rolleyes:

Link to comment
Share on other sites


There will be a file list on an internet server. (which I will keep updated)

I just don't know if I really see that point. Sorry.

What exactly does it do? That was too much to read, so...yeah....summary? :)

Link to comment
Share on other sites

It sounds like his idea is to keep a list of applications and version numbers online, and then have a program (BeUpdated) download some (or all) of those applications and create a Windows installation CD that will automatically install the (hopefully current) applications downloaded at the beginning. Then, during the install, it looks to see what programs you chose to put on your CD and installs any updated versions that have been updated. The idea, of course, is to have your installations as up-to-date as possible without having to burn a new CD every time a new version of XYZ application is released.

The problems, of course, are 1) How can we trust this list? and 2) How will the list be maintained?

After all, couldn't you change the list to surreptitiously install a, say, key-logging program?

Link to comment
Share on other sites

What exactly does it do? That was too much to read, so...yeah....summary? :D

I'll try. :)

Most programs update now and then, right? You put (in my example) GetRight 5.1.0 on your unattended CD and in a few weeks or months, GetRight 5.2.0 is out, and you need to update your CD.

What my program does is to check if the newest version of a program is on your CD, and if so, install it. If a newer version has been released (I'll do my best to keep this list maintained, or maybe get someone to help me as well) BeUpdated will download it to your temp folder, and install the newer version instead. This way you can keep your installation updated without actually having to make a new CD for every program update out there. I'll try to include as many programs as possible on this list, ranging from Mozilla, Firefox, Opera, etc. to things like AVG Antivirus, 7Zip, Daemon Tools, etc., so that most people would find it useful.

Another way that it can be useful is that you can entirely leave the files out of the CD, and have BeUpdated always download the version it has on its list, keeping the amount of files you need to have on your CD to a minimum, thus leaving space for other files, that are not free/shareware by nature (like Office, Photoshop, etc., which this program will not, naturally, include)

Hope that clarifies some of my idea... :rolleyes:

Link to comment
Share on other sites

1) How can we trust this list? and 2) How will the list be maintained?

After all, couldn't you change the list to surreptitiously install a, say, key-logging program?

1) Well, yes, I could. I won't, but I could. If that was my intention, I could just build that into the BeUpdate executable, now couldn't I? Just to mention it, so could GreenMachine with his XPCreate and nuhi could basically have a key-logger included in his nLite.exe file. But they don't. And why would I? If you see the configuration file, you could choose not to trust me, and keep a list of your own. I'll be using a method similar to the one GreenMachine uses. You don't have to trust me, but I can promise you that I won't do something like that.

2) I'll try to keep it updated myself, (like GM) but if it becomes too much of a hassle, I'll maybe let someone else help me as well. In any case, this program will have a file list more updated than the one your CD has. Of course I can't sit all day updating it, but I'll update it at least twice a week when I'm ready.

Link to comment
Share on other sites

@DarkPhoenix

Please go ahead with your idea, I'm interested. I don't know about the others here, but I'm a big-time user of shareware/freeware (which seem to release a new version every 4 days) - and your app seems like one which has a lot of potential to help in these circumstances.

Link to comment
Share on other sites

If new versions of programs have different unattanded command then what happen? can u also include the unattanded command with the list? and to reduce ur work let the list be a public project and u or some other person will be moderator then if anybody want to add something to the list then u will review and add to the list ( just to lighten ur work).

Link to comment
Share on other sites

If new versions of programs have different unattanded command then what happen? can u also include the unattanded command with the list?

The switches the programs will need will always be a part of the file list, so that it will always run smoothly.

In any case, there's been someone who wants me to do it, so I guess I will, after all. Maybe more people will use it once it's done. heh. I am allowed to hope, right? :)

Link to comment
Share on other sites

Very good idea :)

<SilentSwitches>/s</SilentSwitches>

because there not so much installation programs, it will be easyer to define something like

<SilentMode>
<InnoSetup>/s</InnoSetup>
<Other installation prog>xxx</Other installation prog>
</SilentMode>

with <SilentMode> independant of the applications to install.

Or something reversed, i.e. :

Level n : Installation programs list tag
Level n+1 : Installation program nr i
Level n+2 : Silent switches tag
Level n+3 : Silent switches values
Level n+2 : Very Silent switches tag
...

Level n : Appication list tag
Level n+1 : Application nr x
Level n+2 : Installation type tag
Level n+3 : Installation type value (e.g. InnoSetup)
...

Link to comment
Share on other sites

What I am looking at doing is something along those lines (well, not really)

I was going to do a 3 CD set

Disk 1 (WinXP + SP + hotfixes + drivers) unattended

Disk 2 (MSO2k3 + updates) unattended

Disk 3 (install.bat, winzip, shockwave, etc) unattended

While each disk would have to be recut whenever changes need to be made, it would be simple changes... add additional files, edit the install bat, ISO it, and burn.

If Daemon tools was installed, disk 2 and 3 wouldn't even need to be burned (if on LAN)

Link to comment
Share on other sites

@mdes: I understand the first part of your idea, but the Level n and Level n+1 and so forth escaped my comprehension...
It is just a matter to describe dependance (inclusion) of data and tags :)
<level n>
<level n+1>
...
</level n+1>
</level n>

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...