|
My updatefile UpdateInfo_Current.xml in the server shows
<GENERAL>
<VERSION>1.0.0.1</VERSION>
...
And, the settings.ini file in my pc shows
[APPLICATION]
version=1.0.0.0
And the Updater successfully updated from 1.0.0.0 to 1.0.0.1 changing the settings.ini file like
[APPLICATION]
version=1.0.0.1
However, when I run the Updater again, it keeps saying that new version 1.0.0.1 is available and repeats the update processes(downloading, copying, installing, ...).
Shouldn't the Updater stop updating no more than one time for new version?
haerim
-- modified at 18:27 Saturday 21st October, 2006
|
|
|
|
|
Make sure that CHECKSEPARATELY in <general> is set to false:
<general>
<version>1.0.0.1
<checkseparately>false
...
Best regards,
|
|
|
|
|
These few days, I've been trying to use the Updater for my sample application but always get "No New version ..." message. It is quite vague how to set things up for the first time.
I wish there are several good ste-by-step examples with illustrations.
Please explain in more detail for the following case:
1) I have compiled release version of my sample application called MyApp.exe.
2) MyApp.exe resides in folder "C:\Work\Sample" on my PC.
3) MyApp.exe needs many other files and modules. Let's call them A, B, C, and X, Y, Z.
3-1) A, B, C reside in the "C:\Work\Sample" on my PC.
3-2) X, Y, Z reside in the "C:\Work\Sample\Sub" on my PC.
4) I will use a server http://www.update.myserver with up_id/up_pwd as id and pwd.
4-1) Update_1.0.0.0 will be the server's folder name for the first time. MyApp.exe along with A, B, C will be saved under http://www.update.myserver/Update_1.0.0.0. And X,Y,Z will be saved under http://www.update.myserver/Update_1.0.0.0/Sub.
5) I would like to make the initial version "1.0.0.0".
6) I would name the update xml file "UpdateInfo_Current.xml"
Now please generate settings.ini and UpdateInfo_Current.xml.
Next, MyApp.exe and file X is modified, so I will call its version "1.0.0.1"
Again I would like to see how settings.ini and UpdateInfo_Current.xml have to be changed.
Thanks.
haerim
|
|
|
|
|
Hello,
The first update file (1.0.0.0) should be empty with only the version number in the general info. Then, Updater will be able to get the current update file, but since it contains the same version as on the client side, no updates will be downloaded/installed.
When you will release your second version (1.0.0.1), you can generate an update file using Updater Tool (you can download the tool from my website). Simply follow the wizard and compare the release folder of v1.0.0.0 with v1.0.0.1. Updater Tool will automatically see the differences between the two releases (files only, registry and ini changes will not be detected).
Now, you rename UpdateInfo_Current.xml to UpdateInfo_1.0.0.0.xml and you save the new generated file as UpdateInfo_Current.xml. Now, Updater will connect to the file (UpdateInfo_Current.xml) that is changed and it will notice that a new version is available.
If you want sequenced updating (see user guide for more details about this feature), you can let UpdateInfo_Current.xml point to the previous release.
One last thing: I see you are working with version numbers only. Make sure CheckSeparately (in general settings node of the update file) is disabled.
I hope this helps you out a bit. If not, just let me know!
Best regards,
|
|
|
|
|
I tried to compile v0.8.1.6 using VC++ SP6 with Platform SDK installed.
And I tried with following 3 types of compile Preprocess definitions:
_DEBUG,WIN32,_WINDOWS,_MBCS,ZLIB_WINAPI,UNICODE
_DEBUG,WIN32,_WINDOWS,_MBCS,ZLIB_WINAPI,UNICODE,_UNICODE
_DEBUG,WIN32,_WINDOWS,ZLIB_WINAPI,UNICODE,_UNICODE
But all setting gave me the C2002 error for the following BOLD typed line and below lines with _T('xOO') where OO is a hexadecimal number.
// some common character entities
XHTMLSTATIC_CHAR_ENTITIES CXHTMLStatic::m_aCharEntities[] =
{
{ _T("&"), 0, _T('&') }, // ampersand
{ _T("•"), 0, _T('\x95') }, // bullet NOT IN MS SANS SERIF <= Here is the error line
{ _T("©"), 0, _T('\xA9') }, // copyright
{ _T("€"), 0, _T('\x80') }, // euro sign
{ _T(">"), 0, _T('>') }, // greater than
{ _T("¿"), 0, _T('\xBF') }, // inverted question mark
{ _T("<"), 0, _T('<') }, // less than
{ _T(" "), 0, _T(' ') }, // nonbreaking space
{ _T("¶"), 0, _T('\xB6') }, // paragraph sign
{ _T("£"), 0, _T('\xA3') }, // pound sign
{ _T("""), 0, _T('"') }, // quotation mark
{ _T("®"), 0, _T('\xAE') }, // registered trademark
{ _T("™"), 0, _T('\x99') }, // trademark NOT IN MS SANS SERIF
{ NULL, 0, 0 } // MUST BE LAST
};
This is the only compile error I got.
How to fix and compile?
To make it compile first of all, I had to change the above lines as follows:
// some common character entities
XHTMLSTATIC_CHAR_ENTITIES CXHTMLStatic::m_aCharEntities[] =
{
{ _T("&"), 0, _T('&') }, // ampersand
{ _T("•"), 0, _T('*') }, // bullet NOT IN MS SANS SERIF
{ _T("©"), 0, _T('C') }, // copyright
{ _T("€"), 0, _T('e') }, // euro sign
{ _T(">"), 0, _T('>') }, // greater than
{ _T("¿"), 0, _T('?') }, // inverted question mark
{ _T("<"), 0, _T('<') }, // less than
{ _T(" "), 0, _T(' ') }, // nonbreaking space
{ _T("¶"), 0, _T('P') }, // paragraph sign
{ _T("£"), 0, _T('L') }, // pound sign
{ _T("""), 0, _T('"') }, // quotation mark
{ _T("®"), 0, _T('R') }, // registered trademark
{ _T("™"), 0, _T('T') }, // trademark NOT IN MS SANS SERIF
{ NULL, 0, 0 } // MUST BE LAST
};
As you see, all hexadecimal numbers are replaced with normal ascii characters.
Now, the compilation was ok, but I got a link error like this:
--------------------Configuration: Updater - Win32 Debug restore version--------------------
shell32.lib(shguid.obj) : fatal error LNK1103: debugging information corrupt; recompile module
Please help me with this link error. I couldn't figure it out.
haerim
-- modified at 22:12 Friday 20th October, 2006
|
|
|
|
|
Hello,
May I assume you are using Updater on an asian computer? An asian person contacted me in the past about the same problem.
We couldn't find a solution since the struct XHTMLSTATIC_CHAR_ENTITIES consists of 3 TCHAR variables. If you are not using silent mode with custom notifications, you can safely remove the code (or change it so it will compile).
About the shguid.obj: are you using the february 2003 platform sdk? Make sure all the directories are on top and that you "Rebuild all".
Make sure you are not accidently compiling in restore version mode. Just compile in debug mode itself if you want to debug or test Updater.
Best regards,
|
|
|
|
|
Geert van Horrik wrote: May I assume you are using Updater on an asian computer? An asian person contacted me in the past about the same problem.".
We couldn't find a solution since the struct XHTMLSTATIC_CHAR_ENTITIES consists of 3 TCHAR variables. If you are not using silent mode with custom notifications, you can safely remove the code (or change it so it will compile).
=>The compile error was solved by replacing the second _T with TCHAR. I don't know why _T doesn't work but TCHAR works. If you can explain why please do so.
// some common character entities
XHTMLSTATIC_CHAR_ENTITIES CXHTMLStatic::m_aCharEntities[] =
{
{ _T("&"), 0, TCHAR('&') }, // ampersand
{ _T("•"), 0, TCHAR('\x95') }, // bullet NOT IN MS SANS SERIF
{ _T("•"), 0, TCHAR('*') }, // bullet NOT IN MS SANS SERIF
{ _T("©"), 0, TCHAR('\xA9') }, // copyright
{ _T("€"), 0, TCHAR('\x80') }, // euro sign
{ _T(">"), 0, TCHAR('>') }, // greater than
{ _T("¿"), 0, TCHAR('\xBF') }, // inverted question mark
{ _T("<"), 0, TCHAR('<') }, // less than
{ _T(" "), 0, TCHAR(' ') }, // nonbreaking space
{ _T("¶"), 0, TCHAR('\xB6') }, // paragraph sign
{ _T("£"), 0, TCHAR('\xA3') }, // pound sign
{ _T("""), 0, TCHAR('"') }, // quotation mark
{ _T("®"), 0, TCHAR('\xAE') }, // registered trademark
{ _T("™"), 0, TCHAR('\x99') }, // trademark NOT IN MS SANS SERIF
{ NULL, 0, 0 } // MUST BE LAST
};
Geert van Horrik wrote: About the shguid.obj: are you using the february 2003 platform sdk? Make sure all the directories are on top and that you "Rebuild all".
=> I had to put "C:\Program Files\Microsoft Visual Studio\VC98\LIB" on the top and then "C:\PROGRAM FILES\MICROSOFT PLATFORM SDK FOR WINDOWS XP SP2\LIB" below it to solve the link problem. Putting the Feb 2003 platform libaray on the top didn't work out.
Geert van Horrik wrote: Make sure you are not accidently compiling in restore version mode. Just compile in debug mode itself if you want to debug or test Updater.
=>Source project has several compile configuration settings.
Release
Release without compression
Beta release
Debug
Debug proxy settings
Debug restore version
Can you explain each one's features briefly?
haerim
-- modified at 19:06 Saturday 21st October, 2006
|
|
|
|
|
It is nice to hear that you fixed the problem by adding TCHAR in front of the characters. However, I have no explanation for it.
About the configuration settings:
Release => This mode is used when a final release is built
Release without compression => For fast release testing since the real release also compresses the executable
Beta release => Beta release for beta testers, same as release but shows a message that the user is working with a beta version
Debug => debug version
Debug proxy settings => debug version with -proxysettings parameter
Debug restore version => debug version with -restore parameter
Best regards,
|
|
|
|
|
Would it be possible to use this tool as an installer as well as an updater?
|
|
|
|
|
There are some people / companies using this software as installer too, but you can't let the user specify a path for the installation so I am not sure if it is wise to use it as an installer.
Best regards,
|
|
|
|
|
Hello,
I downloaded the updater today and tryed to start the examples. But it always gives the "updatefile.xml is corrupt" message...
Mik7
|
|
|
|
|
Did you download the example files from my website (http://www.gvhsoftware.org) or from codeproject?
There were some problems with the samples since I forgot to make them unicode.
You can make them unicode yourself by opening them with Updater Tool (newest version) and save them again. Then, the problem should be solved!
Best regards,
|
|
|
|
|
That's right, now it works.
But I have another question
I did a sample program which prints "this is a version 1" on the console and another version of the same program which prints "this is a version 2".
I deployed the second program on the server (with an appropriate updateinfo.xml) and with Updater I figured out to download it. So, it works.
But if I start the updater.exe one more time, it downloads the second version of my program anyway (it has not to do this, because it's already did this).
I suppose that I did not configured some parameter but I can't find which one...
Mik7
|
|
|
|
|
Do you have CheckSeparately enabled? Try to disable the option, that's the most common error in the update file.
|
|
|
|
|
You are right, ti was the problem.
Thank a lot!
Mik7
|
|
|
|
|
Hi, I have the same problem with the version from your website 0.8.1.6 ... open in Updater Tool and save did not solve it ...
thanks for any advice.
Tomfi
|
|
|
|
|
Hi Tomfi,
Are you using the correct Updater Tool? (see this FAQ[^]).
You should be using 0.4.1.2.
Best regards,
|
|
|
|
|
my email is noblepaul@vip.sina.com,many thanks.
--------------------Configuration: Updater - Win32 Debug restore version--------------------
Compiling...
XHTMLStatic.cpp
E:\updater_exe\Source\XHTMLStatic.cpp(65) : error C2002: invalid wide-character constant
E:\updater_exe\Source\XHTMLStatic.cpp(66) : error C2002: invalid wide-character constant
E:\updater_exe\Source\XHTMLStatic.cpp(69) : error C2002: invalid wide-character constant
E:\updater_exe\Source\XHTMLStatic.cpp(72) : error C2002: invalid wide-character constant
E:\updater_exe\Source\XHTMLStatic.cpp(73) : error C2002: invalid wide-character constant
E:\updater_exe\Source\XHTMLStatic.cpp(75) : error C2002: invalid wide-character constant
E:\updater_exe\Source\XHTMLStatic.cpp(76) : error C2002: invalid wide-character constant
ProxyInfo.cpp
d:\program files\microsoft sdk\include\wininet.h(297) : error C2146: syntax error : missing ';' before identifier 'dwResult'
d:\program files\microsoft sdk\include\wininet.h(297) : error C2501: 'DWORD_PTR' : missing storage-class or type specifiers
d:\program files\microsoft sdk\include\wininet.h(297) : error C2501: 'dwResult' : missing storage-class or type specifiers
d:\program files\microsoft sdk\include\wininet.h(312) : error C2146: syntax error : missing ';' before identifier 'Socket'
d:\program files\microsoft sdk\include\wininet.h(312) : error C2501: 'DWORD_PTR' : missing storage-class or type specifiers
d:\program files\microsoft sdk\include\wininet.h(312) : error C2501: 'Socket' : missing storage-class or type specifiers
d:\program files\microsoft sdk\include\wininet.h(869) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(879) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(902) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(910) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(929) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(935) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(957) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(972) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(1270) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(1433) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(1440) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(1455) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(1464) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(1477) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(1484) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(1499) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(1507) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(1545) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(1552) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(1623) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(1631) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(2013) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(2021) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(2034) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(2041) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(2062) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(2072) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(2320) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(2330) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(2423) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(2430) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(2453) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(2459) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(2545) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(2552) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(2629) : error C2065: 'DWORD_PTR' : undeclared identifier
d:\program files\microsoft sdk\include\wininet.h(2629) : error C2146: syntax error : missing ')' before identifier 'dwContext'
d:\program files\microsoft sdk\include\wininet.h(2632) : error C2059: syntax error : ')'
d:\program files\microsoft sdk\include\wininet.h(2633) : error C2275: 'DWORD' : illegal use of this type as an expression
d:\program files\microsoft visual studio\vc98\include\windef.h(141) : see declaration of 'DWORD'
d:\program files\microsoft sdk\include\wininet.h(2633) : error C2275: 'LPVOID' : illegal use of this type as an expression
d:\program files\microsoft visual studio\vc98\include\windef.h(158) : see declaration of 'LPVOID'
d:\program files\microsoft sdk\include\wininet.h(2633) : error C2165: 'left-side modifier' : cannot modify pointers to data
d:\program files\microsoft sdk\include\wininet.h(2633) : error C2071: 'PFN_AUTH_NOTIFY' : illegal storage class
d:\program files\microsoft sdk\include\wininet.h(2644) : error C2146: syntax error : missing ';' before identifier 'dwContext'
d:\program files\microsoft sdk\include\wininet.h(2644) : error C2501: 'DWORD_PTR' : missing storage-class or type specifiers
d:\program files\microsoft sdk\include\wininet.h(2644) : error C2501: 'dwContext' : missing storage-class or type specifiers
d:\program files\microsoft sdk\include\wininet.h(3480) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(3488) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\wininet.h(3515) : error C2146: syntax error : missing ')' before identifier 'dwConnection'
d:\program files\microsoft sdk\include\wininet.h(3515) : warning C4229: anachronism used : modifiers on data are ignored
d:\program files\microsoft sdk\include\wininet.h(3515) : error C2491: 'InternetHangUp' : definition of dllimport data not allowed
d:\program files\microsoft sdk\include\wininet.h(3516) : error C2059: syntax error : ')'
ProxyWPAD.cpp
d:\program files\microsoft sdk\include\winhttp.h(95) : error C2146: syntax error : missing ';' before identifier 'dwResult'
d:\program files\microsoft sdk\include\winhttp.h(95) : error C2501: 'DWORD_PTR' : missing storage-class or type specifiers
d:\program files\microsoft sdk\include\winhttp.h(95) : error C2501: 'dwResult' : missing storage-class or type specifiers
d:\program files\microsoft sdk\include\winhttp.h(595) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\winhttp.h(612) : error C2061: syntax error : identifier 'DWORD_PTR'
d:\program files\microsoft sdk\include\winhttp.h(952) : error C2061: syntax error : identifier 'DWORD_PTR'
Path.cpp
E:\updater_exe\Source\Path.cpp(93) : error C2065: 'CSIDL_PROGRAM_FILES' : undeclared identifier
E:\updater_exe\Source\Path.cpp(103) : error C2065: 'CSIDL_COMMON_APPDATA' : undeclared identifier
E:\updater_exe\Source\Path.cpp(108) : error C2065: 'CSIDL_PROFILE' : undeclared identifier
HyperlinkLabel.cpp
E:\updater_exe\Source\HyperlinkLabel.cpp(62) : error C2065: 'IDC_HAND' : undeclared identifier
TreeUpdater.cpp
E:\updater_exe\Source\TreeUpdater.cpp(70) : error C2065: 'DWORD_PTR' : undeclared identifier
E:\updater_exe\Source\TreeUpdater.cpp(70) : error C2146: syntax error : missing ')' before identifier 'pItemData'
E:\updater_exe\Source\TreeUpdater.cpp(70) : error C2059: syntax error : ')'
ModeSilent.cpp
E:\updater_exe\Source\ModeSilent.cpp(365) : error C2065: 'NIIF_INFO' : undeclared identifier
E:\updater_exe\Source\ModeSilent.cpp(709) : error C2065: 'NIIF_ERROR' : undeclared identifier
E:\updater_exe\Source\ModeSilent.cpp(808) : error C2065: 'NIIF_WARNING' : undeclared identifier
NotifyDlg.cpp
E:\updater_exe\Source\NotifyDlg.cpp(102) : error C2065: 'WS_EX_LAYERED' : undeclared identifier
E:\updater_exe\Source\NotifyDlg.cpp(553) : error C2065: 'LWA_ALPHA' : undeclared identifier
E:\updater_exe\Source\NotifyDlg.cpp(553) : error C2065: 'LWA_COLORKEY' : undeclared identifier
E:\updater_exe\Source\NotifyDlg.cpp(619) : error C2065: 'IDC_HAND' : undeclared identifier
Generating Code...
Error executing cl.exe.
Updater.exe - 83 error(s), 1 warning(s)
|
|
|
|
|
Reinstall visual studio with unicode support and all should work.
Best regards,
|
|
|
|
|
Thanks for the great article, and product. I noticed that after running the installation package for the UpdaterTool, it contains an updater.exe version 0.8.1.5 and the source code zip file contains updater.exe version 0.8.1.6, is this correct or am I confused?
Thanks
~RazrV3
Time is money and niether waits for anyone.
|
|
|
|
|
That is correct. At the time I released Updater Tool, the newest version was Updater v0.8.1.5. Now, Updater v0.8.1.6 is released.
When a new version for Updater Tool is available, the updater executable will be automatically updated too.
|
|
|
|
|
Thanks for the quick reply. I have an addtional question regarding the two different versions. If I am to release a software application that will use Updater which version should I include in my inital setup package? I'm assuming that the version that has been released for the UpdaterTool application is for the UpdaterTool's update feature.
Reason for my question is this, i've Used the latest version of the UpdaterTool to build my xml document, and have been testing it using the 0.8.1.6 version of the updater.exe program, and everytime it runs it finds the xml document okay, but reports an error stating the updatefile.xml is corrupt. But when running the updater v0.8.1.5 it works just fine. I've read every thing i've found on your site and your fourmboard relating to this issue but nothing seems to work. Any suggestions?
Thanks
~RazrV3
Time is money and neither waits for anyone.
|
|
|
|
|
Can you please send me the xml file you are using with v0.8.1.6. The reason why I have released v0.8.1.6. is because it contains a fix for non-encrypted update files.
Please send the xml file to contact@gvhsoftware.org.
But to answer your question, always use the newest version to release with your product. If you don't do it, Updater will automatically be updated to the newest version the next time your users download an update (when you have SELFUPDATE enabled).
Best regards,
|
|
|
|
|
Geert;
I was able to get it to work. I think before when i was having the problems; was when using the example xml files that are given for squencing. I guess I need to rebuild the xml files using the new version of UpdaterTool and make sure they're not saved as encrypted.
Thank you for the quick responses and direct answers.
~RazrV3
Time is money and neither waits for anyone.
|
|
|
|
|
When i built it, the VC6 compiler reminded me "themeutil.h(11) : fatal error C1083: Cannot open include file: 'TmSchema.h': No such file or directory
Updater.cpp"
|
|
|
|
|