|
sba
|
 |
« on: April 03, 2012, 10:04:30 AM » |
|
Hi,
I have ScreenShotCaptor 3.03.01 installed (that's what its About box says) still DcUpdater reports I have 2.103.01 installed... and thus wants to upgrade.
What's up, doc?
|
|
|
|
|
Logged
|
|
|
|
|
mouser
|
 |
« Reply #1 on: April 03, 2012, 10:15:43 AM » |
|
It has to be getting the 2.103 from somewhere... The file it uses is called "ScreenshotCaptor.dcupdate" in your screenshot captor program files directory. See if you can find that file and open it in a text editor and see what it says. The other thing you can do is in dcupdater, choose menu View -> Show Advanced Controls. Then drag the bottom of the window up if it's all the way down, select Screenshot Captor in the main window, and see what it says for "DcUpdate File:" Example: 
|
|
|
|
|
Logged
|
|
|
|
|
sba
|
 |
« Reply #2 on: April 03, 2012, 10:53:32 AM » |
|
The problem is that there was another file at:
C:\Users\sba\AppData\Local\VirtualStore\Program Files (x86)\ScreenshotCaptor\ScreenshotCaptor.dcupdate
that contained 2.103.01
This file was probably created by either: - installing ScreenShotCaptor without using "run as administrator" - running ScreenShotCaptor as a non-admin user just after installation
In either case, the file virtualization mechanism (introduced in Vista) has kicked in and redirected the attempt to write to C:\Program Files (x86)\ScreenshotCaptor (which a non-admin user is not allowed to do).
After I have deleted C:\Users\sba\AppData\Local\VirtualStore\Program Files (x86)\ScreenshotCaptor and relaunched ScreenShotCaptor, DcUpdater reports the correct version, BUT the file C:\Users\sba\AppData\Local\VirtualStore\Program Files (x86)\ScreenshotCaptor\ScreenshotCaptor.dcupdate has been recreated.
Unfortunately I fear that at the next update ScreenShotCaptor might update C:\Users\sba\AppData\Local\VirtualStore\Program Files (x86)\ScreenshotCaptor\ScreenshotCaptor.dcupdate, leaving C:\Program Files (x86)\ScreenshotCaptor\ScreenshotCaptor.dcupdate unchanged, causing another version discrepancy.
Another explanation would be that running ScreenShotCaptor as an admin user will populate C:\Program Files (x86)\ScreenshotCaptor\ScreenshotCaptor.dcupdate, whereas running an update check from within ScreenShotCaptor running as non-admin user will cause DcUpdater to look at C:\Users\sba\AppData\Local\VirtualStore\Program Files (x86)\ScreenshotCaptor\ScreenshotCaptor.dcupdate.
Get the picture?
IMVHO running an app should not populate a per-user file containing version information. Instead, the app's installer should populate a system-wide file containing version information. But I'm just wearing my software developer hat on here ;-)
P.S. Without Process Monitor I would not have been able to troubleshoot this.
|
|
|
|
|
Logged
|
|
|
|
|
|
mouser
|
 |
« Reply #3 on: April 03, 2012, 11:05:54 AM » |
|
Great detective work.
The part that confuses me is how that virtualstore copy of ScreenshotCaptor.dcupdate is being created in the first place..
That file should ALWAYS and ONLY be created during the installation process, which is always run as administrator (and thus has permission to write into the real Program Files (x86)\Screenshot Captor directory.. Running Screenshot Captor should not create this file in any scenario -- and I can't find any code where it does.
Whether you run Screenshot Captor as admin or not should not result in the creation of a .dcupdate file. Nothing should be able to create this file other than the installer. Very odd.
|
|
|
|
|
Logged
|
|
|
|
|
sba
|
 |
« Reply #4 on: April 03, 2012, 11:14:38 AM » |
|
The plot thickens.
Here's what I have just done (running as a non-admin user):
- shut down ScreenShotCaptor - destroy both C:\Users\sba\AppData\Local\VirtualStore\Program Files (x86)\ScreenshotCaptor and C:\Users\sba\AppData\Local\VirtualStore\Program Files (x86)\DcUpdater directories - launch ScreenShotCaptor -- nothing happens in the virtualstore - perform an update check using ScreenShotCaptor's context menu: this launches DcUpdater which recreates both directories with the following contents:
DcUpdater/: Installables dcupdater.dcupdate
DcUpdater/Installables: ClipboardHelpAndSpell.dcupdate ProcessTamer.dcupdate FindAndRunRobot.dcupdate ScreenshotCaptor.dcupdate FlipbookPrinter.dcupdate TheFormLetterMachine.dcupdate LaunchBarCommander.dcupdate URLSnooper.dcupdate PointMotivator.dcupdate UnicodeImageMaker.dcupdate
ScreenshotCaptor/: ScreenshotCaptor.dcupdate
Could be that DcUpdater attempts to update part of this in the non-virtualized directory (or just opens files in read-write mode even if it just wants to read?), this fails, causing the virtualization to do its magic?
|
|
|
|
|
Logged
|
|
|
|
|
mouser
|
 |
« Reply #5 on: April 03, 2012, 11:21:54 AM » |
|
Very interesting and some good theories.. let me go check DcUpdater code and see if it's being naughty as your evidence suggests..
|
|
|
|
|
Logged
|
|
|
|
|
mouser
|
 |
« Reply #6 on: April 03, 2012, 11:48:17 AM » |
|
By the way have I mentioned that I believe Microsoft's hidden Virtual Store has to be one of the worst, stupidist decisions anyone has made in the 21st century?
|
|
|
|
|
Logged
|
|
|
|
|
mouser
|
 |
« Reply #7 on: April 03, 2012, 12:02:15 PM » |
|
Ok i think I might have located the problem -- and it looks like you were basically right in your theory about dcupdater opening a file in readwrite mode when it shouldn't be!
I should have known where to look in my code because I have a function in my code called (apologies for the curse word): FixupFuckedLibCurlXmlDownloadedFile()
And obviously I was in a bad mood when I wrote that sucker.. Basically the .dcupdate files could come from local directory or be temp downloaded files. In the latter case it looks like libcurl is mucking with the files when it shouldn't and was requiring me to do a little kludge to patch them up.
My mistake was opening ALL such files as readwrite in that function, in the off chance that they would have to be modified.
I'm fixing it now so that the files are ONLY opened as readwrite (or indeed checked for bad libcurl issue) if they are downloaded temp files.
New version should be imminent.
|
|
|
|
|
Logged
|
|
|
|
|
mouser
|
 |
« Reply #8 on: April 03, 2012, 12:07:53 PM » |
|
You know, we have had the occasional odd report of DcUpdater detecting the wrong version, with inconclusive hunts for the cause. I believe you have likely caught the beast responsible, sba. For that I say thanks. 
|
|
|
|
|
Logged
|
|
|
|
|
sba
|
 |
« Reply #9 on: April 03, 2012, 01:26:55 PM » |
|
U're welcome.
Indeed I'd experienced this kind of problem for quite some time, but hadn't bitten the bullet 'til today.
I'm assuming a public update to DcUpdater (that it will detect ;-) ) will be online soon.
|
|
|
|
|
Logged
|
|
|
|
|
mouser
|
 |
« Reply #10 on: April 03, 2012, 01:47:19 PM » |
|
With sba's help the problem is fixed; I will be uploading a new version of DcUpdater tonight.
|
|
|
|
|
Logged
|
|
|
|
|
db90h
|
 |
« Reply #11 on: April 03, 2012, 02:28:47 PM » |
|
That's a nice updater. I never noticed it before, somehow
|
|
|
|
|
Logged
|
|
|
|
|
sba
|
 |
« Reply #12 on: April 04, 2012, 02:43:05 AM » |
|
Note that in order to get your system back to normal letting DcUpdater update itself to 1.30.01 is not enough. You must delete the following two directories:
C:\Users\<user>\AppData\Local\VirtualStore\Program Files (x86)\ScreenshotCaptor C:\Users\<user>\AppData\Local\VirtualStore\Program Files (x86)\DcUpdater
(removing ' (x86)' if you're not running 64-bit Windows).
Otherwise, DcUpdater will keep believing 1.28.01 is installed and will reinstall 1.30.01 forever.
HTH
|
|
|
|
|
Logged
|
|
|
|
|
mouser
|
 |
« Reply #13 on: April 04, 2012, 02:47:21 AM » |
|
Ah i should have built into the new version a manifest to tell it not to be able to use virtual store.. perhaps it's not too late.
|
|
|
|
|
Logged
|
|
|
|
|
mouser
|
 |
« Reply #14 on: April 04, 2012, 02:56:59 AM » |
|
Can some of you windows 7 users manually download the brand new updater that i just uploaded with a manifest file: http://www.donationcoder....nloads/DcUpdaterSetup.exeAnd tell me if it works on on windows 7? This should bypass any virtual store, I hope. I just want to make sure I didn't break anything with the new manifest.
|
|
|
|
|
Logged
|
|
|
|
|
sba
|
 |
« Reply #15 on: April 04, 2012, 03:06:30 AM » |
|
I've intentionally restored the virtualstore stuff (incl. the DcUpdater file for DcUpdater claiming it's 1.28.1), installed your new build, and it does ignore the virtualstore information.
|
|
|
|
|
Logged
|
|
|
|
|
mouser
|
 |
« Reply #16 on: April 04, 2012, 03:12:23 AM » |
|
Thank you so much for the report and all the help sba, I think we might be able to close the book on this one, and i can get some sleep after a frustrating day.
|
|
|
|
|
Logged
|
|
|
|
|
sba
|
 |
« Reply #17 on: April 04, 2012, 03:20:47 AM » |
|
You're welcome. And sorry if you get the feeling I got you frustrated. Bugs are a fact of life, we're just humans  Have a good sleep!
|
|
|
|
|
Logged
|
|
|
|
|
mouser
|
 |
« Reply #18 on: April 04, 2012, 07:43:02 AM » |
|
And sorry if you get the feeling I got you frustrated. Not at all.. And I've said it before and I'll say it again: I am amazed at the patience people have in the face of some bugs and frustrations. If I had half the patience of you guys I would be a better person. It takes very little to have me screaming and cursing at my monitor..
|
|
|
|
|
Logged
|
|
|
|
|
sba
|
 |
« Reply #19 on: April 04, 2012, 07:48:19 AM » |
|
I sometimes do yell at my monitor, too 
|
|
|
|
|
Logged
|
|
|
|
|
|
|
mouser
|
 |
« Reply #21 on: February 19, 2013, 09:31:36 AM » |
|
you have 2 copies of screenshot captor installed. you can see the second one is: C:\Program Files (x86)\ScreenshotCaptor\ScreenshotCaptor\
that shouldnt be there, it should be in C:\Program Files (x86)\ScreenshotCaptor\
|
|
|
|
|
Logged
|
|
|
|
|
sba
|
 |
« Reply #22 on: February 19, 2013, 09:52:28 AM » |
|
I swear I didn't intentionally install it to the incorrect directory. Only 3.08.01 shows up in "Add or remove programs." Did you at some point change the installation defaults? I've uninstalled 3.08.01 using Control Panel and then renamed the C:\Program Files (x86)\ScreenshotCaptor directory to C:\Program Files (x86)\_ScreenshotCaptor After that I reinstalled 3.08.01. Situation's now back to normal. Until.... 
|
|
|
|
|
Logged
|
|
|
|
|