nsis-run-time-lib-fixes-20040114
authorJeffrey Altman <jaltman@mit.edu>
Thu, 15 Jan 2004 04:13:37 +0000 (04:13 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Thu, 15 Jan 2004 04:13:37 +0000 (04:13 +0000)
- Update the installer script to properly install the required
  runtime libraries for all compilers

- Update the AddToPath and RemoveToPath files

src/WINNT/install/NSIS/OpenAFS.nsi

index 67a7012..c429f41 100644 (file)
 !endif               ; End DEBUG
 !define MUI_VERSION ${AFS_VERSION}
 !else                ; v2.0b4
+!ifndef RELEASE
 !ifndef DEBUG        ; !DEBUG on v2.0b4
 Name "OpenAFS ${AFS_VERSION} ${__DATE__} ${__TIME__}"
 !else                ; DEBUG on v2.0b4
 Name "OpenAFS ${AFS_VERSION} ${__DATE__} ${__TIME__} Checked/Debug"
 !endif               ; End DEBUG/!DEBUG
+!else
+!ifndef DEBUG        ; !DEBUG on v2.0b4
+Name "OpenAFS ${AFS_VERSION}"
+!else                ; DEBUG on v2.0b4
+Name "OpenAFS ${AFS_VERSION} Checked/Debug"
+!endif               ; End DEBUG/!DEBUG
+!endif
 VIProductVersion "${AFS_VERSION}.00"
 VIAddVersionKey "ProductName" "OpenAFS"
 VIAddVersionKey "CompanyName" "OpenAFS.org"
@@ -82,6 +90,7 @@ VIAddVersionKey "PrivateBuild" "Checked/Debug"
   !define AFS_CLIENT_LIBDIR "${AFS_DESTDIR}\lib"
   !define AFS_SERVER_BUILDDIR "${AFS_DESTDIR}\root.server\usr\afs\bin"
   !define AFS_ETC_BUILDDIR "${AFS_DESTDIR}\etc"
+  !define SYSTEMDIR   "$%SystemRoot%\System32" 
   
 ;--------------------------------
 ;Modern UI Configuration
@@ -805,29 +814,82 @@ Section "AFS Control Center" secControl
   SetOutPath "$INSTDIR\Common"
 !IFDEF DEBUG
 !IFDEF CL_1310
-  File "${AFS_WININSTALL_DIR}\msvcr71d.dll"
-  File "${AFS_WININSTALL_DIR}\msvcr71d.pdb"
+   File "${SYSTEMDIR}\msvcr71d.dll"
+   File "${SYSTEMDIR}\msvcr71d.pdb"
+   File "${SYSTEMDIR}\msvcp71d.dll"
+   File "${SYSTEMDIR}\msvcp71d.pdb"
+   File "${SYSTEMDIR}\mfc71d.dll"
+   File "${SYSTEMDIR}\mfc71d.pdb"
+   File "${SYSTEMDIR}\MFC71CHS.DLL"
+   File "${SYSTEMDIR}\MFC71CHT.DLL"
+   File "${SYSTEMDIR}\MFC71DEU.DLL"
+   File "${SYSTEMDIR}\MFC71ENU.DLL"
+   File "${SYSTEMDIR}\MFC71ESP.DLL"
+   File "${SYSTEMDIR}\MFC71FRA.DLL"
+   File "${SYSTEMDIR}\MFC71ITA.DLL"
+   File "${SYSTEMDIR}\MFC71JPN.DLL"
+   File "${SYSTEMDIR}\MFC71KOR.DLL"
 !ELSE
 !IFDEF CL_1300
-  File "${AFS_WININSTALL_DIR}\msvcrtd.dll"
-  File "${AFS_WININSTALL_DIR}\msvcrtd.pdb"
+   File "${SYSTEMDIR}\msvcr70d.dll"
+   File "${SYSTEMDIR}\msvcr70d.pdb"
+   File "${SYSTEMDIR}\msvcp70d.dll"
+   File "${SYSTEMDIR}\msvcp70d.pdb"
+   File "${SYSTEMDIR}\mfc70d.dll"
+   File "${SYSTEMDIR}\mfc70d.pdb"
+   File "${SYSTEMDIR}\MFC70CHS.DLL"
+   File "${SYSTEMDIR}\MFC70CHT.DLL"
+   File "${SYSTEMDIR}\MFC70DEU.DLL"
+   File "${SYSTEMDIR}\MFC70ENU.DLL"
+   File "${SYSTEMDIR}\MFC70ESP.DLL"
+   File "${SYSTEMDIR}\MFC70FRA.DLL"
+   File "${SYSTEMDIR}\MFC70ITA.DLL"
+   File "${SYSTEMDIR}\MFC70JPN.DLL"
+   File "${SYSTEMDIR}\MFC70KOR.DLL"
 !ELSE
-  File "${AFS_WININSTALL_DIR}\msvcrtd.dll"
-  File "${AFS_WININSTALL_DIR}\msvcrtd.pdb"
+   File "${SYSTEMDIR}\mfc42d.dll"
+   File "${SYSTEMDIR}\mfc42d.pdb"
+   File "${SYSTEMDIR}\msvcp60d.dll"
+   File "${SYSTEMDIR}\msvcp60d.pdb"
+   File "${SYSTEMDIR}\msvcrtd.dll"
+   File "${SYSTEMDIR}\msvcrtd.pdb"
 !ENDIF
 !ENDIF
 !ELSE
 !IFDEF CL_1310
-  File "${AFS_WININSTALL_DIR}\msvcr71.dll"
+   File "${SYSTEMDIR}\mfc71.dll"
+   File "${SYSTEMDIR}\msvcr71.dll"
+   File "${SYSTEMDIR}\msvcp71.dll"
+   File "${SYSTEMDIR}\MFC71CHS.DLL"
+   File "${SYSTEMDIR}\MFC71CHT.DLL"
+   File "${SYSTEMDIR}\MFC71DEU.DLL"
+   File "${SYSTEMDIR}\MFC71ENU.DLL"
+   File "${SYSTEMDIR}\MFC71ESP.DLL"
+   File "${SYSTEMDIR}\MFC71FRA.DLL"
+   File "${SYSTEMDIR}\MFC71ITA.DLL"
+   File "${SYSTEMDIR}\MFC71JPN.DLL"
+   File "${SYSTEMDIR}\MFC71KOR.DLL"
 !ELSE
 !IFDEF CL_1300
-  File "${AFS_WININSTALL_DIR}\msvcrt.dll"
+   File "${SYSTEMDIR}\mfc70.dll"
+   File "${SYSTEMDIR}\msvcr70.dll"
+   File "${SYSTEMDIR}\msvcp70.dll"
+   File "${SYSTEMDIR}\MFC70CHS.DLL"
+   File "${SYSTEMDIR}\MFC70CHT.DLL"
+   File "${SYSTEMDIR}\MFC70DEU.DLL"
+   File "${SYSTEMDIR}\MFC70ENU.DLL"
+   File "${SYSTEMDIR}\MFC70ESP.DLL"
+   File "${SYSTEMDIR}\MFC70FRA.DLL"
+   File "${SYSTEMDIR}\MFC70ITA.DLL"
+   File "${SYSTEMDIR}\MFC70JPN.DLL"
+   File "${SYSTEMDIR}\MFC70KOR.DLL"
 !ELSE
-  File "${AFS_WININSTALL_DIR}\msvcrt.dll"
-!ENDIF
+   File "${SYSTEMDIR}\mfc42.dll"
+   File "${SYSTEMDIR}\msvcp60.dll"
+   File "${SYSTEMDIR}\msvcrt.dll"
 !ENDIF
 !ENDIF
-   
+!ENDIF   
    ;Store install folder
   WriteRegStr HKCU "${AFS_REGKEY_ROOT}\AFS Control Center\CurrentVersion" "PathName" $INSTDIR
   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Control Center\CurrentVersion" "VersionString" ${AFS_VERSION}
@@ -1550,17 +1612,80 @@ StartRemove:
    Delete /REBOOTOK "$INSTDIR\Common\afsptsadmin.pdb"
 
 !IFDEF CL_1310
-   Delete /REBOOTOK "$INSTDIR\Common\msvcr71d.dll"
-   Delete /REBOOTOK "$INSTDIR\Common\msvcr71d.pdb"
+   File "${SYSTEMDIR}\msvcr71d.dll"
+   File "${SYSTEMDIR}\msvcr71d.pdb"
+   File "${SYSTEMDIR}\msvcp71d.dll"
+   File "${SYSTEMDIR}\msvcp71d.pdb"
+   File "${SYSTEMDIR}\mfc71d.dll"
+   File "${SYSTEMDIR}\mfc71d.pdb"
+   File "${SYSTEMDIR}\MFC71CHS.DLL"
+   File "${SYSTEMDIR}\MFC71CHT.DLL"
+   File "${SYSTEMDIR}\MFC71DEU.DLL"
+   File "${SYSTEMDIR}\MFC71ENU.DLL"
+   File "${SYSTEMDIR}\MFC71ESP.DLL"
+   File "${SYSTEMDIR}\MFC71FRA.DLL"
+   File "${SYSTEMDIR}\MFC71ITA.DLL"
+   File "${SYSTEMDIR}\MFC71JPN.DLL"
+   File "${SYSTEMDIR}\MFC71KOR.DLL"
+!ELSE
+!IFDEF CL_1300
+   File "${SYSTEMDIR}\msvcr70d.dll"
+   File "${SYSTEMDIR}\msvcr70d.pdb"
+   File "${SYSTEMDIR}\msvcp70d.dll"
+   File "${SYSTEMDIR}\msvcp70d.pdb"
+   File "${SYSTEMDIR}\mfc70d.dll"
+   File "${SYSTEMDIR}\mfc70d.pdb"
+   File "${SYSTEMDIR}\MFC70CHS.DLL"
+   File "${SYSTEMDIR}\MFC70CHT.DLL"
+   File "${SYSTEMDIR}\MFC70DEU.DLL"
+   File "${SYSTEMDIR}\MFC70ENU.DLL"
+   File "${SYSTEMDIR}\MFC70ESP.DLL"
+   File "${SYSTEMDIR}\MFC70FRA.DLL"
+   File "${SYSTEMDIR}\MFC70ITA.DLL"
+   File "${SYSTEMDIR}\MFC70JPN.DLL"
+   File "${SYSTEMDIR}\MFC70KOR.DLL"
 !ELSE
-   Delete /REBOOTOK "$INSTDIR\Common\msvcrtd.dll"
-   Delete /REBOOTOK "$INSTDIR\Common\msvcrtd.pdb"
+   File "${SYSTEMDIR}\mfc42d.dll"
+   File "${SYSTEMDIR}\mfc42d.pdb"
+   File "${SYSTEMDIR}\msvcp60d.dll"
+   File "${SYSTEMDIR}\msvcp60d.pdb"
+   File "${SYSTEMDIR}\msvcrtd.dll"
+   File "${SYSTEMDIR}\msvcrtd.pdb"
+!ENDIF
 !ENDIF
 !ELSE
 !IFDEF CL_1310
-   Delete /REBOOTOK "$INSTDIR\Common\msvcr71.dll"
+   File "${SYSTEMDIR}\mfc71.dll"
+   File "${SYSTEMDIR}\msvcr71.dll"
+   File "${SYSTEMDIR}\msvcp71.dll"
+   File "${SYSTEMDIR}\MFC71CHS.DLL"
+   File "${SYSTEMDIR}\MFC71CHT.DLL"
+   File "${SYSTEMDIR}\MFC71DEU.DLL"
+   File "${SYSTEMDIR}\MFC71ENU.DLL"
+   File "${SYSTEMDIR}\MFC71ESP.DLL"
+   File "${SYSTEMDIR}\MFC71FRA.DLL"
+   File "${SYSTEMDIR}\MFC71ITA.DLL"
+   File "${SYSTEMDIR}\MFC71JPN.DLL"
+   File "${SYSTEMDIR}\MFC71KOR.DLL"
+!ELSE
+!IFDEF CL_1300
+   File "${SYSTEMDIR}\mfc70.dll"
+   File "${SYSTEMDIR}\msvcr70.dll"
+   File "${SYSTEMDIR}\msvcp70.dll"
+   File "${SYSTEMDIR}\MFC70CHS.DLL"
+   File "${SYSTEMDIR}\MFC70CHT.DLL"
+   File "${SYSTEMDIR}\MFC70DEU.DLL"
+   File "${SYSTEMDIR}\MFC70ENU.DLL"
+   File "${SYSTEMDIR}\MFC70ESP.DLL"
+   File "${SYSTEMDIR}\MFC70FRA.DLL"
+   File "${SYSTEMDIR}\MFC70ITA.DLL"
+   File "${SYSTEMDIR}\MFC70JPN.DLL"
+   File "${SYSTEMDIR}\MFC70KOR.DLL"
 !ELSE
-   Delete /REBOOTOK "$INSTDIR\Common\msvcrt.dll"
+   File "${SYSTEMDIR}\mfc42.dll"
+   File "${SYSTEMDIR}\msvcp60.dll"
+   File "${SYSTEMDIR}\msvcrt.dll"
+!ENDIF
 !ENDIF
 !ENDIF
   
@@ -1670,17 +1795,80 @@ StartRemove:
   
 !IFDEF DEBUG
 !IFDEF CL_1310
-  Delete /REBOOTOK "$INSTDIR\Common\msvcr71d.dll"
-  Delete /REBOOTOK "$INSTDIR\Common\msvcr71d.pdb"
+   File "${SYSTEMDIR}\msvcr71d.dll"
+   File "${SYSTEMDIR}\msvcr71d.pdb"
+   File "${SYSTEMDIR}\msvcp71d.dll"
+   File "${SYSTEMDIR}\msvcp71d.pdb"
+   File "${SYSTEMDIR}\mfc71d.dll"
+   File "${SYSTEMDIR}\mfc71d.pdb"
+   File "${SYSTEMDIR}\MFC71CHS.DLL"
+   File "${SYSTEMDIR}\MFC71CHT.DLL"
+   File "${SYSTEMDIR}\MFC71DEU.DLL"
+   File "${SYSTEMDIR}\MFC71ENU.DLL"
+   File "${SYSTEMDIR}\MFC71ESP.DLL"
+   File "${SYSTEMDIR}\MFC71FRA.DLL"
+   File "${SYSTEMDIR}\MFC71ITA.DLL"
+   File "${SYSTEMDIR}\MFC71JPN.DLL"
+   File "${SYSTEMDIR}\MFC71KOR.DLL"
+!ELSE
+!IFDEF CL_1300
+   File "${SYSTEMDIR}\msvcr70d.dll"
+   File "${SYSTEMDIR}\msvcr70d.pdb"
+   File "${SYSTEMDIR}\msvcp70d.dll"
+   File "${SYSTEMDIR}\msvcp70d.pdb"
+   File "${SYSTEMDIR}\mfc70d.dll"
+   File "${SYSTEMDIR}\mfc70d.pdb"
+   File "${SYSTEMDIR}\MFC70CHS.DLL"
+   File "${SYSTEMDIR}\MFC70CHT.DLL"
+   File "${SYSTEMDIR}\MFC70DEU.DLL"
+   File "${SYSTEMDIR}\MFC70ENU.DLL"
+   File "${SYSTEMDIR}\MFC70ESP.DLL"
+   File "${SYSTEMDIR}\MFC70FRA.DLL"
+   File "${SYSTEMDIR}\MFC70ITA.DLL"
+   File "${SYSTEMDIR}\MFC70JPN.DLL"
+   File "${SYSTEMDIR}\MFC70KOR.DLL"
 !ELSE
-  Delete /REBOOTOK "$INSTDIR\Common\msvcrtd.dll"
-  Delete /REBOOTOK "$INSTDIR\Common\msvcrtd.pdb"
+   File "${SYSTEMDIR}\mfc42d.dll"
+   File "${SYSTEMDIR}\mfc42d.pdb"
+   File "${SYSTEMDIR}\msvcp60d.dll"
+   File "${SYSTEMDIR}\msvcp60d.pdb"
+   File "${SYSTEMDIR}\msvcrtd.dll"
+   File "${SYSTEMDIR}\msvcrtd.pdb"
+!ENDIF
 !ENDIF
 !ELSE
 !IFDEF CL_1310
-  Delete /REBOOTOK "$INSTDIR\Common\msvcr71.dll"
+   File "${SYSTEMDIR}\mfc71.dll"
+   File "${SYSTEMDIR}\msvcr71.dll"
+   File "${SYSTEMDIR}\msvcp71.dll"
+   File "${SYSTEMDIR}\MFC71CHS.DLL"
+   File "${SYSTEMDIR}\MFC71CHT.DLL"
+   File "${SYSTEMDIR}\MFC71DEU.DLL"
+   File "${SYSTEMDIR}\MFC71ENU.DLL"
+   File "${SYSTEMDIR}\MFC71ESP.DLL"
+   File "${SYSTEMDIR}\MFC71FRA.DLL"
+   File "${SYSTEMDIR}\MFC71ITA.DLL"
+   File "${SYSTEMDIR}\MFC71JPN.DLL"
+   File "${SYSTEMDIR}\MFC71KOR.DLL"
 !ELSE
-  Delete /REBOOTOK "$INSTDIR\Common\msvcrt.dll"
+!IFDEF CL_1300
+   File "${SYSTEMDIR}\mfc70.dll"
+   File "${SYSTEMDIR}\msvcr70.dll"
+   File "${SYSTEMDIR}\msvcp70.dll"
+   File "${SYSTEMDIR}\MFC70CHS.DLL"
+   File "${SYSTEMDIR}\MFC70CHT.DLL"
+   File "${SYSTEMDIR}\MFC70DEU.DLL"
+   File "${SYSTEMDIR}\MFC70ENU.DLL"
+   File "${SYSTEMDIR}\MFC70ESP.DLL"
+   File "${SYSTEMDIR}\MFC70FRA.DLL"
+   File "${SYSTEMDIR}\MFC70ITA.DLL"
+   File "${SYSTEMDIR}\MFC70JPN.DLL"
+   File "${SYSTEMDIR}\MFC70KOR.DLL"
+!ELSE
+   File "${SYSTEMDIR}\mfc42.dll"
+   File "${SYSTEMDIR}\msvcp60.dll"
+   File "${SYSTEMDIR}\msvcrt.dll"
+!ENDIF
 !ENDIF
 !ENDIF
   Delete /REBOOTOK "$INSTDIR\Common\*"
@@ -2349,17 +2537,80 @@ Function AFSLangFiles
    File "${AFS_SERVER_BUILDDIR}\afsptsadmin.dll"
 !IFDEF DEBUG
 !IFDEF CL_1310
-   File "${AFS_WININSTALL_DIR}\msvcr71d.dll"
-   File "${AFS_WININSTALL_DIR}\msvcr71d.pdb"
+   File "${SYSTEMDIR}\msvcr71d.dll"
+   File "${SYSTEMDIR}\msvcr71d.pdb"
+   File "${SYSTEMDIR}\msvcp71d.dll"
+   File "${SYSTEMDIR}\msvcp71d.pdb"
+   File "${SYSTEMDIR}\mfc71d.dll"
+   File "${SYSTEMDIR}\mfc71d.pdb"
+   File "${SYSTEMDIR}\MFC71CHS.DLL"
+   File "${SYSTEMDIR}\MFC71CHT.DLL"
+   File "${SYSTEMDIR}\MFC71DEU.DLL"
+   File "${SYSTEMDIR}\MFC71ENU.DLL"
+   File "${SYSTEMDIR}\MFC71ESP.DLL"
+   File "${SYSTEMDIR}\MFC71FRA.DLL"
+   File "${SYSTEMDIR}\MFC71ITA.DLL"
+   File "${SYSTEMDIR}\MFC71JPN.DLL"
+   File "${SYSTEMDIR}\MFC71KOR.DLL"
+!ELSE
+!IFDEF CL_1300
+   File "${SYSTEMDIR}\msvcr70d.dll"
+   File "${SYSTEMDIR}\msvcr70d.pdb"
+   File "${SYSTEMDIR}\msvcp70d.dll"
+   File "${SYSTEMDIR}\msvcp70d.pdb"
+   File "${SYSTEMDIR}\mfc70d.dll"
+   File "${SYSTEMDIR}\mfc70d.pdb"
+   File "${SYSTEMDIR}\MFC70CHS.DLL"
+   File "${SYSTEMDIR}\MFC70CHT.DLL"
+   File "${SYSTEMDIR}\MFC70DEU.DLL"
+   File "${SYSTEMDIR}\MFC70ENU.DLL"
+   File "${SYSTEMDIR}\MFC70ESP.DLL"
+   File "${SYSTEMDIR}\MFC70FRA.DLL"
+   File "${SYSTEMDIR}\MFC70ITA.DLL"
+   File "${SYSTEMDIR}\MFC70JPN.DLL"
+   File "${SYSTEMDIR}\MFC70KOR.DLL"
 !ELSE
-   File "${AFS_WININSTALL_DIR}\msvcrtd.dll"
-   File "${AFS_WININSTALL_DIR}\msvcrtd.pdb"
+   File "${SYSTEMDIR}\mfc42d.dll"
+   File "${SYSTEMDIR}\mfc42d.pdb"
+   File "${SYSTEMDIR}\msvcp60d.dll"
+   File "${SYSTEMDIR}\msvcp60d.pdb"
+   File "${SYSTEMDIR}\msvcrtd.dll"
+   File "${SYSTEMDIR}\msvcrtd.pdb"
+!ENDIF
 !ENDIF
 !ELSE
 !IFDEF CL_1310
-   File "${AFS_WININSTALL_DIR}\msvcr71.dll"
+   File "${SYSTEMDIR}\mfc71.dll"
+   File "${SYSTEMDIR}\msvcr71.dll"
+   File "${SYSTEMDIR}\msvcp71.dll"
+   File "${SYSTEMDIR}\MFC71CHS.DLL"
+   File "${SYSTEMDIR}\MFC71CHT.DLL"
+   File "${SYSTEMDIR}\MFC71DEU.DLL"
+   File "${SYSTEMDIR}\MFC71ENU.DLL"
+   File "${SYSTEMDIR}\MFC71ESP.DLL"
+   File "${SYSTEMDIR}\MFC71FRA.DLL"
+   File "${SYSTEMDIR}\MFC71ITA.DLL"
+   File "${SYSTEMDIR}\MFC71JPN.DLL"
+   File "${SYSTEMDIR}\MFC71KOR.DLL"
+!ELSE
+!IFDEF CL_1300
+   File "${SYSTEMDIR}\mfc70.dll"
+   File "${SYSTEMDIR}\msvcr70.dll"
+   File "${SYSTEMDIR}\msvcp70.dll"
+   File "${SYSTEMDIR}\MFC70CHS.DLL"
+   File "${SYSTEMDIR}\MFC70CHT.DLL"
+   File "${SYSTEMDIR}\MFC70DEU.DLL"
+   File "${SYSTEMDIR}\MFC70ENU.DLL"
+   File "${SYSTEMDIR}\MFC70ESP.DLL"
+   File "${SYSTEMDIR}\MFC70FRA.DLL"
+   File "${SYSTEMDIR}\MFC70ITA.DLL"
+   File "${SYSTEMDIR}\MFC70JPN.DLL"
+   File "${SYSTEMDIR}\MFC70KOR.DLL"
 !ELSE
-   File "${AFS_WININSTALL_DIR}\msvcrt.dll"
+   File "${SYSTEMDIR}\mfc42.dll"
+   File "${SYSTEMDIR}\msvcp60.dll"
+   File "${SYSTEMDIR}\msvcrt.dll"
+!ENDIF
 !ENDIF
 !ENDIF
 
@@ -2465,13 +2716,82 @@ DoGerman:
    ;File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1033.pdb"
    ;File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1033.pdb"
 !IFDEF CL_1310
-   File "${AFS_WININSTALL_DIR}\msvcr71d.dll"
-   File "${AFS_WININSTALL_DIR}\msvcr71d.pdb"
+   File "${SYSTEMDIR}\msvcr71d.dll"
+   File "${SYSTEMDIR}\msvcr71d.pdb"
+   File "${SYSTEMDIR}\msvcp71d.dll"
+   File "${SYSTEMDIR}\msvcp71d.pdb"
+   File "${SYSTEMDIR}\mfc71d.dll"
+   File "${SYSTEMDIR}\mfc71d.pdb"
+   File "${SYSTEMDIR}\MFC71CHS.DLL"
+   File "${SYSTEMDIR}\MFC71CHT.DLL"
+   File "${SYSTEMDIR}\MFC71DEU.DLL"
+   File "${SYSTEMDIR}\MFC71ENU.DLL"
+   File "${SYSTEMDIR}\MFC71ESP.DLL"
+   File "${SYSTEMDIR}\MFC71FRA.DLL"
+   File "${SYSTEMDIR}\MFC71ITA.DLL"
+   File "${SYSTEMDIR}\MFC71JPN.DLL"
+   File "${SYSTEMDIR}\MFC71KOR.DLL"
+!ELSE
+!IFDEF CL_1300
+   File "${SYSTEMDIR}\msvcr70d.dll"
+   File "${SYSTEMDIR}\msvcr70d.pdb"
+   File "${SYSTEMDIR}\msvcp70d.dll"
+   File "${SYSTEMDIR}\msvcp70d.pdb"
+   File "${SYSTEMDIR}\mfc70d.dll"
+   File "${SYSTEMDIR}\mfc70d.pdb"
+   File "${SYSTEMDIR}\MFC70CHS.DLL"
+   File "${SYSTEMDIR}\MFC70CHT.DLL"
+   File "${SYSTEMDIR}\MFC70DEU.DLL"
+   File "${SYSTEMDIR}\MFC70ENU.DLL"
+   File "${SYSTEMDIR}\MFC70ESP.DLL"
+   File "${SYSTEMDIR}\MFC70FRA.DLL"
+   File "${SYSTEMDIR}\MFC70ITA.DLL"
+   File "${SYSTEMDIR}\MFC70JPN.DLL"
+   File "${SYSTEMDIR}\MFC70KOR.DLL"
 !ELSE
-   File "${AFS_WININSTALL_DIR}\msvcrtd.dll"
-   File "${AFS_WININSTALL_DIR}\msvcrtd.pdb"
+   File "${SYSTEMDIR}\mfc42d.dll"
+   File "${SYSTEMDIR}\mfc42d.pdb"
+   File "${SYSTEMDIR}\msvcp60d.dll"
+   File "${SYSTEMDIR}\msvcp60d.pdb"
+   File "${SYSTEMDIR}\msvcrtd.dll"
+   File "${SYSTEMDIR}\msvcrtd.pdb"
+!ENDIF
+!ENDIF
+!ELSE
+!IFDEF CL_1310
+   File "${SYSTEMDIR}\mfc71.dll"
+   File "${SYSTEMDIR}\msvcr71.dll"
+   File "${SYSTEMDIR}\msvcp71.dll"
+   File "${SYSTEMDIR}\MFC71CHS.DLL"
+   File "${SYSTEMDIR}\MFC71CHT.DLL"
+   File "${SYSTEMDIR}\MFC71DEU.DLL"
+   File "${SYSTEMDIR}\MFC71ENU.DLL"
+   File "${SYSTEMDIR}\MFC71ESP.DLL"
+   File "${SYSTEMDIR}\MFC71FRA.DLL"
+   File "${SYSTEMDIR}\MFC71ITA.DLL"
+   File "${SYSTEMDIR}\MFC71JPN.DLL"
+   File "${SYSTEMDIR}\MFC71KOR.DLL"
+!ELSE
+!IFDEF CL_1300
+   File "${SYSTEMDIR}\mfc70.dll"
+   File "${SYSTEMDIR}\msvcr70.dll"
+   File "${SYSTEMDIR}\msvcp70.dll"
+   File "${SYSTEMDIR}\MFC70CHS.DLL"
+   File "${SYSTEMDIR}\MFC70CHT.DLL"
+   File "${SYSTEMDIR}\MFC70DEU.DLL"
+   File "${SYSTEMDIR}\MFC70ENU.DLL"
+   File "${SYSTEMDIR}\MFC70ESP.DLL"
+   File "${SYSTEMDIR}\MFC70FRA.DLL"
+   File "${SYSTEMDIR}\MFC70ITA.DLL"
+   File "${SYSTEMDIR}\MFC70JPN.DLL"
+   File "${SYSTEMDIR}\MFC70KOR.DLL"
+!ELSE
+   File "${SYSTEMDIR}\mfc42.dll"
+   File "${SYSTEMDIR}\msvcp60.dll"
+   File "${SYSTEMDIR}\msvcrt.dll"
+!ENDIF
+!ENDIF
 !ENDIF
-!endif
    goto done   
 
 DoSpanish:
@@ -2674,29 +2994,64 @@ FunctionEnd
 Function AddToPath
   Exch $0
   Push $1
-  
+  Push $2
+  Push $3
+
+  # don't add if the path doesn't exist
+  IfFileExists $0 "" AddToPath_done
+
+  ReadEnvStr $1 PATH
+  Push "$1;"
+  Push "$0;"
+  Call StrStr
+  Pop $2
+  StrCmp $2 "" "" AddToPath_done
+  Push "$1;"
+  Push "$0\;"
+  Call StrStr
+  Pop $2
+  StrCmp $2 "" "" AddToPath_done
+  GetFullPathName /SHORT $3 $0
+  Push "$1;"
+  Push "$3;"
+  Call StrStr
+  Pop $2
+  StrCmp $2 "" "" AddToPath_done
+  Push "$1;"
+  Push "$3\;"
+  Call StrStr
+  Pop $2
+  StrCmp $2 "" "" AddToPath_done
+
   Call IsNT
   Pop $1
   StrCmp $1 1 AddToPath_NT
     ; Not on NT
     StrCpy $1 $WINDIR 2
     FileOpen $1 "$1\autoexec.bat" a
-    FileSeek $1 0 END
-    GetFullPathName /SHORT $0 $0
-    FileWrite $1 "$\r$\nSET PATH=%PATH%;$0$\r$\n"
+    FileSeek $1 -1 END
+    FileReadByte $1 $2
+    IntCmp $2 26 0 +2 +2 # DOS EOF
+      FileSeek $1 -1 END # write over EOF
+    FileWrite $1 "$\r$\nSET PATH=%PATH%;$3$\r$\n"
     FileClose $1
+    SetRebootFlag true
     Goto AddToPath_done
 
   AddToPath_NT:
     ReadRegStr $1 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "PATH"
+    StrCpy $2 $1 1 -1 # copy last char
+    StrCmp $2 ";" 0 +2 # if last char == ;
+      StrCpy $1 $1 -1 # remove last char
     StrCmp $1 "" AddToPath_NTdoIt
       StrCpy $0 "$1;$0"
-      Goto AddToPath_NTdoIt
     AddToPath_NTdoIt:
       WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "PATH" $0
       SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
-  
+
   AddToPath_done:
+    Pop $3
+    Pop $2
     Pop $1
     Pop $0
 FunctionEnd
@@ -2711,7 +3066,11 @@ Function un.RemoveFromPath
   Push $2
   Push $3
   Push $4
-  
+  Push $5
+  Push $6
+
+  IntFmt $6 "%c" 26 # DOS EOF
+
   Call un.IsNT
   Pop $1
   StrCmp $1 1 unRemoveFromPath_NT
@@ -2722,18 +3081,23 @@ Function un.RemoveFromPath
     FileOpen $2 $4 w
     GetFullPathName /SHORT $0 $0
     StrCpy $0 "SET PATH=%PATH%;$0"
-    SetRebootFlag true
     Goto unRemoveFromPath_dosLoop
-    
+
     unRemoveFromPath_dosLoop:
       FileRead $1 $3
-      StrCmp $3 "$0$\r$\n" unRemoveFromPath_dosLoop
-      StrCmp $3 "$0$\n" unRemoveFromPath_dosLoop
-      StrCmp $3 "$0" unRemoveFromPath_dosLoop
+      StrCpy $5 $3 1 -1 # read last char
+      StrCmp $5 $6 0 +2 # if DOS EOF
+        StrCpy $3 $3 -1 # remove DOS EOF so we can compare
+      StrCmp $3 "$0$\r$\n" unRemoveFromPath_dosLoopRemoveLine
+      StrCmp $3 "$0$\n" unRemoveFromPath_dosLoopRemoveLine
+      StrCmp $3 "$0" unRemoveFromPath_dosLoopRemoveLine
       StrCmp $3 "" unRemoveFromPath_dosLoopEnd
       FileWrite $2 $3
       Goto unRemoveFromPath_dosLoop
-    
+      unRemoveFromPath_dosLoopRemoveLine:
+        SetRebootFlag true
+        Goto unRemoveFromPath_dosLoop
+
     unRemoveFromPath_dosLoopEnd:
       FileClose $2
       FileClose $1
@@ -2744,25 +3108,34 @@ Function un.RemoveFromPath
       Goto unRemoveFromPath_done
 
   unRemoveFromPath_NT:
-    StrLen $2 $0
     ReadRegStr $1 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "PATH"
+    StrCpy $5 $1 1 -1 # copy last char
+    StrCmp $5 ";" +2 # if last char != ;
+      StrCpy $1 "$1;" # append ;
     Push $1
-    Push $0
-    Call un.StrStr ; Find $0 in $1
-    Pop $0 ; pos of our dir
-    IntCmp $0 -1 unRemoveFromPath_done
+    Push "$0;"
+    Call un.StrStr ; Find `$0;` in $1
+    Pop $2 ; pos of our dir
+    StrCmp $2 "" unRemoveFromPath_done
       ; else, it is in path
-      StrCpy $3 $1 $0 ; $3 now has the part of the path before our dir
-      IntOp $2 $2 + $0 ; $2 now contains the pos after our dir in the path (';')
-      IntOp $2 $2 + 1 ; $2 now containts the pos after our dir and the semicolon.
-      StrLen $0 $1
-      StrCpy $1 $1 $0 $2
-      StrCpy $3 "$3$1"
+      # $0 - path to add
+      # $1 - path var
+      StrLen $3 "$0;"
+      StrLen $4 $2
+      StrCpy $5 $1 -$4 # $5 is now the part before the path to remove
+      StrCpy $6 $2 "" $3 # $6 is now the part after the path to remove
+      StrCpy $3 $5$6
+
+      StrCpy $5 $3 1 -1 # copy last char
+      StrCmp $5 ";" 0 +2 # if last char == ;
+        StrCpy $3 $3 -1 # remove last char
 
       WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "PATH" $3
       SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
-  
+
   unRemoveFromPath_done:
+    Pop $6
+    Pop $5
     Pop $4
     Pop $3
     Pop $2
@@ -2775,7 +3148,8 @@ FunctionEnd
 ;        otherwise.
 ;     Output: head of the stack
 ;====================================================
-Function IsNT
+!macro IsNT un
+Function ${un}IsNT
   Push $0
   ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
   StrCmp $0 "" 0 IsNT_yes
@@ -2789,12 +3163,13 @@ Function IsNT
     Pop $0
     Push 1
 FunctionEnd
+!macroend
+!insertmacro IsNT ""
+!insertmacro IsNT "un."
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; Uninstall sutff
+; Uninstall stuff
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
 ;====================================================
 ; StrStr - Finds a given string in another given string.
 ;               Returns -1 if not found and the pos if found.
@@ -2802,62 +3177,39 @@ FunctionEnd
 ;                      second in the stack - string to find in
 ;          Output: head of the stack
 ;====================================================
-Function un.StrStr
-  Push $0
-  Exch
-  Pop $0 ; $0 now have the string to find
-  Push $1
-  Exch 2
-  Pop $1 ; $1 now have the string to find in
-  Exch
-  Push $2
-  Push $3
-  Push $4
-  Push $5
-
-  StrCpy $2 -1
-  StrLen $3 $0
-  StrLen $4 $1
-  IntOp $4 $4 - $3
-
-  unStrStr_loop:
-    IntOp $2 $2 + 1
-    IntCmp $2 $4 0 0 unStrStrReturn_notFound
-    StrCpy $5 $1 $3 $2
-    StrCmp $5 $0 unStrStr_done unStrStr_loop
-
-  unStrStrReturn_notFound:
-    StrCpy $2 -1
-
-  unStrStr_done:
-    Pop $5
-    Pop $4
-    Pop $3
-    Exch $2
-    Exch 2
-    Pop $0
-    Pop $1
+!macro StrStr un
+Function ${un}StrStr
+Exch $R1 ; st=haystack,old$R1, $R1=needle
+  Exch    ; st=old$R1,haystack
+  Exch $R2 ; st=old$R1,old$R2, $R2=haystack
+  Push $R3
+  Push $R4
+  Push $R5
+  StrLen $R3 $R1
+  StrCpy $R4 0
+  ; $R1=needle
+  ; $R2=haystack
+  ; $R3=len(needle)
+  ; $R4=cnt
+  ; $R5=tmp
+  loop:
+    StrCpy $R5 $R2 $R3 $R4
+    StrCmp $R5 $R1 done
+    StrCmp $R5 "" done
+    IntOp $R4 $R4 + 1
+    Goto loop
+done:
+  StrCpy $R1 $R2 "" $R4
+  Pop $R5
+  Pop $R4
+  Pop $R3
+  Pop $R2
+  Exch $R1
 FunctionEnd
+!macroend
+!insertmacro StrStr ""
+!insertmacro StrStr "un."
 
-;====================================================
-; IsNT - Returns 1 if the current system is NT, 0
-;        otherwise.
-;     Output: head of the stack
-;====================================================
-Function un.IsNT
-  Push $0
-  ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
-  StrCmp $0 "" 0 unIsNT_yes
-  ; we are not NT.
-  Pop $0
-  Push 0
-  Return
-
-  unIsNT_yes:
-    ; NT!!!
-    Pop $0
-    Push 1
-FunctionEnd
 
 !ifdef ADDSHAREDDLLUSED
 ; AddSharedDLL
@@ -2914,6 +3266,8 @@ FunctionEnd
  FunctionEnd
 !endif
 
+
+
 !ifdef INSTALL_LOOPBACK
 Function afs.InstallMSLoopback
    GetTempFileName $R0