-
latest version of the dcuhelper.exe utillity.
So if you want to add update checking support to your program, you can do so by creating a .dcupdate file in your program directory, and distributing this dcuhelper.exe program with your program. When you or the user wishes to check for updates, you simply execute this utility (e.g. ShellExecute) and it will:
- Locate the DcUpdater installed on the user's computer and invoke it for your program (and any plugins your program might have).
- OR if the DcUpdater tool is not installed, it will do a quick update check and let them know if a new version is available, and bring them to the web page where they can download and install it if so.
Size: 117k (could be compressed if you like to make it even smaller).
Download Latest: https://www.donationcoder.com/Software/Mouser/Updater/downloads/dcuhelper.zip
The dcuhelper.exe tool can also be used to "register" your program with DcUpdater so that it will appear in the default list of installed programs known by DcUpdater which can be checked for updates.
Version info:
- v1.10.01 - July 12, 2011 - if launched as a hidden window (common in old versions of dcuhelper) the new dialog would not display; thanks worstje
- v1.09.01 - July 2, 2011 - now bypasses cache explicitly when checking for version update -- could cause old files on some pcs; thanks wortje
- v1.08.01 - Mar 23, 2011 - completely new dialog with buttons to open web pages shown when update detected; support for showing whats new
- v1.07.01 - Jan 5, 2011 - improved the -u unregister parameter; added icon to dcuhelper to improve message boxes (thanks Worstje)
- v1.06.01 - Jan 4, 2011 - added overide and redirect options in versioninfo file (see readme)
- v1.05.01 - October 8, 2010 - added better help
- v1.04.01 - Decmeber 30, 2009 - added new built-in quick web version checking into dcuhelper itself; see https://www.donationcoder.com/forum/index.php?topic=9607.msg189826#msg189826 for more info
- v1.03.01 - August 1, 2008 - added -t commandline option; fixed bug in opening dcupdater page; improved dialog on updater not installed; if no commandline options are passed it will try to load .dcupdate file in current dir and check for updates
- v1.02.02 - September 8, 2007 - added a few more easier exported funcs.
- v1.02.01 - September 8, 2007 - added dll exports, improved help; opens program webpage if updater not installed; added version info to usage display (invoke with no arguments).
- v1.01.01 - August 16, 2007 - first public release
-
This is early release without much documentation, so you'll surely need some initial help from me getting everything to work, so don't hesitate to ask.
-
I need to say a bit more about using DcUpdater to add update checking support to your programs/downloads:
- There are a lot of other update checking tools (commercial + free) -- hey we should start a thread in dev corner listing all the ones we can find.
- Most of them either compile into your program, or are a dll you load into your code and invoke.
- Some are standalone executables that your program can launch.
The DcUpdater tool is most similar to #3, in that it is a standalone update checking executable, which does not have to be compiled into your code.
However where it differs from other such tools is that the full update checker tool is not really meant to be included with each individual program that uses it.
Instead, the intention is for the DcUpdater tool to be installed like any other application on a users computer, and provide a centralized update checking system for many programs.
That is, the user installs DcUpdater to their system, and other programs can "invoke it" to check for updates. You can see this at work in my software -- so far 8 of my programs know how to invoke the DcUpdater tool to check for updates.
The tiny 100k dcuhelper.exe tool is not the updater itself(!) It's a helper utility meant to be packaged in your program, whose only job is to find and communicate with the main big DcUpdater tool installed on the user's computer, OR help the user to download and install it if it's not already (if they want to).
What this means to you as a developer, is that your users will have to go through an extra step if this is the yours is the first program they have installed that uses the DcUpdater tool and they haven't installed it yet. They may find this confusing and irritating.
So probably you want to go find yourself an update checking solution that is self-contained and you probably don't want to use DcUpdater.
However, if you do want to use it, i'm here to help. It may be a good match for you if one or more of the following is true:
- You are a programmer who hangs out at DonationCoder.
- You have a bunch of tools, each of which needs update support.
- You use plugins or other user-written content and want an easy way to check for updates for lots of independent items.
- You like the idea of not bloating up each program with its own update checking code.
-
ps. you can use dcupdater and dcuhelper to add update support to pure data/file packages that contain no executable component at all -- just provide a shortcut that invokes the dcuhelper.exe tool.
-
Oh wow just in time!
I was considering writing your dcupdater invoke code as Autohotkey code to include, but this even easier :)
and by the way mouser i've started creating that document we talked about comparing various updater programs during lunch hours. I hope to have it finished next week.
-
What happens:
I have the dcuhelper.exe in a subfolder "dcuhelper" inside my program installation folder (d:\scripts\PutAside01).
I also made svd-putaside.dcupdate in the program folder.
My program runs the command if it hasn't been run before:
d:\scripts\PutAside01\dcuhelper\dcuhelper.exe -r "PutAside" "d:\scripts\PutAside01"
a commandline window flashes up with no text in it, and my program is not recognised by dcupdater.
If I run svd-putaside.dcupdate then dcupdater comes up for my program only (not for the other installed programs).
What i was expecting:
I was expecting that by running the dcuhelper program it would add my program to the list of all the other programs recognised by dcupdater. if this was not the case then I thought the first time I would run my .dcupdate it would also register it.
I don't fully understand what "program_labelname" should be, should this correspond with the filename part of my dcupdate file, should it correspond to the local -> label value or can it be anything (if so what's the use?)
-
I don't fully understand what "program_labelname" should be, should this correspond with the filename part of my dcupdate file, should it correspond to the local -> label value or can it be anything (if so what's the use?)
yeah sorry i should have explained what that was used for.. it's just used to name the file that is created in, for example:
C:\Documents and Settings\All Users\Application Data\DonationCoder\DcUpdater\RedirectFiles\PROGRAM_LABEL.dcupdateredirect
so the answer is it doesn't really matter what you pass, as long as it's unique to other programs.
getting back to your comment about running it with -r:
a commandline window flashes up with no text in it, and my program is not recognised by dcupdater.
the -r says to create that file above, it does nothing else. That file just allows DcUpdater to find your program when DcUpdater is run independently (like from Start Menu), rather than being launched from within your program. You should call ShellExecte with the SW_HIDE (http://msdn2.microsoft.com/en-us/library/ms647732.aspx) parameter so that the user doesnt see the blank window pop up.
You can make the -r call every time your program starts, or just once, OR you can use the -ri commandline parameter mode with dcuhelper to create that file each time you invoke it to check for updates.
To actually call the updater to check for updates from your program you use the -i or -ri commandlie options for dcuhelper.
Does that clarify things a bit?
-
Ah right it now checks for updates. Many thanks.
quick glance
if I run dcuhelper with -ri options it does run DCUpdater and checks for my program, but if I run DCUpdater on itself my program is not in the list.
The way I still think it should work is that you register it, after this act the registered program is part of the regular update cycle. At the moment it's not.
I'll look at it again on the monday.
-
After the -r call, launching DcUpdater by itself should list your program in the complete list of all known stuff that can be updated. If it doesn't, check to see if the file "C:\Documents and Settings\All Users\Application Data\DonationCoder\DcUpdater\RedirectFiles\PROGRAM_LABEL.dcupdateredirect" is being created, and if the contents of that file point to the directory of your program.
-
An example of suggested way to invoke update check from your program using dcuhelper.exe, from a C++ program:
ShellExecute(NULL,"open",dcufullpath,comlineargs,NULL,SW_HIDE);
where:
- dcufullpath is the full path to the dcuhelper.exe you installed with your program, e.g.: C:\Program Files\ProcessTamer\dcuhelper.exe
- comlineargs is: -ri ProcessTamer "C:\Program Files\ProcessTamer" "Warning" -show
-
ps.
If you use Inno Setup (http://www.innosetup.com/), here is a line you can add to your [Run] section which will use the dcuhelper.exe to automatically register your newly installed program with the updater so the updater itself will know how to check for updates to your program, even before the first use of your program:
Filename: {app}\dcuhelper.exe; WorkingDir: {app}; Description: Create Update Check Helper File..; Flags: nowait runhidden; Parameters: "-r PROGRAM_LABEL ""{app}"""
Basically this just invoked the dcuhelper to create the file described above, silently at end of install (user is not prompted). Note that this doesnt invoke an update check and doesn't require the updater tool to be installed on the user's computer. It just creates the dcupdateredirect file so that the dcupdater tool can find it if/when it's installed.
-
Another fun tip for Inno Setup users:
What if you want to add a "Check for Updates" item to the start menu group of your program?
Just add this one line to your inno script, in the Icons section:
- Name: {group}Check for updates; Filename: {app}\dcuhelper.exe; WorkingDir: {app}; Parameters: "-ri PROGRAM_LABEL ""{app}"" ATTENTION -show"; IconFilename: {app}\YOUR_MAIN_PROGRAM.exe; Flags: runminimized
(you can leave off the IconFilename if you dont want to give the shortcut the icon of your main program).
When the user chooses the "Check for Updates" item from the start menu group, dcuhelper.exe will find and invoke the DcUpdater tool or show user how to install it if it isn't installed yet.
NOTE: this gives you a complete way to add update checking to your program without modifying the actual program at all. you could even use this technique to add update checking to a package you make (which could contain multiple updatable components), consisting of programs you didn't compile yourself.
-
After the -r call, launching DcUpdater by itself should list your program in the complete list of all known stuff that can be updated. If it doesn't, check to see if the file "C:\Documents and Settings\All Users\Application Data\DonationCoder\DcUpdater\RedirectFiles\PROGRAM_LABEL.dcupdateredirect" is being created, and if the contents of that file point to the directory of your program.
-mouser
There is no C:\Documents and Settings\All Users\Application Data\DonationCoder on my XP system.
I've reinstalled 1.21.01 but after running dcupdate it still hasn't appeared.
-
justice, rather than try to do tech support here let's talk in irc channel or via email and then we can post the solution here.
-
Right the issue is now solved with both a bugfix in dcuhelper and code changes in my code. PutAside is now the first third-party app to support DcUpdater :Thmbsup:
For AutoHotkey coders feel free to use the following subroutine:
Gosub,EnableAutoUpdate
EnableAutoUpdate:
; Register with DcUpdater and check for updates.
; When no updates are found nothing is displayed.
; make sure the dcuhelper.exe is in a subdirectory called 'dcuhelper' of this script's location.
cmdParams = -ri ;r = register app, i = check for updates
uniqueID = yourprogramidhere ;anything allowed
dcuHelperDir = %A_ScriptDir%\dcuhelper
IfExist, %dcuHelperDir%\dcuhelper.exe
{
OutputDebug, %A_Now%: %dcuHelperDir%\dcuhelper.exe %cmdParams% "%uniqueID%" "%A_ScriptDir%" . -shownew -nothingexit
Run, %dcuHelperDir%\dcuhelper.exe %cmdParams% "%uniqueID%" "%A_ScriptDir%" . -shownew -nothingexit,,Hide
}
return
-
very nice! thanks for sharing that justice :up:
-
; make sure the dcuhelper.exe is in a subdirectory called 'dcuhelper' of this script's location
-justice
If i change the "dcuHelperDir" to %A_ScriptDir%, it won't work? dcuhelper can't be in the script's dir?
Thanks for "outputdebug", i didn't know that existed! :D
-
it doesnt have to be in a subdirectory, i think he was only saying that if his script code specifies its in the subdirectory, then it has to be. you can put it wherever you want as long as you call it properly.
-
Like mouser said. My reasoning is that I like to put files that the user doesn't have to know about out of the way so they don't accidentily click on it.
-
this is fantastic! thanks mouser & justice.. :Thmbsup: just a small request: put a downloadable file as well.. :)
-
Lanux128, I created a small AHK application that you can use to check for updates for itself.
http://www.amasan.co.uk/downloads/dummy/
-
thanks Justice, i'm hoping to add DCU support very soon.. :Thmbsup:
-
Hmmm, i just tried to add DCu support to my program Subdude, but i can't get it to work.
First, isn't it possible to add a "Copy" method which simply overwrites an .exe file ?
Then, i tried the unzip method and tried to check for updates. From subDude itself, it told me that the program needed update only once. The other times, nothing. When i run dcupdater, it tells me that subdude need udpates, the download works then it does nothing. If i click "UPDATE NOW" again, it downloads the file again, and so on. The zip never gets unzipped.
-
send me your .dcupdate file and ill check it and see if i can spot what's wrong ([email protected]).
First, isn't it possible to add a "Copy" method which simply overwrites an .exe file ?
yes i should add such a thing i suppose.
-
Two people have had a problem because they are specifying:
<UpdateMethod>Unzip</UpdateMethod>
DcUpdater treats this field in a case-sensitive way so it needs to be
<UpdateMethod>unzip</UpdateMethod>
I think i shall change it to be case-insensitive and add an error if a non-recognized method is specified.
-
I wanted to describe one thing i will be adding very soon to the dcuhelper.exe utility.
Right now, when your program launches it to check for updates, it finds the dcupdater tool installed on the user's computer and invokes it.
If the main dcupdater tool is not installed, then dcuhelper will tell the user about it, and open the dcupdater web page for them so they can install it if they want.
I'm going to change this slightly so that if the dcupdater tool is not found, it will display a message explaining this to the user and offer them 3 choices:
1. Open the dcupdater web page to learn more about the updater and download it.
2. Open the program's own web page (the program they asked to check for updates for) so they can manually look for an update.
3. Cancel and do nothing.
In this way, even users who do not want to use the updater can be redirected to the program website to check for updates manually.
-
I've uploaded a new version of dcuhelper.exe:
from readme:
//---------------------------------------------------------------------------
This tiny helper utility will let your program check for updates by invoking the
isntalled DcUpdater tool on their computer, or explaining to them how to get it
and directing them to the DcUpdater web page (and your program's web page)
if it's not installed.
For help, more examples, sample scripts, see this thread on our forum:
https://www.donationcoder.com/forum/index.php?topic=9607.0
Main DcUpdater web page:
https://www.donationcoder.com/Software/Mouser/Updater/index.html
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
Version info:
v1.01.01 - August 16, 2007 - first public release
v1.02.01 - September 8, 2007 - added dll exports, improved help,
opens program webpage if updater not installed.
added version info to usage display (invoke with no arguments).
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
1. To register your program's directory with the system updater:
dcuhelper.exe -r "program_labelname" "full_path_to_app_directory"
2. To invoke the updaterwith various commandline options:
dcuhelper.exe -[r]i "program_labelname" "full_path_to_app_directory" "missingupdatertitle_or_._for_silent" [commandline options to be passed to updater]
e.g. if they explicitly ask to check for updates, do so and report results no matter what:
dcuhelper.exe -ri "ProcessTamer" "C:\Program Files\ProcessTamer" "Error"
e.g. or if you want to check for updates at startup silently (dont report if no update found):
dcuhelper.exe -ri "ProcessTamer" "C:\Program Files\ProcessTamer" "."
3. To UNregister your program's directory with the system updater (not really necessary):
dcuhelper.exe -u "program_labelname"
Note: program_labelname is just a unique arbitrary label that is used to create the redirect files (see below).
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
How does dcuhelper.exe register your program with the updater?
It creates a file:
%COMMONAPPDATA%\\DonationCoder\\DcUpdater\\RedirectFiles\program_labelname.dcupdateredirect
Which points to your program's directory.
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
You can also load the dcuhelper.exe from within your program as if it were
a dll, and invoke it that way (and check for updater path/existence):
extern "C" __declspec( dllexport ) int DLLMainCall(int argc, char** argv); // returns 0 on success
extern "C" __declspec( dllexport ) char* DLLGetDcUpdaterPath(char *appdir); // blank on not installed
//---------------------------------------------------------------------------
-
If the main dcupdater tool is not installed, then dcuhelper will tell the user about it, and open the dcupdater web page for them so they can install it if they want.-mouser
mouser, what if the dcupdater tool is installed in a custom folder? i get the message box saying it's not installed..
-
mouser, what if the dcupdater tool is installed in a custom folder? i get the message box saying it's not installed..
i'll be fixing this soon.
-
thanks mouser.. :Thmbsup:
-
here's some code to drop into your project to call the dcupdater
(this is borland builder code. adjust for your compiler)
// store application path
AnsiString AppPath = ExtractFilePath(Application->ExeName);
// fix working path to AppPath
SetCurrentDir(AppPath);
// dcupdate filename without extension
AnsiString AppName = "<yourappname>";
// append path with dcuhelper file
AnsiString dcufullpath = (AppPath + "\\dcuhelper.exe");
// create command line arg string
AnsiString comlineargs = ("-ri " + AppName + " \"" + AppPath + "\" \"warning\" -show");
// run dcupdater tool
ShellExecute(NULL,"open",dcufullpath.c_str(),comlineargs.c_str(),NULL,SW_HIDE);
-
Thanks for posting that seedling :up:
-
I've got some weird behavior with dcuhelper that we talked about in IRC. But I thought I'd post about it here in case you needed more information on what was happening.
I've been getting dcuhelper to work with my Universe (http://universe.deozaan.com/) project. Following along with the methods mentioned in this thread, I've placed dcuhelper in it's own directory inside the application directory, and I call dcuhelper.exe with a batch file in the Universe directory. Directory structure is like so:
Universe\dcuhelper\dcuhelper.exe
Universe\universe.dcupdate
Universe\update.bat
The batch file contains the following:
dcuhelper\dcuhelper.exe -ri "Universe" "%CD%" "Attention"
Running this batch file on a PC that doesn't have DcUpdater installed brings up a dialog box that says something to the effect that "DcUpdater isn't installed but is required to check for updates. The Universe website and the DcUpdater website will now be opened in your browser."
Then it opens up the Universe website (as defined in the .dcupdate file) and an error 404 for the DcUpdater. The URL it opens to is https://www.donationcoder.com/Software/Mouser/Updater&app=Universe (https://www.donationcoder.com/Software/Mouser/Updater&app=Universe). I'm not sure why it includes the information about the application, but all it needs to do is change the & to an ? and it works properly, redirecting to https://www.donationcoder.com/Software/Mouser/Updater/?app=Universe (https://www.donationcoder.com/Software/Mouser/Updater/?app=Universe)
The interesting thing about this is that if I supply the wrong path or no path to the .dcupdate file, it only opens the site to download the DcUpdater, with the following (working) URL: https://www.donationcoder.com/Software/Mouser/Updater (https://www.donationcoder.com/Software/Mouser/Updater). It doesn't open the Universe site because it obviously can't find the site if it doesn't have a .dcupdate file to read.
-
i will fix this in next day or two and then try to implement your other ideas (https://www.donationcoder.com/forum/index.php?topic=14265) through august.
-
dcuhelper.zip has now been updated, download from here: https://www.donationcoder.com/Software/Mouser/Updater
v1.03.01 - August 1, 2008 - added -t commandline option
fixed bug in opening dcupdater page
improved dialog on updater not installed
if no commandline options are passed it will try to load .dcupdate file in current dir and check for updates
-
Very nice! It's much improved and works like a charm!
-
Here's an excerpt of AHK code from my post-compile script that I use to automatically generate the necessary trout.dcupdate and versioninfo.xml files for my Trout audio player. You will need Skan's FileGetVersionInfo() (http://www.autohotkey.com/forum/post-233188.html&sid=e8c09f62e77584d74accfbc311378288#233188) function. Obviously, change paths and other specific information to suit your app and environment.
; Get verion and define paths.
AppName := "Trout"
Version_String := FileGetVersionInfo( A_ScriptDir . "\" . AppName . ".exe", "FileVersion" )
Version_Info_Dir := A_ScriptDir . "\setup"
DcUpdate_Info_Dir := A_ScriptDir . "\setup\trout"
; Generate other needed bits.
myTime := A_Now
FormatTime, Version_Month, %myTime%, M
FormatTime, Version_Day , %myTime%, d
FormatTime, Version_Year , %myTime%, yyyy
; Generate versioninfo.xml file contents.
Version_Info =
(
<?xml version="1.0"?>
<root>
<Program_Version>%Version_String%</Program_Version>
<Program_Release_Month>%Version_Month%</Program_Release_Month>
<Program_Release_Day>%Version_Day%</Program_Release_Day>
<Program_Release_Year>%Version_Year%</Program_Release_Year>
</root>
)
; Delete and recreate Version_Info file.
FileDelete, %Version_Info_Dir%\versioninfo.xml
FileAppend, %Version_Info%, %Version_Info_Dir%\versioninfo.xml
; Generate .dcupdate file contents.
DcUpdate_Info =
(
<?xml version="1.0" ?>
<Local>
<!-- basic info to display in updater-->
<Label>%AppName%</Label>
<IconFile>%AppName%.exe</IconFile>
<!-- version info of locally installed current version, and simple remote version file -->
<Version>%Version_String%</Version>
<VersionFileRemote>http://skwire.dcmembers.com/apps/trout/versioninfo.xml</VersionFileRemote>
<!-- where to get more info about the app remotely, only queried once an update is discovered -->
<InfoFileRemote></InfoFileRemote>
<WebPage>https://www.donationcoder.com/forum/index.php?topic=16157.0</WebPage>
<!-- ok how to conduct updates; could be: "Run" (download and run program), or "Visit" (visit website), or "Unzip" (download zip and unpack over files) -->
<UpdateMethod>run</UpdateMethod>
<CloseForUpdate>trout.exe</CloseForUpdate>
<UpdateFile>http://skwire.dcmembers.com/apps/trout/trout_setup.exe</UpdateFile>
</Local>
)
; Delete and recreate DcUpdate file.
FileDelete, %DcUpdate_Info_Dir%\%AppName%.dcupdate
FileAppend, %DcUpdate_Info%, %DcUpdate_Info_Dir%\%AppName%.dcupdate
-
Oh nice one bookmarked.
-
I had a thought.. without adding much size to dcuhelper.exe i could add a minimialist built in update check into dcuhelper.exe.
In other words, right now what dcuhelper does is if the dcupdater big utility is not installed, it opens the program web page so user can check version themself.
But it wouldnt be hard or add much size to add a really quick and dirty version check into dcuhelper.exe itself, so that it could inform the user when there is a new version and then open the program website, or do nothing if a new version is not ready.
The advantage of this is that it would be more useful to people who don't want to install the larger dcupdater tool and make it viable to use dcuhelper.exe itself as a very lightweight update checker.
-
I like this idea. :D
-
yep me too.
-
I'm not proud to say it only took me 11 months to add this feature, but i'm happy to say that i have implemented it, and will upload it in the next few days.
The new version of dcuhelper works as follows:
You bundle dcuhelper.exe (still about 100k) with your executable, and invoke it to check for updates.
As before, if the user has the full dcupdater installed, that will be used to check for updates and manage their installation if any are found.
What's changed is the behavior if the user does NOT have the main dcupdater tool installed.
In the past, the dcuhelper.exe would open the program web page and dcupdater page, where they could manually check to see if an update had been released.
Now, dcuhelper.exe will actually check on it's own if an update is available (note this only works with installs that have a single .dcupdate file and won't recursively check plugin updates).
If dcuhelper detects a new version available (or an error), it will behave as before and open the program web page in the browser for user to download and install the new version manually.
If there is no update, dcuhelper will behave like dcupdater and silently exit without bothering the user.
I hope this new feature will offer people the best of both worlds -- very lightweight update checking for people who don't want a full fledged update downloader and prefer to do things manually, and a full featured update tool for people who prefer an automated solution, and for complicated cases like plugins, etc. The bottom line is that in the past users HAD to install the main dcupdater tool to get any useful benefit -- whereas now dcuhelper.exe on its own will be good enough for most users. This should make bundling dcuhelper with your application more clearly a good thing to do.
I'll post the new version in a few days and would appreciate any help testing.
-
I've posted a copy of the new version at:
https://www.donationcoder.com/Software/Mouser/Updater/downloads/alpha/dcuhelper.zip
Let me know how it works for you. Remember it should work the same as before except when run on a machine without the main dcupdater program installed on it.
-
Just a note that i've tested dcuhelper on windows versions from win98 to win7, all working.
-
I'll try to find some time to test this new release once I get caught up on NANY and holiday and who knows what else. =]
-
I like this update a lot!
I'm including it on my new release of GridMove ;)
-
anyone care to test and report?
-
I've been using the new version in GridMove since the last release (January 11 or something like that).
I tested it in a virtual machine before and it worked great! ;)
-
thanks jgp! :-*
-
Mouser,
I've read this thread with interest as I've been toying with the idea of including something along these lines in Circle Dock. However, I have some questions:
1. Circle Dock makes use of Mutexes. Assuming only one installation of the program, when CD starts, it checks for its Mutex and, if already allocated, it switches to the original instance and the second instance terminates. If there are multiple installations (in different folders), multiple instances can be run and each "knows" about the others' presence. Is DCU mutex-aware (as Inno Setup is) ?
2. How are "non-versioned" files (eg text or help files) handled?
Mark
-
ok let me see if i can answer.. the way dcuhelper works is its checking for a .dcupdate file in the directory where the dcuhelper.exe was run by default. so it doesn't care how many instances of circledock is installed or running.. it's only going to check the version of the .dcupdate file in its directory with the web version. so i think that solves the mutex issue, and means it's suitable for portable installation as well.
now keep in mind that typically the way dcuhelper and the fuller dcupdater program work is they just offer to download and run the normal installer.. after that it's up to the user and/or the installer to decide where to install, etc. though it's also possible to have the updater unpack a zip file.
but for simplicity the idea i've always followed is to let the installer do the work.. the updater doesn't try to support fancy options for figuring out what files need replacing, etc. it simply checks if a new version is available, and either brings them to the web page to grab it (dcuhelper without dcupdater installed), or downloads and runs the installer (if they have the optional bigger dcupdater installed).
-
I've uploaded a new version of dcuhelper.zip with expanded instructions; i'm going to try to make a screencast video tutorial or two on how to use it.
-
What happened to the alpha, I was thinking after the alpha that the next release version would include the code, but alas. The release still requires dcupdater main program, and the alpha is 404.
-
i don't remember any alpha..
latest dcuhelper.exe can check for updates even without the main dcupdater:
https://www.donationcoder.com/Software/Mouser/Updater/downloads/dcuhelper.zip
-
Mouser, there was an alpha link earlier in the thread. Great, I must not have setup my files correctly then am a bit tired will try again in the next few days!
-
i probably just turned the alpha into official release and forgot about the alpha.
if you have any troubles getting it to work don't hesitate to email me, i'm happy to help ([email protected]).
-
New version uploaded
v1.06.01 - Jan 4, 2011 - added overide and redirect options in versioninfo file (see readme)
-
Note:
With this new version, coders who like to give each version a unique filename now have a way to do this.
In the past, the filename to download/unzip/run had to be specified in the .dcupdate file included in the current version, which meant you had to know the filename of the new file to run ahead of time when an update was discovered. Now you can overide the filename in the version.xml file and change it with each new release, IF you would prefer that.
I still recommend against this, and for using the same filename on new versions, because it will make it easier for people to link to your program on other sites, etc., but it's now an option.
-
Latest dcuhelper coming will support reporting to the user what's new, and a nicer better looking dialog where they can choose what they want to do when an update is found.
Example:
[ You are not allowed to view attachments ]
I'd also like to add some *optional* features for asking the user to consider donating to the author, as discussed on other threads.
-
Nice nice. :D :up:
-
I have uploaded a new beta version of dcu helper (link in first post).
v1.08.01 - Mar 23, 2011
- completely new dialog with buttons to open web pages shown when update detected; support for showing whats new
- improved the -u unregister parameter; added icon to dcuhelper to improve message boxes (thanks Worstje)
The newest version has a pretty dramatic change in appearance, showing nice dialog and buttons instead of messagebox; and the biggest change is you can now show people whats new since their current version. See sample.
I'm putting this out as a beta since there may be some rough edges, let me know. Note: The new version will *not* work on windows 95/98.
Suggestions welcome -- look forward to any feedback if the new dcuhelper is helpful for you.
-
I think this is really cool. If I made any software that updated regularly, I'd definitely use this and give you feedback. But since I don't, all I can do is cheer you on from the sidelines.
I really like DcuHelper and DcUpdater. :D
-
I'm totally swamped in work so I can't give you feedback just now, but it looks awesome :D
-
Any documentatiuon on how to expose the changelog?
-
Any documentatiuon on how to expose the changelog?
In your server versioninfo.xml file you want to add a line specifying the name of the whatsnew/changelog file, like so:
<?xml version="1.0"?>
<root>
<Program_Version>2.95.01</Program_Version>
<Program_Release_Month>6</Program_Release_Month>
<Program_Release_Day>6</Program_Release_Day>
<Program_Release_Year>2011</Program_Release_Year>
<WhatsNewFile>whatsnew.txt</WhatsNewFile>
</root>
And then your whatsnew.txt file should be in same directory, with contents that look like this:
@v2.95.01 - June 6, 2011
[BugFix] When capturing scans, the previous screencapture active window info could be kept in image comments.
[MinorFeature] Added Pixelate *outside* region special effect.
[Feature] Fixed bug in sorting by date and added new options to sort by either creation date or lastmodification date.
@v2.94.01 - April 8, 2011
[BugFix] Windows 7 (vista?) could give error on startup about inability to create a .redirect file for update checker.
@v2.93.01 - Mar 21st, 2011
[Feature] Added new Pixelate filter (see options on SpecialEffects tab).
(the list of changes can be ascending or descending, it doesnt matter; and only the version number after the @v is actually compared); the text lines after the @v# can be in any format you want. it is simply grabbing the text between the @ lines corresponding to the new versions not installed by the user.
so if they have version 2.93.01 installed when this update file is checked, it will show the text from @2.95.01 through to above @2.93.01
-
New minor update2:
- v1.09.01 - July 2, 2011 - now bypasses cache explicitly when checking for version update -- could cause old files on some pcs; thanks worstje
-
When you have DcuHelper without DcUpdater installed (ie the majority of non DC people) and there is an update available, DcuHelper is now showing my complete XML file under the whatsnew - is that intended - maybe it's checking the extension again to see if its an xml file?
Also, it then gives you the option to download dcupdate (great) or visit the products website. This is not so great as product updates in this case are not available from my website ;) Would you consider adding a line to .dcupdate or versioninfo.xml to address this?
I can think of 3 options, if you wish to address the issue:
* dcupdate option DcuHelperUpdateUrl that specifies either UpdateFile or WebPage as its value to choose from (as both the WebPage and the UpdateFile are already in the file) OR
* a dcupdate or versionxml option that specifies DcuHelperUpdateUrl that points to an http address or a website thats get loaded in the browser.
* use the webpage element as a url that can contain either html/binaries
Both these options allow people to specify either a webpage or a direct link.
-
This also sort of addresses a related idea I have. As some information in the .dcupdate might change after some people have downloaded it, I think some options would benefit to either move to the versionxml or to manage the .dcupdate file centrally and download it on update,
I'm thinking of the following elements - they would work better under the control of the developer:
VersionFileRemote, WebPage, UpdateFile
What you think? :) just an idea
-
Minor update:
- v1.10.01 - July 12, 2011 - if launched as a hidden window (common in old versions of dcuhelper) the new dialog would not display; thanks worstje
-
I think some options would benefit to either move to the versionxml or to manage the .dcupdate file centrally and download it on update
Yes i was thinking this too -- or simply make it possible for the remote file to overide the values.
It's the way it is mostly to keep the remote version file as small as possible since it is downloaded so frequently.
But it does seem like i should make it an option that would let remote version file overide the download location, etc.
-
DcuHelper is now showing my complete XML file under the whatsnew
this should not be happening -- it's either a bug in my code (what? never!) or you are specifying your xml as your whatsnew file somehow. if you can't figure out a solution email me and i'll help.
-
This is not so great as product updates in this case are not available from my website
i didn't fully understand the 3 options you proposed, could you elaborate on them and which you would prefer?
do you just want me to let the .dcupdate file specify an alternative web page the user should visit to get the update?
so that dcuhelper would present 2 buttons, one would say like "visit program website" the other would say "visit registered user update page"?
-
Okay the issue I'm having is that DcuHelper can only point you to the website or point to DcUpdater, but not the update file itself directly, ie the button points to the WebPage xml element.
What if I want to make the update available in app but not want people to find it from the website? Then people would be forced to install DcUpdater in order to get to the executable.
So the ability to set the 'destination' of that first button in DcuHelper would be appreciated, by setting it in the .dcupdate file.
I can think of 3 options, if you wish to address the issue:
* dcupdate option DcuHelperUpdateUrl that specifies either UpdateFile or WebPage as its value to choose from (as both the WebPage and the UpdateFile are already in the file) OR
-justice
This is the elegenat solution. In this case a new element would be added called DcuHelperUpdateUrl which would specifify the other element whose value should be used, so for the developer they could specify:
<DcuHelperUpdateUrl>UpdateFile</DcuHelperUpdateUrl>
or
<DcuHelperUpdateUrl>WebPage</DcuHelperUpdateUrl>
You would then reuse the UpdateFile|webPage value as the destination for the button.
* a dcupdate or versionxml option that specifies DcuHelperUpdateUrl that points to an http address or a website thats get loaded in the browser.
-justice
This is the easiest conceptually and the most flexible, simply specifiy a string instead (but that string is probably already specified in either the WebPage or UpdateFile elements.)
<DcuHelperUpdateUrl>http://example.com/download/update</DcuHelperUpdateUrl>
* use the webpage element as a url that can contain either html/binaries
-justice
I could abuse the WebPage element that already exists and point that to the location of the update, but that will probably introduce unintended consequences.
And your suggestion is a fourth one, where you add another button but that would make the interface more complex.
-
Don't know if this is the right thread - but....
I'm working on an XP machine that has FARR 2.99.02 installed and as far as i know that is the only DC program on the machine - certainly the only one that should be running. it does what i need and i have no desire to upgrade it.
Today FARR has stopped working and instead confronted me with a pop-up as shown in the image.
Note the lack of close button, minimise button, program identification or anything else. I didn't ask for it and I don't want it, the only way to get rid of it is to abort through the task-manager, and it's directing me to a website that i don't want to visit. Pretty much fits the definition of Malware.
What is going on here? I thought this site was populated by the good guys
-
Don't know if this is the right thread - but....
I'm working on an XP machine that has FARR 2.99.02 installed and as far as i know that is the only DC program on the machine - certainly the only one that should be running. it does what i need and i have no desire to upgrade it.
Today FARR has stopped working and instead confronted me with a pop-up as shown in the image.
Note the lack of close button, minimise button, program identification or anything else. I didn't ask for it and I don't want it, the only way to get rid of it is to abort through the task-manager, and it's directing me to a website that i don't want to visit. Pretty much fits the definition of Malware.
What is going on here? I thought this site was populated by the good guys
-Flippertie
@Flippertie: mouser just released a new Farr update and the pop-up seems to be a bug, an unfortunate side-effect. anyway, i'm sure mouser will fix this in no time.
-
Great.
Thanks for the quick reply.
I prefer the idea that Mouser's human and has the occasional bug than that he's going over to the dark side .......
-
Note the lack of close button, minimise button, program identification or anything else.
this is a bug that i think is fixed in the new version -- i apologize. normally you would also see a button saying "click to visit find+run robot webpage to download the new version"
and thank you for pointing out that i am stupidly not showing the name of the program that the update refers to in the titlebar.
ps. you can turn off automatic update checking in farr, it's in the options somewhere.
-
ps. you can turn off automatic update checking in farr, it's in the options somewhere.
-mouser
[ You are not allowed to view attachments ]
-
you can turn off automatic update checking in farr, it's in the options somewhere.
Thanks , both.
I've set it to 4000 hours -about 6 months, which is more than enough if I'm not experiencing problems.
A nice feature would be a 'don't remind me again about this version' button. Nice, but hardly important ; - )
-
I want to use DCUpdater and I am getting extra characters at the end of the whatsnew.txt file when it is displayed. Any idea why? I am using Windows 7 64bit.
[ You are not allowed to view attachments ]
-
Hi gingerich!
Send me your files so i can test here and i'll investigate -- sounds like a bug on my part.'
[email protected]
-
Thanks, just sent
-
It was indeed a bug in my code, triggered when the current version is not found in the whatsnew file; it's been fixed and new version of dcuhelper.zip (https://www.donationcoder.com/Software/Mouser/Updater/index.html) uploaded.
-
Thanks! Did you get my other email about the other possible bug?
-
I did; replying to it now.
-
What a disappointment.
I am begining to expect this from Donation Coder, & DCUpdater is another in a substantial list of hard to use programs with very limited appeal to the novice or intermediate level PC user.
I believe this program is misrepresented - it should clearly state what eventually Mouser does say:
"So probably you want to go find yourself an update checking solution that is self-contained and you probably don't want to use DcUpdater".
Sorry Mouser I know you put the effort in & make your apps freely available but why not do it better, or do something not done by an alternative app.
Tough comment I know, but I have a life, & its May 2012, I want it simple easy, intuitive & robust, without the need to enroll in a help forum. And I don't care much if it's substantial in size. I have a quad core CPU & fast PC to manage such stuff.
.
-
Can you elaborate a little bit on your issues with dcuhelper? This is really a tool for programmers who want to add update support to their applications, so maybe this is just a matter of me not being clear what it's useful for and causing some confusion..
-
Yes I am sure your reply is spot on.
If intended as an "add on updater" for individual custom apps (as might be helpful to professional programmers) - then please just say this & ensure others do not over-hype what you offer.
Too often I find myself reading extensively about new stuff here & becoming totally confused about for whom the program is designed & best suited.
Hope that clears everything up.
-
@peterlonz: Maybe DcUpdater (https://www.donationcoder.com/Software/Mouser/Updater/index.html) was more of what you were expecting to find?