floele Posted February 7, 2009 Report Share Posted February 7, 2009 (edited) +Function "directory" +Command line option to specify database location (/database:PATH) *Changed re-download semantics when preserving previously downloaded files *Make keyboard shortcuts global within the main window *More accurate go-to !Fixed UnauthorizedAccessExceptions (r2) +Allow renaming variables (using F2) *Ctrl+A in log window *Show corresponding application for variable replacements in the log window *More verbose logging for variable content changes !Fixed an exception in command line mode for Windows 2000 http://ketarin.canneverbe.com/downloads/Ketarin/Ketarin-1.0.1.zip Edited February 8, 2009 by floele Link to comment Share on other sites More sharing options...
appyface Posted February 7, 2009 Report Share Posted February 7, 2009 Thanks Flo am checking these out now... +Function "directory" Is this in reference to this request: http://ketarin.canneverbe.com/forum/viewtopic.php?id=163 ? I'm unclear how/where/when this can be used? +Command line option to specify database location (/database:PATH) Didn't work for me? I was careful to specify full path to the jobs.db file. 1. I have Ketarin in its own directory with a jobs.db file in same directory, this jobs.db is heavily populated. 2. I put a completely different jobs.db on a completely different drive and directory path from where Ketarin is located now. This makes it easy to spot which jobs.db Ketarin is using. 3. From within same directory that Ketarin and my heavily-populated jobs.db file is in, I issued this command line: ketarin.exe /database:E:\ Root of E:\ drive is the path to where I put the alternate jobs.db file. Ketarin doesn't find it and gives pop-up message: "Could not create or load the database file: Unable to open the database file" I'm thinking by 'path' you meant to use both "path" and "filename"? I first renamed (on E:\) 'jobs.db' to 'work_test.db'. This command line did work and Ketarin opened this one instead of the the one in the directory with it: ketarin.exe /database:E:\work_test.db *Changed re-download semantics when preserving previously downloaded files Works great, thanks! *Make keyboard shortcuts global within the main window I had asked for CTRL-A keyboard shortcut to be implemented in the Log Viewer... I must to right-click to get 'select all', CTRL-A does not work. Once I have something selected in Log View (whether all or in part), CTRL-C does work to copy it. So some keyboard shortcuts are enabled while at least one is not? I do realize this list states 'main window', but I'm hoping by mentioning the Log Viewer again, to spark some interest in similar update for the Log Viewer *More accurate go-to Working great! Thanks! !Fixed UnauthorizedAccessExceptions I tried searching the forum for words like this but got no hits... I don't know what this fixes? Looking better and better every day, Flo. I have a feeling we're going to run out of things to pick on, very soon :-) Link to comment Share on other sites More sharing options...
floele Posted February 7, 2009 Author Report Share Posted February 7, 2009 1. "directory" is used like any other function, without any parameters. 2. Yeah, "path" means directory + file name. 3. This will actually be in the next revision. 4. It may occur, that the developer himself also finds and fixes bugs. I hope you don't mind :-p Link to comment Share on other sites More sharing options...
appyface Posted February 7, 2009 Report Share Posted February 7, 2009 1. "directory" is used like any other function, without any parameters. OK, but when/where would this be used? Is it not the downloaded file's path? So would it be useful only for, say, passing the path to a script Ketarin will execute after downloading an update? Or is there an 'earlier' time in the process where this is useful? Maybe I don't understand what 'path' this directory comes from? 2. Yeah, "path" means directory + file name. OK, but I will say path is sometimes used to mean only the path portion (kinda like your directory function above, eh?) so it is a bit ambiguous. I would prefer the description "full or relative path, plus filename" (assuming relative path works, I have not tried that) 3. This will actually be in the next revision. Did anyone ever tell you, you're a peach? Thanks for this. 4. It may occur, that the developer himself also finds and fixes bugs. I hope you don't mind :-p Well yes I do mind, if the developer himself does not open a bug report in the forum!!!! :-p OK I can live with that, I guess... Thanks Flo. Link to comment Share on other sites More sharing options...
floele Posted February 7, 2009 Author Report Share Posted February 7, 2009 If you don't see a need for the directory function, don't use it :-p The thread you mentioned should actually give you an idea though. Link to comment Share on other sites More sharing options...
appyface Posted February 7, 2009 Report Share Posted February 7, 2009 Well I guess I won't be using it since I don't have Ketarin launching any scripts, which is the only thing I could think of to use it for, after reading that thread. I'm just wondering what other path it could be extracting, if not from the downloaded filename? And where would you put it? I confess that thread didn't make much sense to me. An example would be a big help. Link to comment Share on other sites More sharing options...
FranciscoR Posted February 7, 2009 Report Share Posted February 7, 2009 *Changed re-download semantics when preserving previously downloaded files Now I have Synctoy updating all the time, and version is not replaced correctly in filename. This is what I get now, SyncToy_{version}.exe, "previous" file name is SyncToy_2.0.exe. The files are exactly the same ???, size, date, metadata, digital signature... 07-02-2009 21:35:56: Update started with 1 application(s) 07-02-2009 21:35:58: SyncToy: Checking if update is required... 07-02-2009 21:35:58: SyncToy: Update required, 'D:\Programas\Backup\SyncToy_{version}.exe' does not yet exist 07-02-2009 21:36:19: Replacing {version} in 'dir {target}/o:e-s /s > {target}\List.txt && echo %DATE% %TIME% SyncToy_{version} >> {target}\Updates.txt' with '2.0' 07-02-2009 21:36:19: SyncToy: Executing command: dir D:\Programas/o:e-s /s > D:\Programas\List.txt && echo %DATE% %TIME% SyncToy_2.0 >> D:\Programas\Updates.txt 07-02-2009 21:36:19: SyncToy: Command result: D:\Ketarin>dir D:\Programas/o:e-s /s > D:\Programas\List.txt && echo %DATE% %TIME% SyncToy_2.0 >> D:\Programas\Updates.txt D:\Ketarin> 07-02-2009 21:36:20: Replacing {version} in '{version}' with '2.0' 07-02-2009 21:36:20: Update finished My Synctoy job preserves previously downloaded files and uses {version} as indicator for changes. Link to comment Share on other sites More sharing options...
appyface Posted February 7, 2009 Report Share Posted February 7, 2009 Although my apps are not redownloading, looking at Log Viewer it appears Ketarin may not be looking at the Change Indicator variable, which could explain what FranciscoR is seeing? Just for grins I put in a completely bogus, non-existent variable name into the Change Indicator variable, then updated this app with CTRL-U: 2/7/2009 2:02:36 PM: Update started with 1 application(s) 2/7/2009 2:02:36 PM: Replacing {majvers1} in '{majvers1}{majvers2}' with '2' 2/7/2009 2:02:36 PM: Replacing {majvers2} in '2{majvers2}' with '16' 2/7/2009 2:02:36 PM: Replacing {majorvers} in 'http://download.piriform.com/ccsetup{majorvers}.exe' with '216' 2/7/2009 2:02:37 PM: Replacing {vers} in 'D:\Stuff\filestore\Win_tips_and_tweaks\ccsetup216_{vers}.exe' with '2.16.830' 2/7/2009 2:02:37 PM: CCleaner: Checking if update is required... 2/7/2009 2:02:37 PM: CCleaner: Update not required 2/7/2009 2:02:37 PM: Update finished The bogus variable name is not mentioned (I used 'veras' instead of 'vers', 'veras' does not exist anywhere). Next I created a brand-new variable and put that in for Change Indicator variable. It is called testvar and I populated it with 'testvariable' on the first pass. Then I updated its value to 'newtestvariable' for the second pass. Ketarin still did not download the app: 2/7/2009 2:11:00 PM: Update started with 1 application(s) 2/7/2009 2:11:00 PM: Replacing {majvers1} in '{majvers1}{majvers2}' with '2' 2/7/2009 2:11:00 PM: Replacing {majvers2} in '2{majvers2}' with '16' 2/7/2009 2:11:00 PM: Replacing {majorvers} in 'http://download.piriform.com/ccsetup{majorvers}.exe' with '216' 2/7/2009 2:11:01 PM: Replacing {vers} in 'D:\Stuff\filestore\Win_tips_and_tweaks\ccsetup216_{vers}.exe' with '2.16.830' 2/7/2009 2:11:01 PM: CCleaner: Checking if update is required... 2/7/2009 2:11:01 PM: Replacing {testvar} in '{testvar}' with 'testvariable' 2/7/2009 2:11:01 PM: Update finished 2/7/2009 2:11:19 PM: Update started with 1 application(s) 2/7/2009 2:11:19 PM: Replacing {majvers1} in '{majvers1}{majvers2}' with '2' 2/7/2009 2:11:20 PM: Replacing {majvers2} in '2{majvers2}' with '16' 2/7/2009 2:11:20 PM: Replacing {majorvers} in 'http://download.piriform.com/ccsetup{majorvers}.exe' with '216' 2/7/2009 2:11:20 PM: Replacing {vers} in 'D:\Stuff\filestore\Win_tips_and_tweaks\ccsetup216_{vers}.exe' with '2.16.830' 2/7/2009 2:11:20 PM: CCleaner: Checking if update is required... 2/7/2009 2:11:20 PM: Replacing {testvar} in '{testvar}' with 'newtestvariable' 2/7/2009 2:11:20 PM: Update finished Link to comment Share on other sites More sharing options...
FranciscoR Posted February 7, 2009 Report Share Posted February 7, 2009 I have only *1* app (out of 120) redownloading. XML: <?xml version="1.0" encoding="utf-16"?> <Jobs> <ApplicationJob xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Guid="8be6eb12-0669-4b1d-aa02-1602631149f8"> <DownloadBeta>AlwaysDownload</DownloadBeta> <DownloadDate xsi:nil="true" /> <VariableChangeIndicator>{version}</VariableChangeIndicator> <CanBeShared>true</CanBeShared> <ShareApplication>false</ShareApplication> <HttpReferer /> <Variables> <item> <key> <string>version</string> </key> <value> <UrlVariable> <VariableType>StartEnd</VariableType> <Regex /> <Url>http://www.microsoft.com/downloads/details.aspx?familyid=c26efa36-98e0-4ee9-a7c5-98d0592d8c52&displaylang=en#filelist</Url> <StartText>Version:</td><td class="quickInfoValue"></StartText> <EndText></td></EndText> <Name>version</Name> </UrlVariable> </value> </item> </Variables> <ExecuteCommand /> <Category>Backup</Category> <SourceType>FixedUrl</SourceType> <PreviousLocation>D:\Programas\Backup\SyncToy_{version}.exe</PreviousLocation> <DeletePreviousFile>false</DeletePreviousFile> <Enabled>true</Enabled> <FileHippoId /> <LastUpdated>2009-02-07T21:36:17.8654924</LastUpdated> <TargetPath>{target}\{category}\{appname}_{version}.{url:ext}</TargetPath> <FixedDownloadUrl>http://download.microsoft.com/download/6/c/4/6c406239-a648-4e01-833e-2c452deed3b6/SyncToySetupPackage.exe</FixedDownloadUrl> <Name>SyncToy</Name> </ApplicationJob> </Jobs> Link to comment Share on other sites More sharing options...
floele Posted February 7, 2009 Author Report Share Posted February 7, 2009 The application does actually work fine for me. If Ketarin does what it says in the log, it would hint at the fact that the variable "version" is for some reason not defined and this it keeps looking for the wrong file name. Doesn't make much sense to me currently. Link to comment Share on other sites More sharing options...
appyface Posted February 7, 2009 Report Share Posted February 7, 2009 (edited) I've had this same issue but intermittently, Ketarin redownloaded because it claimed 'the disk file does not exist' but the disk file DID exist.... IF the contents of the variable were known at the time? Maybe in this case 'version' is not defined *yet* when Ketarin looks for the filename? Just guessing aloud... Edited February 7, 2009 by appyface Link to comment Share on other sites More sharing options...
FranciscoR Posted February 7, 2009 Report Share Posted February 7, 2009 The application does actually work fine for me. If Ketarin does what it says in the log, it would hint at the fact that the variable "version" is for some reason not defined and this it keeps looking for the wrong file name. Doesn't make much sense to me currently. You're correct, when I open version variable all I have is <HTML><HEAD><META HTTP-EQUIV="Refresh" CONTENT="0.1"> <META HTTP-EQUIV="Pragma" CONTENT="no cache"> <META HTTP-EQUIV="Expires" CONTENT="-1"> </HEAD></HTML> This is new , I have never checked but it's the first time I redownload Synctoy. I'll reconfigure it. Link to comment Share on other sites More sharing options...
floele Posted February 7, 2009 Author Report Share Posted February 7, 2009 That's more of a MS issue. Sometimes, their servers just return this...don't know what it is. Link to comment Share on other sites More sharing options...
FranciscoR Posted February 7, 2009 Report Share Posted February 7, 2009 (edited) That's more of a MS issue. A brand new regex variable fixes it: 07-02-2009 22:49:58: Update started with 1 application(s) 07-02-2009 22:50:05: Replacing {version} in '{target}\Backup\SyncToy_{version}.exe' with '2.0' 07-02-2009 22:50:05: SyncToy: Checking if update is required... 07-02-2009 22:50:06: Replacing {version} in '{version}' with '2.0' 07-02-2009 22:50:07: Replacing {version} in '{version}' with '2.0' 07-02-2009 22:50:07: Update finished Same file & version, no DL. Don't you think the "variable as indicator for changes" should be logged in it's own line, as appyface somewhat suggested ? Btw, highlighting is so much better... well done ! =) Edited February 7, 2009 by FranciscoR Link to comment Share on other sites More sharing options...
appyface Posted February 8, 2009 Report Share Posted February 8, 2009 @Flo OK FranciscoR's problem solved. Why did my tests not cause a new file to be downloaded? I had expected they would, but they did not. Interestingly, Ketarin's log never says it did or didn't download (but I was watching the GUI, and it did not), after scraping variables it just states "Update finished". Shouldn't there be a status message, either "update required" or "update not required"? And I'm thinking it was required, because my Change Indicator Variable had changed, even though it would download the same app? Link to comment Share on other sites More sharing options...
floele Posted February 8, 2009 Author Report Share Posted February 8, 2009 I've reuploaded this version, could you please check if the "variable content as indicator for changes" works properly? Link to comment Share on other sites More sharing options...
FranciscoR Posted February 8, 2009 Report Share Posted February 8, 2009 (edited) Now with 1.0.1.2 and last night regex: Before update, Ketarin displays the same strange data. But the good news is update is now correct: 08-02-2009 13:11:12: Update started with 1 application(s) 08-02-2009 13:11:16: SyncToy: Replacing {version} in '{target}\Backup\SyncToy_{version}.exe' with '2.0' 08-02-2009 13:11:16: SyncToy: Checking if update is required... 08-02-2009 13:11:17: SyncToy: Replacing {version} in '{version}' with '2.0' 08-02-2009 13:11:17: SyncToy: Update not required, {version} has not changed 08-02-2009 13:11:19: SyncToy: Replacing {version} in '{version}' with '2.0' 08-02-2009 13:11:19: Update finished Indicator for changes seems to be working well (Blacklight job): 08-02-2009 13:08:49: Update started with 1 application(s) 08-02-2009 13:08:57: Blacklight: Replacing {version} in '{target}\Security\Blacklight_{version}.exe' with '2.2.1092 Beta' 08-02-2009 13:08:58: Blacklight: Checking if update is required... 08-02-2009 13:08:58: Blacklight: Replacing {version} in '{version}' with '2.2.1092 Beta' 08-02-2009 13:08:58: Blacklight: Update not required, {version} has not changed 08-02-2009 13:08:59: Blacklight: Replacing {version} in '{version}' with '2.2.1092 Beta' 08-02-2009 13:08:59: Update finished Edited February 8, 2009 by FranciscoR Link to comment Share on other sites More sharing options...
FranciscoR Posted February 8, 2009 Report Share Posted February 8, 2009 (edited) The above problem is solved if I remove from XML <StartText>???????????????</StartText> <EndText>????????????????????</EndText> Those tags where causing the problem, causing Ketarin not to load adress. Now it's OK. Other jobs (from other sites), with Start/End variables don't display same problem. Adobe Reader Lite (Major Geeks): <StartText><A HREF="http://files1.majorgeeks.com/files/</StartText> <EndText>/office/ar9lite_eng.exe"></EndText> Maybe this is MS specific, yeah, but I cannot confirm with a single job. Edited February 8, 2009 by FranciscoR Link to comment Share on other sites More sharing options...
floele Posted February 8, 2009 Author Report Share Posted February 8, 2009 Ketarin does in fact load the address, but sometimes the M$ servers return an incorrect result. I can't do much about that. Link to comment Share on other sites More sharing options...
CybTekSol Posted February 8, 2009 Report Share Posted February 8, 2009 All working without any problems with 684 apps for me! GREAT JOB FLO!! Link to comment Share on other sites More sharing options...
FranciscoR Posted February 8, 2009 Report Share Posted February 8, 2009 When I say it doesn't load, I mean there was no "loading url" popup (when Edit Variables window was opened), which led me to believe Ketarin was using the previous and problematic Start/End variables (same content, wheter I checkmark "content from URL" or "content from Regex"). But on update there's no doubt Ketarin loads adress from Regex "tab" and goes directly to match, so everything is now OK. Funny enought, the Technet server doesn't have this problem, I just checked my template. =) Link to comment Share on other sites More sharing options...
appyface Posted February 8, 2009 Report Share Posted February 8, 2009 (edited) @Flo First off, thank you for adding CTRL-A in Log Viewer and putting the app name on all lines... VERY helpful! OK the Change Indicator Variable ("CIV") is mostly working as I would expect: 2/8/2009 6:55:17 AM: CCleaner: Replacing {majvers1} in '{majvers1}{majvers2}' with '2' 2/8/2009 6:55:17 AM: CCleaner: Replacing {majvers2} in '2{majvers2}' with '16' 2/8/2009 6:55:17 AM: CCleaner: Replacing {majorvers} in 'http://download.piriform.com/ccsetup{majorvers}.exe' with '216' 2/8/2009 6:55:18 AM: CCleaner: Replacing {vers} in 'D:\Stuff\filestore\Win_tips_and_tweaks\ccsetup216_{vers}.exe' with '2.16.830' 2/8/2009 6:55:18 AM: CCleaner: Checking if update is required... 2/8/2009 6:55:18 AM: CCleaner: Replacing {testvar} in '{testvar}' with '20090208test' 2/8/2009 6:55:18 AM: CCleaner: Update required, {testvar} has changed from 'newtestvariable' to '20090208test' Here's one test where using the CIV did not give the behavior I expected: 2/8/2009 6:57:13 AM: CCleaner: Replacing {majvers1} in '{majvers1}{majvers2}' with '2' 2/8/2009 6:57:13 AM: CCleaner: Replacing {majvers2} in '2{majvers2}' with '16' 2/8/2009 6:57:13 AM: CCleaner: Replacing {majorvers} in 'http://download.piriform.com/ccsetup{majorvers}.exe' with '216' 2/8/2009 6:57:13 AM: CCleaner: Replacing {vers} in 'D:\Stuff\filestore\Win_tips_and_tweaks\ccsetup216_{vers}.exe' with '2.16.830' 2/8/2009 6:57:13 AM: CCleaner: Checking if update is required... 2/8/2009 6:57:13 AM: CCleaner: Replacing {vers} in '{vers}' with '2.16.830' 2/8/2009 6:57:13 AM: CCleaner: Update required, {vers} has changed from '20090208test' to '2.16.830' 2/8/2009 6:57:23 AM: Update finished I had changed the CIV from using {testvar} back to {vers} and then ran the update check with CTRL-U. As you can see from first log, {vers} was already being populated and was referenced, so it did have a known value. When I changed the CIV to use the {vers} variable instead, I thought Ketarin would not re-download the file because the value of {vers} did not change from the last run to this one. It appears Ketarin only stores the last VALUE of whatever is was used for the CIV, and doesn't much care what variable that was. So when the next update check is done, Ketarin compares only the saved value to currently-derived value of the CIV, and makes its decision? Hey, I'm good with adjusting my expectation if so, no problem... BUT the log, then, is slightly misleading in that case? I'd like to see the log wording adjusted to this or similar: Replacing {vers} in '{vers}' with '2.16.830' Update required, new value of Change Indicator Variable {vers} does not match previous Change Indicator Variable value of '20090208test' Other than that 'niggle', looking good so far here, Flo. Thank you! --appyface Edited February 8, 2009 by appyface Link to comment Share on other sites More sharing options...
floele Posted February 8, 2009 Author Report Share Posted February 8, 2009 Well, I guess that's not really worth it. Usually, you would not change the variable name anyway. I could instead reset the value when the variable name changes. Link to comment Share on other sites More sharing options...
appyface Posted February 8, 2009 Report Share Posted February 8, 2009 (edited) Well, I guess that's not really worth it. Usually, you would not change the variable name anyway. I could instead reset the value when the variable name changes. I suppose it is possible to change the variable used as the CIV but the value of it is identical to the previous variable, and Ketarin would not redownload in that case. Clearing the stored value would cause Ketarin to mismatch and redownload. However, that is still the opposite behavior of what I was expecting Ketarin to do? When I changed what variable was used, I expected Ketarin to compare the current value of this variable with the last known value of this variable and make the decision based on that. Since Ketarin is not doing that, but only comparing the value of whatever was extracted from the last CIV, to the value extracted from whatever is the current CIV, it isn't what I expected... but I'm OK with that method. But please change the log wording if that will remain the case? I feel it is misleading to show me, "value of {vers} has changed from (...)" when that is not true, {vers} not only has not changed in value but never contained the value listed in the log. Thoughts? Thanks as always, --appyface Edited February 8, 2009 by appyface Link to comment Share on other sites More sharing options...
floele Posted February 8, 2009 Author Report Share Posted February 8, 2009 The log will be correct with this change I proposed. This is because Ketarin will not make decisions based on variable contents if no previously cached content is available. There is no information on the previous value of a variable available otherwise, at least not for this purpose. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now