annotate pidgin/win32/nsis/pidgin-plugin.nsh @ 17464:a3e68bb05594

Patch from Amir Szekely to make the installer start up faster and use NSIS' built-in Windows version checking. Fixes #1289 (Thanks, Amir)
author Daniel Atallah <daniel.atallah@gmail.com>
date Wed, 30 May 2007 03:17:56 +0000
parents e11859350489
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15752
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
1 ;;
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
2 ;; Windows Pidgin NSIS installer plugin helper utilities
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
3 ;; Copyright 2005, Daniel Atallah <daniel_atallah@yahoo.com>
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
4 ;;
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
5 ;; Include in plugin installer scripts using:
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
6 ;; !addincludedir "${PATH_TO_PIDGIN_SRC}\pidgin\win32\nsis"
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
7 ;; !include "pidgin-plugin.nsh"
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
8 ;;
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
9
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
10 !define PIDGIN_REG_KEY "SOFTWARE\pidgin"
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
11
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
12 !define PIDGIN_VERSION_OK 0
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
13 !define PIDGIN_VERSION_INCOMPATIBLE 1
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
14 !define PIDGIN_VERSION_UNDEFINED 2
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
15
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
16 ; Extract the Pidgin Version from the registry
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
17 ; This will set the Error flag if unable to determine the value
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
18 ; Pop the value of the stack after calling this to get the value (unless Error Flag is set)
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
19 Function GetPidginVersion
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
20 Push $R0
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
21
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
22 ; Read the pidgin version
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
23 ClearErrors
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
24 ReadRegStr $R0 HKLM ${PIDGIN_REG_KEY} "Version"
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
25 IfErrors +1 GetPidginVersion_found
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
26 ; fall back to the HKCU registry key
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
27 ReadRegStr $R0 HKCU ${PIDGIN_REG_KEY} "Version"
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
28 IfErrors GetPidginVersion_done ; Keep the error flag set
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
29
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
30 GetPidginVersion_found:
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
31 Push $R0 ; Push the value onto the stack
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
32 Exch
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
33
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
34 GetPidginVersion_done:
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
35 ; restore $R0
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
36 Pop $R0
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
37 FunctionEnd
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
38
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
39 ; Check that the currently installed Pidgin version is compatible
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
40 ; with the plugin version we are installing
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
41 ; Push the Plugin's Pidgin Version onto the Stack before calling
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
42 ; After calling, the top of the Stack will contain the result of the check:
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
43 ; PIDGIN_VERSION_OK - If the installed Pidgin version is compatible w/ the version specified
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
44 ; PIDGIN_VERSION_INCOMPATIBLE - If the installed Pidgin version isn't compatible w/ the version specified
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
45 ; PIDGIN_VERSION_UNDEFINED - If the installed Pidgin version can't be determined
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
46 Function CheckPidginVersion
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
47 ; Save the Variable values that we will use in the stack
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
48 Push $R4
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
49 Exch
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
50 Pop $R4 ; Get the plugin's Pidgin Version
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
51 Push $R0
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
52 Push $R1
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
53 Push $R2
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
54
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
55 ; Read the pidgin version
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
56 Call GetPidginVersion
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
57 IfErrors checkPidginVersion_noPidginInstallFound
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
58 Pop $R0
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
59
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
60 ;If they are exactly the same, we don't need to look at anything else
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
61 StrCmp $R0 $R4 checkPidginVersion_VersionOK
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
62
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
63 ; Versions are in the form of X.Y.Z
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
64 ; If X is different or plugin's Y > pidgin's Y, then we shouldn't install
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
65
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
66 ;Check the Major Version
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
67 Push $R0
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
68 Push 0
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
69 Call GetVersionComponent
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
70 IfErrors checkPidginVersion_noPidginInstallFound ;We couldn't extract 'X' from the installed pidgin version
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
71 Pop $R2
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
72 Push $R4
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
73 Push 0
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
74 Call GetVersionComponent
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
75 IfErrors checkPidginVersion_BadVersion ; this isn't a valid version, so don't bother even checking
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
76 Pop $R1
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
77 ;Check that both versions' X is the same
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
78 StrCmp $R1 $R2 +1 checkPidginVersion_BadVersion
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
79
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
80 ;Check the Minor Version
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
81 Push $R0
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
82 Push 1
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
83 Call GetVersionComponent
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
84 IfErrors checkPidginVersion_noPidginInstallFound ;We couldn't extract 'Y' from the installed pidgin version
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
85 Pop $R2
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
86 Push $R4
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
87 Push 1
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
88 Call GetVersionComponent
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
89 IfErrors checkPidginVersion_BadVersion ; this isn't a valid version, so don't bother even checking
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
90 Pop $R1
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
91 ;Check that plugin's Y <= pidgin's Y
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
92 IntCmp $R1 $R2 checkPidginVersion_VersionOK checkPidginVersion_VersionOK checkPidginVersion_BadVersion
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
93
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
94 checkPidginVersion_BadVersion:
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
95 Push ${PIDGIN_VERSION_INCOMPATIBLE}
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
96 goto checkPidginVersion_done
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
97 checkPidginVersion_noPidginInstallFound:
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
98 Push ${PIDGIN_VERSION_UNDEFINED}
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
99 goto checkPidginVersion_done
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
100 checkPidginVersion_VersionOK:
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
101 Push ${PIDGIN_VERSION_OK}
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
102
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
103 checkPidginVersion_done:
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
104 ; Restore the Variables that we used
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
105 Exch
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
106 Pop $R2
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
107 Exch
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
108 Pop $R1
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
109 Exch
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
110 Pop $R0
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
111 Exch
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
112 Pop $R4
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
113 FunctionEnd
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
114
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
115 ; Extract the part of a string prior to "." (or the whole string if there is no ".")
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
116 ; If no "." was found, the ErrorFlag will be set
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
117 ; Before this is called, Push ${VERSION_STRING} must be called, and then Push 0 for Major, 1 for Minor, etc
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
118 ; Pop should be called after to retrieve the new value
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
119 Function GetVersionComponent
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
120 ClearErrors
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
121
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
122 ; Save the Variable values that we will use in the stack
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
123 Push $1
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
124 Exch
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
125 Pop $1 ;The version component which we want to extract (0, 1, 2)
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
126 Exch
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
127 Push $0
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
128 Exch
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
129 Pop $0 ;The string from which to extract the version component
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
130
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
131 Push $2
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
132 Push $3
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
133 Push $4
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
134 Push $5
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
135 Push $6
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
136 Push $7
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
137
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
138 StrCpy $2 "0" ;Initialize our string index counter
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
139 StrCpy $7 "0" ;Index of last "."
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
140 StrCpy $3 "0" ;Initialize our version index counter
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
141
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
142 startGetVersionComponentLoop:
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
143 ;avoid infinite loop (if we have gotten the whole initial string, exit the loop and set the error flag)
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
144 StrCmp $6 $0 GetVersionComponentSetErrorFlag
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
145 IntOp $2 $2 + 1
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
146 StrCpy $6 $0 $2 ;Update the infinite loop preventing string
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
147 ;Determine the correct substring (only the current index component)
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
148 IntOp $5 $2 - $7
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
149 StrCpy $4 $0 $5 $7 ;Append the current character in $0 to $4
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
150 StrCpy $5 $0 1 $2 ;store the next character in $5
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
151
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
152 ;if the next character is ".", $4 will contain the version component prior to "."
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
153 StrCmp $5 "." +1 startGetVersionComponentLoop
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
154 StrCmp $3 $1 doneGetVersionComponent ;If it is the version component we're looking for, stop
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
155 IntOp $3 $3 + 1 ;Increment the version index counter
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
156 IntOp $2 $2 + 1 ;Increment the version string index to "." (so it will be skipped)
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
157 StrCpy $7 $2 ;Keep track of the index of the last "."
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
158 StrCpy $6 $0 $2 ;Update the infinite loop preventing string
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
159 goto startGetVersionComponentLoop
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
160
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
161 GetVersionComponentSetErrorFlag:
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
162 SetErrors
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
163
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
164 doneGetVersionComponent:
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
165 ; Restore the Variables that we used
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
166 Pop $7
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
167 Pop $6
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
168 Pop $5
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
169 Push $4 ;This is the value we're returning
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
170 Exch
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
171 Pop $4
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
172 Exch
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
173 Pop $3
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
174 Exch
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
175 Pop $2
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
176 Exch
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
177 Pop $0
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
178 Exch
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
179 Pop $1
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
180 FunctionEnd
e11859350489 Updates to the win32 installer. It isn't complete yet, but this a good saving point.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
181