DonationCoder.com Forum

DonationCoder.com Software => Mouser's Zone => DcUpdater => Topic started by: mouser on August 16, 2007, 08:40 PM

Title: DcuHelper.exe v1.10 (7/12/11) - Update checking for your apps (dcupdater compat)
Post by: mouser on August 16, 2007, 08:40 PM
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:

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:
Title: Re: For developers who want to add update checking to their apps: dcuhelper.exe
Post by: mouser on August 16, 2007, 08:41 PM
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.
Title: Re: For developers who want to add update checking to their apps: dcuhelper.exe
Post by: mouser on August 16, 2007, 08:54 PM
I need to say a bit more about using DcUpdater to add update checking support to your programs/downloads:


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:
Title: Re: For developers who want to add update checking to their apps: dcuhelper.exe
Post by: mouser on August 16, 2007, 08:56 PM
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.
Title: Re: For developers who want to add update checking to their apps: dcuhelper.exe
Post by: justice on August 17, 2007, 04:28 AM
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.
Title: Re: For developers who want to add update checking to their apps: dcuhelper.exe
Post by: justice on August 17, 2007, 05:05 AM
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?)


Title: Re: For developers who want to add update checking to their apps: dcuhelper.exe
Post by: mouser on August 17, 2007, 10:08 AM

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?
Title: Re: For developers who want to add update checking to their apps: dcuhelper.exe
Post by: justice on August 17, 2007, 10:34 AM
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.
Title: Re: For developers who want to add update checking to their apps: dcuhelper.exe
Post by: mouser on August 17, 2007, 10:41 AM
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.
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: mouser on August 19, 2007, 12:16 PM
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:

Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: mouser on August 19, 2007, 01:08 PM
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.
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: mouser on August 19, 2007, 01:36 PM
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:

(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.
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: justice on August 20, 2007, 02:53 AM
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.
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.
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: mouser on August 20, 2007, 03:28 AM
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.
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: justice on August 20, 2007, 04:50 AM
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
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: mouser on August 20, 2007, 04:54 AM
very nice! thanks for sharing that justice  :up:
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: jgpaiva on August 20, 2007, 05:07 AM
Code: Autohotkey [Select]
  1. ; make sure the dcuhelper.exe is in a subdirectory called 'dcuhelper' of this script's location
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
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: mouser on August 20, 2007, 05:10 AM
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.
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: justice on August 20, 2007, 05:16 AM
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.
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: lanux128 on August 20, 2007, 07:22 AM
this is fantastic! thanks mouser & justice.. :Thmbsup: just a small request: put a downloadable file as well.. :)
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: justice on August 20, 2007, 08:58 AM
Lanux128, I created a small AHK application that you can use to check for updates for itself.
http://www.amasan.co.uk/downloads/dummy/
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: lanux128 on August 20, 2007, 11:56 AM
thanks Justice, i'm hoping to add DCU support very soon.. :Thmbsup:
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: ak_ on September 04, 2007, 01:35 PM
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.
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: mouser on September 04, 2007, 02:18 PM
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.
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: mouser on September 04, 2007, 05:21 PM
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.
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: mouser on September 04, 2007, 07:00 PM
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.
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: mouser on September 08, 2007, 02:30 AM
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
//---------------------------------------------------------------------------
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: lanux128 on September 12, 2007, 10:45 PM
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, what if the dcupdater tool is installed in a custom folder? i get the message box saying it's not installed..
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: mouser on September 13, 2007, 04:19 AM
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.
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: lanux128 on September 13, 2007, 06:54 PM
thanks mouser.. :Thmbsup:
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: seedling on February 01, 2008, 03:34 PM
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);
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: mouser on February 01, 2008, 03:35 PM
Thanks for posting that seedling  :up:
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: Deozaan on July 31, 2008, 12:47 AM
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.
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: mouser on July 31, 2008, 11:15 AM
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.
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: mouser on August 01, 2008, 07:51 PM
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
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: Deozaan on August 01, 2008, 08:38 PM
Very nice! It's much improved and works like a charm!
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: skwire on February 13, 2009, 02:11 PM
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
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: justice on February 13, 2009, 04:23 PM
Oh nice one bookmarked.
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: mouser on February 26, 2009, 05:23 AM
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.
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: skwire on February 26, 2009, 05:25 AM
I like this idea.   :D
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: justice on February 26, 2009, 05:36 AM
yep me too.
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: mouser on December 30, 2009, 01:05 AM
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.
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: mouser on December 30, 2009, 02:54 AM
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.
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: mouser on December 30, 2009, 04:01 AM
Just a note that i've tested dcuhelper on windows versions from win98 to win7, all working.
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: skwire on December 30, 2009, 10:31 PM
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.  =]
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: jgpaiva on January 10, 2010, 01:21 PM
I like this update a lot!
I'm including it on my new release of GridMove ;)
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: mouser on January 28, 2010, 06:48 PM
anyone care to test and report?
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: jgpaiva on January 28, 2010, 06:58 PM
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! ;)
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: mouser on January 28, 2010, 06:59 PM
thanks jgp!  :-*
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: Markham on February 03, 2010, 11:16 PM
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
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: mouser on February 03, 2010, 11:43 PM
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).
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: mouser on October 08, 2010, 01:48 PM
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.
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: justice on October 25, 2010, 10:09 AM
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.
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: mouser on October 25, 2010, 10:38 AM
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
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: justice on October 25, 2010, 10:53 AM
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!
Title: Re: For developers who want to add DcUpdater check to their apps: dcuhelper.exe
Post by: mouser on October 25, 2010, 11:13 AM
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]).
Title: Re: DcuHelper.exe v1.06 (1/4/11) - Update checking for your apps (dcupdater compat)
Post by: mouser on January 04, 2011, 09:41 PM
New version uploaded
v1.06.01 - Jan 4, 2011 - added overide and redirect options in versioninfo file (see readme)
Title: Re: DcuHelper.exe v1.06 (1/4/11) - Update checking for your apps (dcupdater compat)
Post by: mouser on January 05, 2011, 02:48 PM
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.
Title: Re: DcuHelper.exe v1.06 (1/4/11) - Update checking for your apps (dcupdater compat)
Post by: mouser on March 23, 2011, 09:02 AM
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.
Title: Re: DcuHelper.exe v1.06 (1/4/11) - Update checking for your apps (dcupdater compat)
Post by: skwire on March 23, 2011, 09:12 AM
Nice nice.   :D   :up:
Title: Re: DcuHelper.exe v1.08 (3/23/11) - Update checking for your apps (dcupdater compat)
Post by: mouser on March 23, 2011, 09:22 PM
I have uploaded a new beta version of dcu helper (link in first post).

v1.08.01 - Mar 23, 2011

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.
Title: Re: DcuHelper.exe v1.08 (3/23/11) - Update checking for your apps (dcupdater compat)
Post by: Deozaan on March 23, 2011, 09:46 PM
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
Title: Re: DcuHelper.exe v1.08 (3/23/11) - Update checking for your apps (dcupdater compat)
Post by: jgpaiva on March 24, 2011, 05:41 AM
I'm totally swamped in work so I can't give you feedback just now, but it looks awesome :D
Title: Re: DcuHelper.exe v1.08 (3/23/11) - Update checking for your apps (dcupdater compat)
Post by: kamahl on June 25, 2011, 04:01 PM
Any documentatiuon on how to expose the changelog?
Title: Re: DcuHelper.exe v1.08 (3/23/11) - Update checking for your apps (dcupdater compat)
Post by: mouser on June 25, 2011, 04:12 PM
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
Title: Re: DcuHelper.exe v1.08 (3/23/11) - Update checking for your apps (dcupdater compat)
Post by: mouser on July 02, 2011, 04:49 AM
New minor update2:
Title: Re: DcuHelper.exe v1.09 (7/2/11) - Update checking for your apps (dcupdater compat)
Post by: justice on July 07, 2011, 01:12 PM
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.
Title: Re: DcuHelper.exe v1.09 (7/2/11) - Update checking for your apps (dcupdater compat)
Post by: justice on July 07, 2011, 01:15 PM
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
Title: Re: DcuHelper.exe v1.10 (7/12/11) - Update checking for your apps (dcupdater compat)
Post by: mouser on July 13, 2011, 04:00 AM
Minor update:
Title: Re: DcuHelper.exe v1.10 (7/12/11) - Update checking for your apps (dcupdater compat)
Post by: mouser on July 13, 2011, 04:02 AM
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.
Title: Re: DcuHelper.exe v1.10 (7/12/11) - Update checking for your apps (dcupdater compat)
Post by: mouser on July 13, 2011, 04:04 AM
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.

Title: Re: DcuHelper.exe v1.10 (7/12/11) - Update checking for your apps (dcupdater compat)
Post by: mouser on July 13, 2011, 04:09 AM
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"?
Title: Re: DcuHelper.exe v1.10 (7/12/11) - Update checking for your apps (dcupdater compat)
Post by: justice on July 13, 2011, 04:54 AM
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
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.
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
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.
Title: Re: DcuHelper.exe - Update checking for your apps -incredibly intrusive
Post by: Flippertie on October 03, 2011, 09:27 AM
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
Title: Re: DcuHelper.exe - Update checking for your apps -incredibly intrusive
Post by: lanux128 on October 03, 2011, 09:49 AM
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: 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.
Title: Re: DcuHelper.exe v1.10 (7/12/11) - Update checking for your apps (dcupdater compat)
Post by: Flippertie on October 03, 2011, 10:03 AM
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 .......
Title: Re: DcuHelper.exe v1.10 (7/12/11) - Update checking for your apps (dcupdater compat)
Post by: mouser on October 03, 2011, 10:47 AM
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.

Title: Re: DcuHelper.exe v1.10 (7/12/11) - Update checking for your apps (dcupdater compat)
Post by: wraith808 on October 03, 2011, 12:13 PM
ps. you can turn off automatic update checking in farr, it's in the options somewhere.

[ You are not allowed to view attachments ]
Title: Re: DcuHelper.exe v1.10 (7/12/11) - Update checking for your apps (dcupdater compat)
Post by: Flippertie on October 12, 2011, 11:08 PM
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 ; - )
Title: Re: DcuHelper.exe v1.10 (7/12/11) - Update checking for your apps (dcupdater compat)
Post by: c.gingerich on May 05, 2012, 07:13 AM
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 ]
Title: Re: DcuHelper.exe v1.10 (7/12/11) - Update checking for your apps (dcupdater compat)
Post by: mouser on May 05, 2012, 08:38 AM
Hi gingerich!
Send me your files so i can test here and i'll investigate -- sounds like a bug on my part.'
[email protected]
Title: Re: DcuHelper.exe v1.10 (7/12/11) - Update checking for your apps (dcupdater compat)
Post by: c.gingerich on May 05, 2012, 09:09 AM
Thanks, just sent
Title: Re: DcuHelper.exe v1.10 (7/12/11) - Update checking for your apps (dcupdater compat)
Post by: mouser on May 07, 2012, 07:14 AM
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.
Title: Re: DcuHelper.exe v1.10 (7/12/11) - Update checking for your apps (dcupdater compat)
Post by: c.gingerich on May 07, 2012, 07:57 AM
Thanks! Did you get my other email about the other possible bug?
Title: Re: DcuHelper.exe v1.10 (7/12/11) - Update checking for your apps (dcupdater compat)
Post by: mouser on May 07, 2012, 08:04 AM
I did; replying to it now.
Title: Re: DcuHelper.exe v1.10 (7/12/11) - Update checking for your apps (dcupdater compat)
Post by: peterlonz on May 15, 2012, 02:29 AM
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.
.
Title: Re: DcuHelper.exe v1.10 (7/12/11) - Update checking for your apps (dcupdater compat)
Post by: mouser on May 15, 2012, 12:19 PM
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..
Title: Re: DcuHelper.exe v1.10 (7/12/11) - Update checking for your apps (dcupdater compat)
Post by: peterlonz on May 15, 2012, 09:51 PM
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.
Title: Re: DcuHelper.exe v1.10 (7/12/11) - Update checking for your apps (dcupdater compat)
Post by: skwire on May 15, 2012, 10:35 PM
@peterlonz:  Maybe DcUpdater (https://www.donationcoder.com/Software/Mouser/Updater/index.html) was more of what you were expecting to find?