Archive: CompareDLLVersions


CompareDLLVersions
Can someone please give me an example of how to use the CompareDLLVersions command? Lets say I want to move DLL Files into a directory (that already has DLL files), but I want to use the CompareDLLVersions command to check the versions of the files to make sure that newer files don't get replaced by oldier files. How would I do that? Please give me an example.



Section "CompareDLLs"
SetOutPath $SYSDIR
CompareDLLVersions /STOREFROM mydll1.dll mydllnew
Goto xxx
mydllnew:
File mydll1.dll
xxx:
SectionEnd



Hope this Helps, What this does is the CompareDllVersions will determine how new your dll is to the one on the computer you are installing this on to. If it is new, then it will extract the DLL to the System Directory and then be done with it. The Goto is in case the installer's DLL is newer than yours. This is how I interpret it.

Hope this Helps,
-Duane Jeffers

Thanx
I haven't tried this yet, but thanks. I hope it works.


Help
It still doesn't work right. Can you give me an example? Ok, as an example, lets say Dllupdate.nsi is in C:\test, and the file DXTMSFT.DLL is also in C:\test. Ok lets say that another version of DXTMSFT.DLL is in C:\test2, and I want to make an installation file that'll install DXTMSFT.DLL into C:\test2, but it'll first check to see if the DXTMSFT.DLL in C:\test2 is newer or oldier than the one that's in the installation file (to make sure that it won't install an oldier version into C:\test2). How will I do that?
This is what I tried

Section "CompareDLLs"
SetOutPath C:\test2
CompareDLLVersions /STOREFROM DXTMSFT.DLL DXTMSFT.DLL
Goto xxx
DXTMSFT.DLL:
File DXTMSFT.DLL.dll
xxx:
SectionEnd

Do you think you can help? I would appreciate it a lot if someone can help. Thanks.


Here's how I got it going, ripped straight out of my .nsi so it should work. hope this helps :cool: :cool: :cool:

;DLL/OCX version checking stuff
SetOverwrite on
SetOutPath $SYSDIR
CompareDLLVersions /STOREFROM comdlg32.ocx $SYSDIR\comdlg32.ocx comdlg32_1newer comdlg32_2newer
comdlg32_1newer:
File comdlg32.ocx
RegDLL "$SYSDIR\comdlg32.ocx"
comdlg32_2newer:

didn't work
It didn't work but thanks anyways. It says error on line 3. I'll try to figure it out, but if someone can tell me why it's not working I would appreciate it. Thanks.


I assume you changed the $SYSDIR etc to the directories you actually want to use ($TEMP i think)
Anyway - line 3 sounds a bit too high up to be part of this code. Sounds like the problem is elsewhere in your script - post it up here and we'll take a look if you want


I got it working
Thanks