Jump to content
Ketarin forum
floele

Ketarin 1.0.1 (beta)

Recommended Posts

+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 by floele

Share this post


Link to post
Share on other sites

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 :-)

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

*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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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>

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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 by appyface

Share this post


Link to post
Share on other sites
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 :rolleyes:, I have never checked but it's the first time I redownload Synctoy. I'll reconfigure it.

Share this post


Link to post
Share on other sites
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 by FranciscoR

Share this post


Link to post
Share on other sites

@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?

Share this post


Link to post
Share on other sites

Now with 1.0.1.2 and last night regex:

 

wi4qpe.png

 

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 by FranciscoR

Share this post


Link to post
Share on other sites

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 by FranciscoR

Share this post


Link to post
Share on other sites

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. =)

Share this post


Link to post
Share on other sites

@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 by appyface

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
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 by appyface

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.