Jump to content
Ketarin forum

appyface

Members
  • Posts

    459
  • Joined

  • Last visited

Posts posted by appyface

  1. @Flo and CybTekSol

     

    I've been away, sorry! Getting back to this issue now.

     

    I just downloaded and launched Ketarin 1.0.2. Thanks for the setting to single thread specific apps!!!! Works a treat here, no more error messages from those apps because of multiple threads to the site :)

     

    Still having trouble getting a new disk filename from Ketarin. Working with the same example as above. XML references are all at bottom, to keep the list of test steps more compact and readable.

     

    (Request: Could we have a "now" datetimestamp stored in the db, when the last update is attempted, and export this into the XML files for informational purposes? I noticed in some of the "before update" and "after update" XML files, they are completely identical... no real way to show from the XML, that Ketarin was actually asked to make an update attempt. It would be nice to have the "now" time available. TIA :) )

     

     

    Test Steps for reproducing no new disk filename:

     

    1. Launched Ketarin 1.0.2, CTRL-U to check the example app entry, nothing new to download (this is correct).

     

    2/16/2009 8:10:22 AM: Update started with 1 application(s)

    2/16/2009 8:10:24 AM: Ketarin official: Checking if update is required...

    2/16/2009 8:10:24 AM: Ketarin official: Update not required

    2/16/2009 8:10:24 AM: Ketarin official: Replacing {vers} in '{vers}' with '20090211-093911'

    2/16/2009 8:10:24 AM: Update finished

     

    XML of this app after the update attempt: <01-ketarin_offical.xml>

     

     

    2. Edited to add 'test1' to output disk filename. CTRL-U, Ketarin does not download, disk file name did not exist and still does not exist following update.

     

    XML of edited app before update: <02a-ketarin_official.xml>

     

    2/16/2009 8:13:13 AM: Update started with 1 application(s)

    2/16/2009 8:13:14 AM: Ketarin official: Checking if update is required...

    2/16/2009 8:13:14 AM: Ketarin official: Update not required

    2/16/2009 8:13:14 AM: Ketarin official: Replacing {vers} in '{vers}' with '20090211-093911'

    2/16/2009 8:13:14 AM: Update finished

     

    XML after update: <02b-ketarin_official.xml>

     

     

    3. Per CybTekSol's suggestion, edited to take the {f:} variables out of disk filename, and replacing with {vers1} variable scrape, which should contain same information. CTRL-U. Ketarin does not download, disk file name did not exist and still does not exist following update.

     

    XML of edited app before update: <03a-ketarin_official.xml>

     

    2/16/2009 8:19:23 AM: Update started with 1 application(s)

    2/16/2009 8:19:24 AM: Ketarin official: Replacing {vers} in '{vers}' with '20090211-093911'

    2/16/2009 8:19:24 AM: Ketarin official: Replacing {vers1} in 'D:\Stuff\filestore\Updaters\Ketarin-1.0.1.197_test1_{vers1}.zip' with '20090211-093911'

    2/16/2009 8:19:24 AM: Ketarin official: Checking if update is required...

    2/16/2009 8:19:24 AM: Ketarin official: Update not required

    2/16/2009 8:19:24 AM: Ketarin official: Replacing {vers} in '{vers}' with '20090211-093911'

    2/16/2009 8:19:24 AM: Update finished

     

    XML after update: <03b-ketarin_official.xml>

     

     

    4. Edited {vers1} variable to be hard-coded as "sometextualcontent" instead of {f:} variables, CTRL-U. Ketarin does not download, disk file name did not exist and still does not exist following update.

     

    XML of edited app before update: <04a-ketarin_official.xml>

     

    2/16/2009 8:23:40 AM: Update started with 1 application(s)

    2/16/2009 8:23:41 AM: Ketarin official: Replacing {vers1} in 'D:\Stuff\filestore\Updaters\Ketarin-1.0.1.197_test1_{vers1}.zip' with 'sometextualcontent'

    2/16/2009 8:23:41 AM: Ketarin official: Checking if update is required...

    2/16/2009 8:23:41 AM: Ketarin official: Update not required

    2/16/2009 8:23:41 AM: Ketarin official: Replacing {vers} in '{vers}' with '20090211-093911'

    2/16/2009 8:23:41 AM: Update finished

     

    XML after update: <04b-ketarin_official.xml>

     

     

    Please let me know if you need more informaton or different tests. Thanks!!!!

     

    --appyface

     

     

    XML of all above references

    -----------------------------------

     

    01-ketarin_official.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="52ebd154-fd7a-4cbb-a191-cd905d276320">
       <DownloadBeta>Default</DownloadBeta>
       <DownloadDate xsi:nil="true" />
       <VariableChangeIndicator />
       <CanBeShared>true</CanBeShared>
       <ShareApplication>false</ShareApplication>
       <ExclusiveDownload>false</ExclusiveDownload>
       <HttpReferer />
       <Variables>
         <item>
           <key>
             <string>vers</string>
           </key>
           <value>
             <UrlVariable>
               <VariableType>Textual</VariableType>
               <Regex />
               <TextualContent>{f:yyyy}{f:MM}{f:dd}-{f:HH}{f:mm}{f:dd}</TextualContent>
               <Name>vers</Name>
             </UrlVariable>
           </value>
         </item>
       </Variables>
       <ExecuteCommand />
       <ExecutePreCommand />
       <Category>000100</Category>
       <SourceType>FixedUrl</SourceType>
       <PreviousLocation>D:\Stuff\filestore\Updaters\Ketarin-1.0.1.197_20090211-093911.zip</PreviousLocation>
       <DeletePreviousFile>true</DeletePreviousFile>
       <Enabled>true</Enabled>
       <FileHippoId />
       <LastUpdated>2009-02-12T06:01:23.678625</LastUpdated>
       <TargetPath>D:\Stuff\filestore\Updaters\{url:basefile}_{f:yyyy}{f:MM}{f:dd}-{f:HH}{f:mm}{f:dd}.{url:ext}</TargetPath>
       <FixedDownloadUrl>http://ketarin.canneverbe.com/download</FixedDownloadUrl>
       <Name>Ketarin official</Name>
     </ApplicationJob>
    </Jobs>

     

     

    02a-ketarin_official.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="52ebd154-fd7a-4cbb-a191-cd905d276320">
       <DownloadBeta>Default</DownloadBeta>
       <DownloadDate xsi:nil="true" />
       <VariableChangeIndicator />
       <CanBeShared>true</CanBeShared>
       <ShareApplication>false</ShareApplication>
       <ExclusiveDownload>false</ExclusiveDownload>
       <HttpReferer />
       <Variables>
         <item>
           <key>
             <string>vers</string>
           </key>
           <value>
             <UrlVariable>
               <VariableType>Textual</VariableType>
               <Regex />
               <TextualContent>{f:yyyy}{f:MM}{f:dd}-{f:HH}{f:mm}{f:dd}</TextualContent>
               <Name>vers</Name>
             </UrlVariable>
           </value>
         </item>
       </Variables>
       <ExecuteCommand />
       <ExecutePreCommand />
       <Category>000100</Category>
       <SourceType>FixedUrl</SourceType>
       <PreviousLocation>D:\Stuff\filestore\Updaters\Ketarin-1.0.1.197_20090211-093911.zip</PreviousLocation>
       <DeletePreviousFile>true</DeletePreviousFile>
       <Enabled>true</Enabled>
       <FileHippoId />
       <LastUpdated>2009-02-12T06:01:23.678625</LastUpdated>
       <TargetPath>D:\Stuff\filestore\Updaters\{url:basefile}_test1_{f:yyyy}{f:MM}{f:dd}-{f:HH}{f:mm}{f:dd}.{url:ext}</TargetPath>
       <FixedDownloadUrl>http://ketarin.canneverbe.com/download</FixedDownloadUrl>
       <Name>Ketarin official</Name>
     </ApplicationJob>
    </Jobs>

     

     

    02b-ketarin_official.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="52ebd154-fd7a-4cbb-a191-cd905d276320">
       <DownloadBeta>Default</DownloadBeta>
       <DownloadDate xsi:nil="true" />
       <VariableChangeIndicator />
       <CanBeShared>true</CanBeShared>
       <ShareApplication>false</ShareApplication>
       <ExclusiveDownload>false</ExclusiveDownload>
       <HttpReferer />
       <Variables>
         <item>
           <key>
             <string>vers</string>
           </key>
           <value>
             <UrlVariable>
               <VariableType>Textual</VariableType>
               <Regex />
               <TextualContent>{f:yyyy}{f:MM}{f:dd}-{f:HH}{f:mm}{f:dd}</TextualContent>
               <Name>vers</Name>
             </UrlVariable>
           </value>
         </item>
       </Variables>
       <ExecuteCommand />
       <ExecutePreCommand />
       <Category>000100</Category>
       <SourceType>FixedUrl</SourceType>
       <PreviousLocation>D:\Stuff\filestore\Updaters\Ketarin-1.0.1.197_20090211-093911.zip</PreviousLocation>
       <DeletePreviousFile>true</DeletePreviousFile>
       <Enabled>true</Enabled>
       <FileHippoId />
       <LastUpdated>2009-02-12T06:01:23.678625</LastUpdated>
       <TargetPath>D:\Stuff\filestore\Updaters\{url:basefile}_test1_{f:yyyy}{f:MM}{f:dd}-{f:HH}{f:mm}{f:dd}.{url:ext}</TargetPath>
       <FixedDownloadUrl>http://ketarin.canneverbe.com/download</FixedDownloadUrl>
       <Name>Ketarin official</Name>
     </ApplicationJob>
    </Jobs>

     

     

    03a-ketarin_official.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="52ebd154-fd7a-4cbb-a191-cd905d276320">
       <DownloadBeta>Default</DownloadBeta>
       <DownloadDate xsi:nil="true" />
       <VariableChangeIndicator />
       <CanBeShared>true</CanBeShared>
       <ShareApplication>false</ShareApplication>
       <ExclusiveDownload>false</ExclusiveDownload>
       <HttpReferer />
       <Variables>
         <item>
           <key>
             <string>vers</string>
           </key>
           <value>
             <UrlVariable>
               <VariableType>Textual</VariableType>
               <Regex />
               <TextualContent>{f:yyyy}{f:MM}{f:dd}-{f:HH}{f:mm}{f:dd}</TextualContent>
               <Name>vers</Name>
             </UrlVariable>
           </value>
         </item>
         <item>
           <key>
             <string>vers1</string>
           </key>
           <value>
             <UrlVariable>
               <VariableType>Textual</VariableType>
               <Regex />
               <TextualContent>{vers}</TextualContent>
               <Name>vers1</Name>
             </UrlVariable>
           </value>
         </item>
       </Variables>
       <ExecuteCommand />
       <ExecutePreCommand />
       <Category>000100</Category>
       <SourceType>FixedUrl</SourceType>
       <PreviousLocation>D:\Stuff\filestore\Updaters\Ketarin-1.0.1.197_20090211-093911.zip</PreviousLocation>
       <DeletePreviousFile>true</DeletePreviousFile>
       <Enabled>true</Enabled>
       <FileHippoId />
       <LastUpdated>2009-02-12T06:01:23.678625</LastUpdated>
       <TargetPath>D:\Stuff\filestore\Updaters\{url:basefile}_test1_{vers1}.{url:ext}</TargetPath>
       <FixedDownloadUrl>http://ketarin.canneverbe.com/download</FixedDownloadUrl>
       <Name>Ketarin official</Name>
     </ApplicationJob>
    </Jobs>

     

     

    03b-ketarin_official.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="52ebd154-fd7a-4cbb-a191-cd905d276320">
       <DownloadBeta>Default</DownloadBeta>
       <DownloadDate xsi:nil="true" />
       <VariableChangeIndicator />
       <CanBeShared>true</CanBeShared>
       <ShareApplication>false</ShareApplication>
       <ExclusiveDownload>false</ExclusiveDownload>
       <HttpReferer />
       <Variables>
         <item>
           <key>
             <string>vers</string>
           </key>
           <value>
             <UrlVariable>
               <VariableType>Textual</VariableType>
               <Regex />
               <TextualContent>{f:yyyy}{f:MM}{f:dd}-{f:HH}{f:mm}{f:dd}</TextualContent>
               <Name>vers</Name>
             </UrlVariable>
           </value>
         </item>
         <item>
           <key>
             <string>vers1</string>
           </key>
           <value>
             <UrlVariable>
               <VariableType>Textual</VariableType>
               <Regex />
               <TextualContent>{vers}</TextualContent>
               <Name>vers1</Name>
             </UrlVariable>
           </value>
         </item>
       </Variables>
       <ExecuteCommand />
       <ExecutePreCommand />
       <Category>000100</Category>
       <SourceType>FixedUrl</SourceType>
       <PreviousLocation>D:\Stuff\filestore\Updaters\Ketarin-1.0.1.197_20090211-093911.zip</PreviousLocation>
       <DeletePreviousFile>true</DeletePreviousFile>
       <Enabled>true</Enabled>
       <FileHippoId />
       <LastUpdated>2009-02-12T06:01:23.678625</LastUpdated>
       <TargetPath>D:\Stuff\filestore\Updaters\{url:basefile}_test1_{vers1}.{url:ext}</TargetPath>
       <FixedDownloadUrl>http://ketarin.canneverbe.com/download</FixedDownloadUrl>
       <Name>Ketarin official</Name>
     </ApplicationJob>
    </Jobs>

     

     

    04a-ketarin_official.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="52ebd154-fd7a-4cbb-a191-cd905d276320">
       <DownloadBeta>Default</DownloadBeta>
       <DownloadDate xsi:nil="true" />
       <VariableChangeIndicator />
       <CanBeShared>true</CanBeShared>
       <ShareApplication>false</ShareApplication>
       <ExclusiveDownload>false</ExclusiveDownload>
       <HttpReferer />
       <Variables>
         <item>
           <key>
             <string>vers</string>
           </key>
           <value>
             <UrlVariable>
               <VariableType>Textual</VariableType>
               <Regex />
               <TextualContent>{f:yyyy}{f:MM}{f:dd}-{f:HH}{f:mm}{f:dd}</TextualContent>
               <Name>vers</Name>
             </UrlVariable>
           </value>
         </item>
         <item>
           <key>
             <string>vers1</string>
           </key>
           <value>
             <UrlVariable>
               <VariableType>Textual</VariableType>
               <Regex />
               <TextualContent>sometextualcontent</TextualContent>
               <Name>vers1</Name>
             </UrlVariable>
           </value>
         </item>
       </Variables>
       <ExecuteCommand />
       <ExecutePreCommand />
       <Category>000100</Category>
       <SourceType>FixedUrl</SourceType>
       <PreviousLocation>D:\Stuff\filestore\Updaters\Ketarin-1.0.1.197_20090211-093911.zip</PreviousLocation>
       <DeletePreviousFile>true</DeletePreviousFile>
       <Enabled>true</Enabled>
       <FileHippoId />
       <LastUpdated>2009-02-12T06:01:23.678625</LastUpdated>
       <TargetPath>D:\Stuff\filestore\Updaters\{url:basefile}_test1_{vers1}.{url:ext}</TargetPath>
       <FixedDownloadUrl>http://ketarin.canneverbe.com/download</FixedDownloadUrl>
       <Name>Ketarin official</Name>
     </ApplicationJob>
    </Jobs>

     

     

    04b-ketarin_official.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="52ebd154-fd7a-4cbb-a191-cd905d276320">
       <DownloadBeta>Default</DownloadBeta>
       <DownloadDate xsi:nil="true" />
       <VariableChangeIndicator />
       <CanBeShared>true</CanBeShared>
       <ShareApplication>false</ShareApplication>
       <ExclusiveDownload>false</ExclusiveDownload>
       <HttpReferer />
       <Variables>
         <item>
           <key>
             <string>vers</string>
           </key>
           <value>
             <UrlVariable>
               <VariableType>Textual</VariableType>
               <Regex />
               <TextualContent>{f:yyyy}{f:MM}{f:dd}-{f:HH}{f:mm}{f:dd}</TextualContent>
               <Name>vers</Name>
             </UrlVariable>
           </value>
         </item>
         <item>
           <key>
             <string>vers1</string>
           </key>
           <value>
             <UrlVariable>
               <VariableType>Textual</VariableType>
               <Regex />
               <TextualContent>sometextualcontent</TextualContent>
               <Name>vers1</Name>
             </UrlVariable>
           </value>
         </item>
       </Variables>
       <ExecuteCommand />
       <ExecutePreCommand />
       <Category>000100</Category>
       <SourceType>FixedUrl</SourceType>
       <PreviousLocation>D:\Stuff\filestore\Updaters\Ketarin-1.0.1.197_20090211-093911.zip</PreviousLocation>
       <DeletePreviousFile>true</DeletePreviousFile>
       <Enabled>true</Enabled>
       <FileHippoId />
       <LastUpdated>2009-02-12T06:01:23.678625</LastUpdated>
       <TargetPath>D:\Stuff\filestore\Updaters\{url:basefile}_test1_{vers1}.{url:ext}</TargetPath>
       <FixedDownloadUrl>http://ketarin.canneverbe.com/download</FixedDownloadUrl>
       <Name>Ketarin official</Name>
     </ApplicationJob>
    </Jobs>

  2. There is no record of any checks for the disk filename...?

     

    1. Pass 1: CTRL-U on existing app entry, disk file already exists, no new versions, no download. (Correct.)

     

    Disk file name is specified as:

    D:\Stuff\filestore\Updaters\{url:basefile}_{f:yyyy}{f:MM}{f:dd}-{f:HH}{f:mm}{f:dd}.{url:ext}

     

    2/12/2009 2:56:41 PM: Ketarin official: Checking if update is required...

    2/12/2009 2:56:41 PM: Ketarin official: Update not required

    2/12/2009 2:56:41 PM: Ketarin official: Replacing {vers} in '{vers}' with '20090211-093911'

    2/12/2009 2:56:42 PM: Update finished

     

     

    2. Edit app to change disk filename only.

    3. Pass 2: CTRL-U on same app, disk file does not exist, no new versions, no download (incorrect, to me).

     

    Disk file name is specified as:

    D:\Stuff\filestore\Updaters\{url:basefile}_released_{f:yyyy}{f:MM}{f:dd}-{f:HH}{f:mm}{f:dd}.{url:ext}

     

    2/12/2009 2:57:18 PM: Ketarin official: Checking if update is required...

    2/12/2009 2:57:18 PM: Ketarin official: Update not required

    2/12/2009 2:57:18 PM: Ketarin official: Replacing {vers} in '{vers}' with '20090211-093911'

    2/12/2009 2:57:18 PM: Update finished

     

    Thanks for help,

    --appyface

  3. I edited an app entry to have a new disk output file name, then ran update on it with CTRL-U, but Ketarin did not download the file again to the new disk file name. This was working in previous Ketarin?

     

    The current app was previously downloaded so there was no new version, this pass was strictly for re-downloading the file to a different disk file name.

     

    I am not using Change Indicator Variable, and I do not have 'delete prior versions' marked.

     

    I checked Ketarin's logs and there is no mention of having looked for the output filename.

     

    Help?

     

    Thanks,

    --appyface

  4. OK -- since the premise of the CIV is to control whether Ketarin downloads (or not), I didn't catch that wrinkle. "Let's" document this soon :-) as I don't think it will be immediately apparent just why the CIV is being ignored. Maybe still write a log entry that the CIV is being ignored one-time only due to first time use of CIV or because the variable name was changed?

     

    Thanks for clarifying,

    --appyface

  5. If I am understanding you correctly, then Ketarin will completely ignore the presence of the Change Indicator Variable on the first update check with it, or ignore it on the first update check that is using a different variable name?

     

    OK let's take that through the same example I've been using:

     

    1. My CIV was referencing {testvar}, the last value saved for CIV was 20090208test.

     

    2. I change the CIV to use {vers} instead and issue CTRL-U.

     

    3. Ketarin doesn't download. This looks OK to me (but not for the right reason -- I know that {vers} contained '2.16.830' the last time, and it has not changed this time.)

     

    4. Ketarin saves '2.16.830' for the CIV before concluding.

     

    5. I repeat the CTRL-U. Unless by some twist of fate {vers} just got a new value, Ketarin still won't download because the saved value and the current value of the CIV are a match. OK that still seems right. If and when {vers} gets a new value, Ketarin will download.

     

     

    Now, let's try altering the example slightly:

     

    1. My CIV was referencing {testvar}, the last value saved for CIV was 20090208test.

     

    2. I change the CIV to use {vers} instead and issue CTRL-U.

     

    3. Ketarin doesn't download. This time {vers} got a new value of '2.16.900' though, which is different from last time.

     

    4. Ketarin saves '2.16.900' for the CIV before concluding.

     

    5. I repeat the CTRL-U. Unless by some twist of fate {vers} just got a new value again, Ketarin still doesn't download because now the saved value and the current value of the CIV are a match.

     

    In this case it looks like I will never get this new file (unless I stop using a CIV altogether)? Or do I still not understand what you're proposing when variable used for the CIV is changed?

  6. Perhaps you feel it is just semantics :-) but I disagree, the current log wording will still be inaccurate if you clear the previous value when the variable is changed.

     

    Replacing {vers} in '{vers}' with '2.16.830'

    Update required, {vers} has changed from '20090208test' to '2.16.830'

     

    Even if it were to state:

    Update required, {vers} has changed from ' ' to '2.16.830'

     

    that will still not be correct, as {vers} has *not* changed from last run to this run. Only the value stored for the CIV does not match the current value derived for it...

     

    That's what I was getting at. Do you see what I mean?

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

  8. @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

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

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

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

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

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

  14. I have Ketarin set to use 5 threads. As a result, if I use the 'update now' button, Ketarin zooms ahead, resolving variables, and happily logging events as they are encountered, for my many many apps. :-)

     

    However, the Log Viewer does not always include the name of the app entry in Ketarin, or any other ID which I could use to identify the associated app entry? This is not a huge deal but it does making troubleshooting somewhat interesting and a bit tedious at times.

     

    Could we have every Log Viewer line contain the name of the Ketarin entry to which it belongs?

     

    (Another idea, would be to assign a unique number, say 6 digits in length so as not to run out :) to each entry created in Ketarin, and just use that number in the Log Viewer instead. Just in case there are duplicate app entry names, which I believe Ketarin still allows?)

     

     

    It's fine to me that the Log Viewer lines are generated in the order they occur. If each line identified the associated app somehow, I could simply copy out the log to text editor or other utility, then sort the log on app identification.

     

    Thoughts? Thanks as always,

    --appyface

     

    Here's the first several lines from the Log Viewer. Some lines already identify the entry they are from, for others it is difficult to tell which entry they apply to.

     

    Add to that, subsequent launch and 'update now' in Ketarin produces Log Viewer entries in a different order. Apps are still in sorted order by name, but it just depends on how fast the threads in Ketarin zoom ahead, as to what gets entered.

     

                                 2/7/2009 10:57:05 AM: Update started with 68 application(s)
    CCleaner:                     2/7/2009 10:57:05 AM: Replacing {majvers1} in '{majvers1}{majvers2}' with '2'
    ATI catalyst driver:          2/7/2009 10:57:06 AM: Replacing {skimurl} in '{skimurl}' with 'https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/gamesite/9-1_xp32_dd_74230.exe'
    CCleaner:                     2/7/2009 10:57:06 AM: Replacing {majvers2} in '2{majvers2}' with '16'
    CCleaner:                     2/7/2009 10:57:06 AM: Replacing {majorvers} in 'http://download.piriform.com/ccsetup{majorvers}.exe' with '216'
    ATI catalyst control center:  2/7/2009 10:57:06 AM: Replacing {skimurl} in '{skimurl}' with 'https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/gamesite/9-1_xp32-64_ccc_lang1_74232.exe'
    (has ID already)              2/7/2009 10:57:06 AM: ATI catalyst driver: Checking if update is required...
    (has ID already)              2/7/2009 10:57:06 AM: ATI catalyst driver: Update not required
    (has ID already)              2/7/2009 10:57:06 AM: ATI catalyst control center: Checking if update is required...
    (has ID already)              2/7/2009 10:57:06 AM: ATI catalyst control center: Update not required
    Which one of the ATI entries? 2/7/2009 10:57:06 AM: Replacing {vers} in '{vers}' with '9.1'
    The other ATI entry...        2/7/2009 10:57:06 AM: Replacing {vers} in '{vers}' with '9.1'
    CCleaner:                     2/7/2009 10:57:06 AM: Replacing {vers} in 'D:\Stuff\filestore\Win_tips_and_tweaks\ccsetup216_{vers}.exe' with '2.16.830'
    (has ID already)              2/7/2009 10:57:06 AM: CCleaner: Checking if update is required...
    (has ID already)              2/7/2009 10:57:06 AM: CCleaner: Update not required
    

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

  16. @CybTekSol

     

    No worries, it's all good :) I'm sorry for your long hours, though...

     

    Well. You are right, I used to have an app entry using something other than 'vers' for a CIV (hey I just made that up: Change Indicator Variable). I don't do this any longer. But at the time it served me well, however funky :)

     

    The only requirement for the CIV, of course, is that it has meaning to YOU with respect to controlling whether Ketarin downloads (or not). Using the CIV to watch for something other than version number or 'changed on' date for versionless apps, is likely to be rare or even non-existent. After all, the whole idea behind Ketarin is to watch for and download new app versions :)

     

    Still, consider this scenario. As stated above, I don't do this any longer, thanks to Ketarin's continual improvement to provide simplified but accurate notifications of new app versions.

     

    1. The app's website offers the currently released, public version app URL. (Similar to Ketarin's URL on Ketarin's official website, which downloads new Ketarin version only when it is publicly released.)
       
    2. The app's website also offers development builds of this app from time to time, URLs are located in another place on the site.
       
    3. The app's 'dev build' page offers a unique URL when there is a new dev build (contains the version and build info). I used a regex to scrape that URL into a variable for Ketarin to download from. Nothing unusual there.
       
    4. When the current dev cycle ends, and the last dev build becomes the current public release, unfortunately the last dev build URL remains on the dev build page. (Would be simpler if it didn't.) However, the author was very consistent in throwing an '*' on the page when this happened, pointing out a footnote such as, "The current development cycle has ended, the last development build has been released" or similar. The consistent appearance of the '*' character formed the basis for the CIV 'trick' I had employed!
       

    Forgetting the presence of the CIV for a moment, the dev build is a fairly typical Ketarin entry, very similar to the one I have for the released version of the app.

     

    Now recall from item #4 above, the last dev build URL will remain unchanged and be scraped 'forever' once it has gone to released status, or until the next dev build URL is posted. Ketarin will correctly avoid downloading from this URL whenever it has not changed.

     

    Those two Ketarin entries (one for released app, one for dev build of app) ought to be enough to visually indicate when the released app is new and the dev build is not. Should have no need of a CIV variable, right? Keep in mind, I established the following somewhat quirky CIV 'scheme', back when all of Ketarin's visual status icons would reset with the next Ketarin command (they don't any longer, in most cases, which is very helpful).

     

    I didn't always make a note of all that had been updated or was not updated, before I lost the icons. Sure I could use the log view, or I could use something like the nice text listing presented by mazzthepianoman here:

    http://ketarin.canneverbe.com/forum/viewtopic.php?id=93 to give me this info. But I preferred that Ketarin should hit me with a 2x4 if the dev build became released, instead. :)

     

    1. As already mentioned, for the dev build download, I scraped the changing-until-released unique download URL, which already contained the dev build version info in the URL and downloaded filename.
       
    2. My CIV variable was made up of a concatenation of a bit of text (more on that in a bit) and the current dev build's version which I scraped from the same unique download URL. Recall that the presence of a CIV controls all downloading. I needed to ensure the CIV would change whenever a new dev build was released, so I would always get the new download.
       
    3. I also used this same CIV variable in the output disk filename for the dev build. The use of the CIV in the disk filename was completely redundant, as the URL provided a disk file name with the current dev build versioning. But herein lies the 'trick' -- the little bit of text concatenated into the CIV variable with the versioning.
       

    Thanks to the consistency of the website author in always adding an '*' to some otherwise static text, if the dev build became released, I was able to use this to my advantage. Normally the little bit of text was static, so it was the version number in the CIV that had to change, to get me the dev build download.

     

    But when the author released the latest dev build, the dev build version number remained the same. But I'd get an '*' included with the little bit if text part of the CIV. So again the CIV had changed, telling Ketarin to try to download.

     

    If you know your Windows filesystem constructs, then you know that an '*' character is illegal in a disk filename. When the dev build went released, the CIV (which was part of the disk filename) suddenly contained an '*', which forced Ketarin to throw me an error dialog, aka a 2x4 that the dev build had been released.

     

    How's that for funky? LOL

     

    Sorry for a long long post, CybTekSol! If you have the time to go step-by-step and visualize the pieces as they are presented, you will understand how the CIV could be tricked into giving me the notification I desired.

     

    I do believe the CIV will end up with only two real uses, and it will contain only version related info (version number or changed-on date, as examples). Other peculiar uses like the example I give here, will not be necessary because there are easier ways to get what you need, now.

     

    1. To stop Ketarin from showing 'false positives'. Use of the CIV will prevent Ketarin from repeated downloading of the same app version, whenever other (erroneous) indications of update are present (such as a change in the file dates on the server)
       
    2. To prevent unintended loss of previous version disk file. Use of the CIV, when the CIV is also part of the disk file name, will prevent Ketarin from overwriting an old disk file (versioned) name with different app contents.
       

     

    I hope this long post is not overwhelming and is helpful! However weird :)

     

    Best,

    --appyface

     

    P.S. @Flo -- I do still look forward to a change to Ketarin, for the issue that precipitated this thread. When the CIV is not being used, and 'delete prior versions' is not enabled, for Ketarin to detect when the current disk filename does not exist, and to download the same app version again.

  17. I'm so sorry, I'm failing to understand where your confusion is? Around what point(s)? Are you asking about the specific case I've already illustrated here in this thread? I've already stated I'm scraping a version number from a webpage... so I don't understand what part your question refers to. Throw me a bone? :)

  18. Sure!

     

    Define a variable (I scrape from webpage, but I believe almost any variable will work.)

     

    You put the variable on the 'advanced' tab in the setup for app.

     

    Here's how it works: This variable alone controls Ketarin's downloading. If the contents of this variable change, you want Ketarin to download the file. If the contents have not changed, Ketarin does not download the file, ignoring any other indications that it should download the file.

     

    This feature was originally intended to stop the periodic repeat downloading of the same exact file, because some other indicator such as the file dates on the server, had been changed.

     

    I do have a couple of apps like that. For whatever reason the file dates on the server change every few days, but the app has not been updated. Every time the file dates changed, Ketarin downloaded the file again, until I put the special variable in. I use version scraped from a page as my indicator -- if the scraped version number changes, Ketarin should get the file. Otherwise, no.

     

    (The only reason I didn't like the re-downloading is because it tricked me into thinking there was a new version available, but there wasn't.)

     

    So. We can use this special variable to protect against the accidental overwriting of a previous version too, when that variable is part of the disk file name like mine was.

     

    My version scrape was still 2.8.3 in this case. Had I been using this for the special variable, Ketarin would not have downloaded the new file (which is really 2.8.4). But I was not using the special variable, so Ketarin rightly detected that a new file was available, and faithfully wrote it to the disk name I specified, which still had 2.8.3 in the name.

     

    By not using the special variable to stop Ketarin from downloading, I lost my 2.8.3 version file. Ketarin overwrote it with the newer 2.8.4 version of the file.

     

    Then, the second part of this is what I started this thread for. Once I realized my version variable was not correct, I did change the scrape so my version variable was now coming in as 2.8.4. Ketarin had already downloaded that file, so there was nothing new to download, and it did not check further to see if the filename existed (it did not).

     

    Hope that helps. Let me know?

    --appyface

  19. I moved the jobs.db file to another directory and the program loads fine, though without my many jobs (obviously).

     

    This is different from my experience. I can use the exact same jobs.db and all my jobs and settings are still there, and they work as long as Ketarin's directory is not the name it had, when the weird window thing happened. I can rename Ketarin's directory back to that original name and Ketarin no longer works. Rename the directory to something else -- and all is fine again. Same jobs.db file.

     

    I have exported my jobs.db file. Then put Ketarin into a directory (not the original one) and let it create a brand-new, empty jobs.db file. I then imported my XML file of all jobs. All is well. I rename the directory, and Ketarin does not run.

     

    As I posted above, Ketarin does not run with a brand-new jobs.db with just one entry added to it (if in the original directory name). So for me my jobs.db does not have a problem at all, it is not corrupted and works fine. As does the one I created by importing my XML file of my jobs.

     

    Hope this helps,

    --appyface

  20. I have spent more than a little time trying to set up Ketarin to download this app, and have come up empty.

     

    Please note there are other places where I can download from with Ketarin, so getting the file is not my issue :) I'm peeved at not being able to solve the challenge :-)

     

    So don't feel like you have to spend a bunch of time looking at this, unless are also motivated by the challenge. :) (Or maybe it is not a challenge for you, in which case I feel really stupid LOL.)

     

     

    Here's the app: The latest released version of JavaSE JDK *from the official Sun website*.

     

    Here's the manual path to download the app:

     

    1. Visit here: http://java.sun.com/javase/downloads/index.jsp

     

    2. Click the 'download' button for the second listing (JDK 6 Update 12, at time of this writing)

     

    3. Receive this SSL page: https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=jdk-6u12-oth-JPR@CDS-CDS_Developer

     

    4. I select "Windows" for platform, mark the box to agree to Sun's license, and click the 'Continue' button.

     

    5. Receive this SSL page: https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewFilteredProducts-SingleVariationTypeFilter

     

    6. I right-click the download filename (jdk-6u12-windows-i586-p.exe) and choose "save target as". From there I download the file.

     

     

    Ignoring for a moment, the fact that all these links except the first download page, are hardcoded to a specific version of the app, I can't even get an entry in Ketarin to download the hard-coded one! This just bugs me :)

     

    Of course the real goal would be to have Ketarin download whatever is the current version.

     

    If anyone is interested in taking up the challenge and figuring out how to configure Ketarin to get the app *from here*, I'm interested in your ideas.

     

    Good hunting!

    --appyface

  21. @CybTekSol

     

    I can't speak for the window position problem itself, but I can tell you that the follow on error I encountered to it ***, is NOT stored in the jobs.db file.

     

    I can recreate the follow on error 100% of the time with an empty jobs db file. OK, I do have to manually add at one record to the jobs.db otherwise Ketarin has nothing to do, to evidence the follow on error. I did add the record manually, I did not do any import of template, etc.

     

    So if this ever happens to you, I don't think there will be anything wrong with the jobs.db file itself... that's just my experience so far.

     

    --appyface

     

    *** Follow on error: Once the 'disappearing' normal window thing happened, Ketarin would throw very strange exceptions if I tried to update anything, tried to edit a variable and look at scraped webpage etc. Simplying renaming the directory Ketarin was in at the time of the lost window thing, completely removes the follow-on error and Ketarin works completely normally. If I rename the directory back to the name it had when the window thing happened, Ketarin will again throw weird exceptions.

     

    As mentioned above, I can put Ketarin into that original directory name, and let it create a brand-new jobs.db over in Documents and setttings when I first launch it. I can then leave the empty jobs.db over there, or I can move it into the directory with Ketarin.exe, it matters not. I do have to add one app to give Ketarin something to do. As soon as I have done that, I ask Ketarin to update the app and I get the same weird exceptions thrown. Rename the directory and all is well.

     

    Very strange .NET thing, I think Flo is right about that.

     

    FWIW I posted this on a C# .NET forum to see if anyone had encountered this, but I did not immediately post the actual exception thrown.

     

    After getting immediately blasted by two a**hole defenders of .NET that it MUST be an applicaton problem (why do people think they are helping, with that attitude toward the helpee?), I pointed out to them they should not shoot the messenger :-) And that I was careful to state "possible bug" "how can I confirm that it IS a bug with .NET and not an app problem" etc.

     

    I then posted the actual exception. There has been absolute silence since then :-) I hope they realize they were rude, but I still would like to get the attention of Microsoft on it, if it is in fact a .NET bug... The window size thing and this exception follow on, helps no one...

  22. @Kerberos

     

    Thanks for looking at this one. It *is* odd, isn't it? And it's certainly no show-stopper, just an annoyance to me. As you said, maybe Flo will have some ideas. Though if it is a problem in .NET or Windows I'm probably outta luck :-)

     

    Thanks!

    --appyface

×
×
  • 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.