Recommended Posts

what i've been doing recently:

i've been trying to solve the prerequisite problem! i've been experimenting with the solution based around timestamps. i have a good framework setup, however the meat of the functionality is what i've been struggling with. you see, when NSIS gets a 'last modified' timestamp it's trying to access a 64bit number. NSIS can only handle 32bit numbers and so has to fetch it as two separate numbers. since the numbers are binary (and taken as signed numbers too) you can't just print out the decimal representation of each, one following the other because due to being thought to be two separate signed numbers they are converted to decimal from binary int he wrong way. so first of all i had to work out how to convert the numbers correctly. another spanner in the works was that i was comparing the result with one from PHP so i could make sure i ended up with the correct result, however win32 and PHP use two different epochs (reference point in time from which a measurement of time is taken), 369 years apart, which had a huge impact on the result when you consider that the results are represented as seconds, and this confused me for a while.

after i sorted that out, i then needed to work out how to do it in code, because actually i don't need to do such calculations in code, that was just to make sure i understood it all correctly. however firstly its much more complicated than a little maths if i do it in code, and second i hit another stumbling block first...

the second stumbling block is the difference between timestamps from a windows system using the FAT file system and the NTFS file system. NTFS stores all timestamps from UTC+0, whereas FAT stores all timestamps depending on the timezone and DST settings of the system. so, the complication this arises is now as well as fetching the timestamp and doing some maths, i've also got to do a system call to fetch the file system type, if FAT then get the timezone offset from UTC+0 and do more maths to convert the timestamp to UTC+0.

however the bigger problem is whether moving files around from system to system actually converts times to the timezone of the system it's then on.

also, now that the script is going to use 'setoverwrite ifnewer' to decide whether to overwrite files when installing, how does this problem introduced by NTFS filetimes affect this, or does NSIS grab the timezone settings of the machine the release is compiled on so it can compensate for the difference when doing the 'ifnewer' check...

the prerequisite check is getting a bit complicated, so i'm going to look at other easier solutions, however i still need to investigate the above somehow because it could affect the 'ifnewer' check.

the other solution i'm going to look at was suggested by TheGratefulNed above, as is extremely simple, we simply tack a number onto the filenames of the rti files and increment it with each release. just a three digit number would provide 1000 releases, we can do this individually for each line of releases so the number of different releases (2k/xp/2k3/vista/etc) have no effect. lets say we have 12 releases a year though and allow for say an average of 3 re-releases a year (mistakes and releases have to be released again), then 1000 / 15 would do us good for 66 1/2 years, and current windows editions are definataley going to be history by then.

the only issues, with dynamic file names, will i be able to get the script to find a future rti file with an unknown number attached, and will people compiling releases remember to increment the number with each new release.

one of today's releases failed to install due to not meeting prerequisites. KB935966 requires C:\WINNT\system32\dns.exe to be there. if a solution to the prerequisites problem is getting too complicated maybe a compromise solution can be found. can AP look at the error code returned by update.exe and at the end of installing all updates list those that failed due to prerequisites not being met? this would be an improvement as at the moment AP doesn't give any indication why an update failed.

@theblazingangel here is C:\WINNT\KB935966.log

[KB935966.log]
0.320: ================================================================================
0.320: 2007/05/08 22:53:31.677 (local)
0.350: f:\50a4f3de5b36b6bd33\update\update.exe (version 6.2.29.0)
0.380: Hotfix started with following command line: 
0.510:  C:\WINNT\system32\dns.exe is Not Present
0.510: Condition Check for Line 1 of PreRequisite returned FALSE 
0.550: ReadStringFromInf: UpdSpGetLineText failed: 0xe0000102
0.550: KB935966 Setup encountered an error:  Setup cannot continue because one or more prerequisites required to install KB935966 failed. For More details check the Log File c:\winnt\KB935966.log
0.590: ReadStringFromInf: UpdSpGetLineText failed: 0xe0000102
0.590: Setup cannot continue because one or more prerequisites required to install KB935966 failed. For More details check the Log File c:\winnt\KB935966.log
8.161: Message displayed to the user: Setup cannot continue because one or more prerequisites required to install KB935966 failed. For More details check the Log File c:\winnt\KB935966.log
8.161: User Input: OK
8.161: Update.exe extended error code = 0xf0f4
8.161: Update.exe return code was masked to 0x643 for MSI custom action compliance.

im running w2k

@gandolas checking for dns.exe should be ok..though there may be more than that as a prerequisite. the log file states that it failed the check for line 1 on my w2k setup so this implies there may be further checks. i can investigate further in a test environment..create a dummy dns.exe and run the update and see if there are more prerequisites. but i think just checking for dns.exe does the trick.

I don't know if any other user had this problem, but after installing the latest Cumulative Security Update for Internet Explorer 6 (KB931768) (from May 2007), the Windows Update site says that i need:

- KB867801 from 7/30/2004

- KB832894 from 2/2/2004

all of them also Cumulative Security Update for Internet Explorer!!

They have broken something with the latest hotfix...

Edited by gandolas

yes posted in The Hotfix Depot thread:

  Quote
Windows Update found 3 new updates on W2K today (Tue. 8 May):

KB867801

KB931768

KB890830 Malicious software removal tool May 07

IE6.0sp1-KB931768-Windows2000-x86-ENU.exe installed fine. then did a restart as required.

MRT also installed fine.

but on running IE6.0sp1-KB867801-x86-ENU.exe it show message box "This update requires IE 6.0 service pack 1 to be installed" ?? i have IE 6.0 sp1 as my system is fully up to date. has WU given wrong info?...uncompressing IE6.0sp1-KB867801-x86-ENU.exe shows files dated 7 July 2004...an old update?

Two critial updates are released today, WU found 2, but kb867801 didnt work for me..

the update im missing ive found..Windows2000-KB935966-x86-ENU.EXE WU didnt list it...

WU didnt list KB832894...cumulative update thats what KB931768 is! ms have messed up here...

see recent post by @blaze, look like ms haven't included all updates in the latest IE6/7 cumulative update.

then again maybe its just a WU detection problem..

Edited by glutton4sw

I'm sure we could have sent you an outdated (February) version but we didn't. You'll receive May's version, don't worry. And I'm sure you were contacted by SteelTrepid (the CD sales manager) that explained you the situation. If you wanted your money back, you would get it.

You have to see that we are under a great stress, everyday people asking/demanding us to release a new version. If we don't release them, it's because they aren't ready.

And many times people forget that we aren't Microsoft. It's not our obligation to provide you this package. We do it because we want to help people, but many people don't realize that.

/rant off

Same as before:

Hotfix started with following command line: 
C:\WINDOWS\system32\snmp.exe is Not Present

so you have to create the following 2 bottom lines in the module:

(...)
[SystemComponents]
InternetExplorer=ANY
WindowsMediaPlayer=ANY
DotNetFramework=ANY
WindowsInstaller=ANY
MSNMessenger=ANY
ComponentFile=system:\snmp.exe
ComponentVersion=ANY
(...)

:)

Hi I am a new member to this forum but have been on this sight a lot for information and have used autopatcher for a while now so I would like to thank blaze and the others who have worked hard on this project, you sure have saved me many many hours of work. Its kind of funny actually, I wanted to do this very same thing and decided to look to see if it had indeed been done and what do you know I found autopatcher. I was like thank God I don't have to do all this work haha. I am a computer tech and I do some programming using the dot net framework so if I can do anything at all please by all means let me know. I think it is wonderful what yall are doing. Anyways thanks for the hard work and dedication to something you choose to do on your own. You may run into problems and what not and impatient people, but there are a lot of very appreciative folks out there like me. Take all the time you need because I know the outcome is going to be great and will save me many more hours of work. Job well done guys...

David Wilkerson

Blaze, you may want to look at this before the next release.

It fixes the problem with MSVHOST taking 100% CPU resources (Windows Update)

(this problem has been getting worse for the last 2 months)

It will ship on May 22nd but is being issued on MSDN right now.

I downloaded and installed without problem and it fixed the CPU usage.

http://support.microsoft.com/?kbid=927891

http://download.windowsupdate.com/v7/windo...Agent30-x86.exe

@rscomp, already got it

@everyone

ok, a few days ago a member of the autopatcher office team contacted me about something which resulted in me making another change to all the modules in the new releases, so that took a bit of time. i'm glad though because i found i hadn't made a previous change to modules in the addon packs which would have broken them.

then i found a problem with my install script when run in silent mode, i didn't realise that most of my functions were being skipped so i spent a day re-writing code to fix the problem and really improved a chunk of code in the process.

after that i decided a message box was definitely not good enough for prerequisite error messages so i've designed a custom page for that and done a bunch of work towards the framework of the prerequisite check.

tomorrow i need to spend loads of time driving because i'm retaking my driving test the day after. then the day after that it's my 21st and i have relatives coming over. i will be working on autopatcher at every opportunity i get though as usual.

all i have left to do is complete this darn prerequisite check and then it's sorted.

but it's not so easy. firstly i have realized that whatever solution i go with it needs to involve a version number of some sort, i was going to go with a three digit number that could be incremented with each release, but now i've realised thats no good because someone could easily make a mistake and to get the number of a previous release you would need access to the previous release which isn't good for someone taking over from someone else. instead i will go with an eight digit number representing the year, month, and then version e.g. 20070502 would be used for a release created in year 2007, month 05, and this is the second (or maybe third) version/edition meaning the user had to re-release it (e.g. like gandolas' vista release this month).

anyway, the bigger problem is what the solution will be

1) timestamps i previously ruled out because of issues surrounding NTFS/FAT timestamp conflicts, that however no longer seems to be an issue after all, buts it's still a pretty complex solution anyway so i'm ruling it out.

2) put a version in the filename of rti files

3) put a version in the summary field of rti files

4) put a version in separate .ver files, one will accompany each rti file

i won't go into much details, but choosing which of the remaining three solutions to go with is really complicated because it has such a big impact on the script, as well as the person creating the release. all solutions have good and bad points. once i know what i'm doing i should be able to hack it in and finalise the script within a couple of days.

i'm still extremely confident that it will be released this month and fairly soon.

Good luck with your driving test, took mine in Manchester 41 years ago, LOT less traffic.

Relax and pass, that's what I was told.

Almost failed my test here in the USA, left the test station driving on the left hand side, the tester laughed and said "we drive on the right hand side here, give it a try"

All the best.

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.