incorrect-filename-after-install-20040506
[openafs.git] / src / WINNT / install / NSIS / OpenAFS.nsi
index 1c498fa..231a764 100644 (file)
@@ -32,7 +32,7 @@ VIAddVersionKey "CompanyName" "OpenAFS.org"
 VIAddVersionKey "ProductVersion" ${AFS_VERSION}
 VIAddVersionKey "FileVersion" ${AFS_VERSION}
 VIAddVersionKey "FileDescription" "OpenAFS for Windows Installer"
-VIAddVersionKey "LegalCopyright" "(C)2003"
+VIAddVersionKey "LegalCopyright" "(C)2000-2004"
 !ifdef DEBUG
 VIAddVersionKey "PrivateBuild" "Checked/Debug"
 !endif               ; End DEBUG
@@ -44,6 +44,8 @@ VIAddVersionKey "PrivateBuild" "Checked/Debug"
 ;--------------------------------
 ;Configuration
 
+!define REPLACEDLL_NOREGISTER
+
   ;General
 !ifndef DEBUG
   OutFile "${AFS_DESTDIR}\WinInstall\OpenAFSforWindows.exe"
@@ -51,7 +53,7 @@ VIAddVersionKey "PrivateBuild" "Checked/Debug"
   OutFile "${AFS_DESTDIR}\WinInstall\OpenAFSforWindows-DEBUG.exe"
 !endif
   SilentInstall normal
-  SetCompressor bzip2
+  SetCompressor lzma
   !define MUI_ICON "..\..\client_config\afs_config.ico"
   !define MUI_UNICON "..\..\client_config\afs_config.ico"
   !define AFS_COMPANY_NAME "OpenAFS"
@@ -296,17 +298,17 @@ VIAddVersionKey "PrivateBuild" "Checked/Debug"
 ;               The Windows temp directory could be located on any volume,
 ;               so you cannot use  this directory.
 ;
-; Define UPGRADEDLL_NOREGISTER if you want to upgrade a DLL that does not
+; Define REPLACEDLL_NOREGISTER if you want to upgrade a DLL that does not
 ; have to be registered.
 ;
 ; Note: If you want to support Win9x, you can only use
 ;       short filenames (8.3).
 ;
 ; Example of usage:
-; !insertmacro UpgradeDLL "dllname.dll" "$SYSDIR\dllname.dll" "$SYSDIR"
+; !insertmacro ReplaceDLL "dllname.dll" "$SYSDIR\dllname.dll" "$SYSDIR"
 ;
 
-!macro UpgradeDLL LOCALFILE DESTFILE TEMPBASEDIR
+!macro ReplaceDLL LOCALFILE DESTFILE TEMPBASEDIR
 
   Push $R0
   Push $R1
@@ -318,7 +320,7 @@ VIAddVersionKey "PrivateBuild" "Checked/Debug"
   ;------------------------
   ;Unique number for labels
 
-  !define UPGRADEDLL_UNIQUE ${__LINE__}
+  !define REPLACEDLL_UNIQUE ${__LINE__}
 
   ;------------------------
   ;Copy the parameters used on run-time to a variable
@@ -329,27 +331,27 @@ VIAddVersionKey "PrivateBuild" "Checked/Debug"
 
   ;------------------------
   ;Check file and version
-
-  IfFileExists $R4 0 upgradedll.copy_${UPGRADEDLL_UNIQUE}
-
-  ClearErrors
-    GetDLLVersionLocal "${LOCALFILE}" $R0 $R1
-    GetDLLVersion $R4 $R2 $R3
-  IfErrors upgradedll.upgrade_${UPGRADEDLL_UNIQUE}
-
-  IntCmpU $R0 $R2 0 upgradedll.done_${UPGRADEDLL_UNIQUE} \
-    upgradedll.upgrade_${UPGRADEDLL_UNIQUE}
-  IntCmpU $R1 $R3 upgradedll.done_${UPGRADEDLL_UNIQUE} \
-    upgradedll.done_${UPGRADEDLL_UNIQUE} \
-    upgradedll.upgrade_${UPGRADEDLL_UNIQUE}
+  ;
+  IfFileExists $R4 0 replacedll.copy_${REPLACEDLL_UNIQUE}
+  
+  ;ClearErrors
+  ;  GetDLLVersionLocal "${LOCALFILE}" $R0 $R1
+  ;  GetDLLVersion $R4 $R2 $R3
+  ;IfErrors replacedll.upgrade_${REPLACEDLL_UNIQUE}
+  ;
+  ;IntCmpU $R0 $R2 0 replacedll.done_${REPLACEDLL_UNIQUE} \
+  ;  replacedll.upgrade_${REPLACEDLL_UNIQUE}
+  ;IntCmpU $R1 $R3 replacedll.done_${REPLACEDLL_UNIQUE} \
+  ;  replacedll.done_${REPLACEDLL_UNIQUE} \
+  ;  replacedll.upgrade_${REPLACEDLL_UNIQUE}
 
   ;------------------------
-  ;Let's upgrade the DLL!
+  ;Let's replace the DLL!
 
   SetOverwrite try
 
-  upgradedll.upgrade_${UPGRADEDLL_UNIQUE}:
-    !ifndef UPGRADEDLL_NOREGISTER
+  ;replacedll.upgrade_${REPLACEDLL_UNIQUE}:
+    !ifndef REPLACEDLL_NOREGISTER
       ;Unregister the DLL
       UnRegDLL $R4
     !endif
@@ -359,45 +361,45 @@ VIAddVersionKey "PrivateBuild" "Checked/Debug"
 
   ClearErrors
     StrCpy $R0 $R4
-    Call :upgradedll.file_${UPGRADEDLL_UNIQUE}
-  IfErrors 0 upgradedll.noreboot_${UPGRADEDLL_UNIQUE}
+    Call :replacedll.file_${REPLACEDLL_UNIQUE}
+  IfErrors 0 replacedll.noreboot_${REPLACEDLL_UNIQUE}
 
   ;------------------------
   ;DLL is in use. Copy it to a temp file and Rename it on reboot.
 
   GetTempFileName $R0 $R5
-    Call :upgradedll.file_${UPGRADEDLL_UNIQUE}
+    Call :replacedll.file_${REPLACEDLL_UNIQUE}
   Rename /REBOOTOK $R0 $R4
 
   ;------------------------
   ;Register the DLL on reboot
 
-  !ifndef UPGRADEDLL_NOREGISTER
+  !ifndef REPLACEDLL_NOREGISTER
     WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\RunOnce" \
       "Register $R4" 'rundll32.exe "$R4",DllRegisterServer'
   !endif
 
-  Goto upgradedll.done_${UPGRADEDLL_UNIQUE}
+  Goto replacedll.done_${REPLACEDLL_UNIQUE}
 
   ;------------------------
   ;DLL does not exist - just extract
 
-  upgradedll.copy_${UPGRADEDLL_UNIQUE}:
+  replacedll.copy_${REPLACEDLL_UNIQUE}:
     StrCpy $R0 $R4
-    Call :upgradedll.file_${UPGRADEDLL_UNIQUE}
+    Call :replacedll.file_${REPLACEDLL_UNIQUE}
 
   ;------------------------
   ;Register the DLL
 
-  upgradedll.noreboot_${UPGRADEDLL_UNIQUE}:
-    !ifndef UPGRADEDLL_NOREGISTER
+  replacedll.noreboot_${REPLACEDLL_UNIQUE}:
+    !ifndef REPLACEDLL_NOREGISTER
       RegDLL $R4
     !endif
 
   ;------------------------
   ;Done
 
-  upgradedll.done_${UPGRADEDLL_UNIQUE}:
+  replacedll.done_${REPLACEDLL_UNIQUE}:
 
   Pop $R5
   Pop $R4
@@ -409,23 +411,23 @@ VIAddVersionKey "PrivateBuild" "Checked/Debug"
   ;------------------------
   ;End
 
-  Goto upgradedll.end_${UPGRADEDLL_UNIQUE}
+  Goto replacedll.end_${REPLACEDLL_UNIQUE}
 
   ;------------------------
   ;Called to extract the DLL
 
-  upgradedll.file_${UPGRADEDLL_UNIQUE}:
+  replacedll.file_${REPLACEDLL_UNIQUE}:
     File /oname=$R0 "${LOCALFILE}"
     Return
 
-  upgradedll.end_${UPGRADEDLL_UNIQUE}:
+  replacedll.end_${REPLACEDLL_UNIQUE}:
 
  ;------------------------
  ;Restore settings
 
  SetOverwrite lastused
  
- !undef UPGRADEDLL_UNIQUE
+ !undef REPLACEDLL_UNIQUE
 
 !macroend
 
@@ -437,6 +439,15 @@ VIAddVersionKey "PrivateBuild" "Checked/Debug"
   ;Only useful for BZIP2 compression
   !insertmacro MUI_RESERVEFILE_LANGDLL
   
+;--------------------------------
+; User Variables
+
+var REG_SUB_KEY
+var REG_VALUE
+var REG_DATA_1
+var REG_DATA_2
+var REG_DATA_3
+
 
 ;--------------------------------
 ;Installer Sections
@@ -446,12 +457,23 @@ VIAddVersionKey "PrivateBuild" "Checked/Debug"
 Section "AFS Client" secClient
 
   SetShellVarContext all
+
+  ; Check for bad previous installation (if we are doing a new install)
+  Call IsAnyAFSInstalled
+  Pop $R0
+  StrCmp $R0 "0" +1 skipCheck
+  Call CheckPathForAFS
+  skipCheck:
+
   ; Stop any running services or we can't replace the files
   ; Stop the running processes
   GetTempFileName $R0
   File /oname=$R0 "${AFS_WININSTALL_DIR}\Killer.exe"   ; Might not have the MSVCR71.DLL file to run
+  nsExec::Exec '$R0 afsd_service.exe'
+  nsExec::Exec '$R0 afscreds.exe'
+  Exec "afscreds.exe -z"
+  ; in case we are upgrading an old version that does not support -z
   nsExec::Exec '$R0 afscreds.exe'
-  nsExec::Exec "afscreds.exe -z"
 !IFDEF INSTALL_KFW
   ;nsExec::Exec '$R0 krbcc32s.exe'
 !ENDIF
@@ -462,18 +484,17 @@ Section "AFS Client" secClient
    ; Do client components
   SetOutPath "$INSTDIR\Client\Program"
   File "${AFS_CLIENT_BUILDDIR}\afsshare.exe"
-  !define UPGRADEDLL_NOREGISTER
-  !insertmacro UpgradeDLL "${AFS_CLIENT_BUILDDIR}\libosi.dll" "$INSTDIR\Client\Program\libosi.dll" "$INSTDIR"
-  !insertmacro UpgradeDLL "${AFS_CLIENT_BUILDDIR}\libafsconf.dll" "$INSTDIR\Client\Program\libafsconf.dll" "$INSTDIR"
+  !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\libosi.dll" "$INSTDIR\Client\Program\libosi.dll" "$INSTDIR"
+  !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\libafsconf.dll" "$INSTDIR\Client\Program\libafsconf.dll" "$INSTDIR"
   File "${AFS_CLIENT_BUILDDIR}\klog.exe"
   File "${AFS_CLIENT_BUILDDIR}\tokens.exe"
   File "${AFS_CLIENT_BUILDDIR}\unlog.exe"
   File "${AFS_CLIENT_BUILDDIR}\fs.exe"
+  File "${AFS_CLIENT_BUILDDIR}\aklog.exe"
   File "${AFS_CLIENT_BUILDDIR}\afscreds.exe"
-  !insertmacro UpgradeDLL "${AFS_CLIENT_BUILDDIR}\afs_shl_ext.dll" "$INSTDIR\Client\Program\afs_shl_ext.dll" "$INSTDIR"
-  File "${AFS_BUILD_INCDIR}\afs\auth.h"
+  !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_shl_ext.dll" "$INSTDIR\Client\Program\afs_shl_ext.dll" "$INSTDIR"
   File "${AFS_CLIENT_BUILDDIR}\afsd_service.exe"
-  !insertmacro UpgradeDLL "${AFS_CLIENT_BUILDDIR}\afslogon.dll" "$INSTDIR\Client\Program\afslogon.dll" "$INSTDIR"
+  !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afslogon.dll" "$INSTDIR\Client\Program\afslogon.dll" "$INSTDIR"
   File "${AFS_CLIENT_BUILDDIR}\symlink.exe"
   File "${AFS_DESTDIR}\bin\kpasswd.exe"
   File "${AFS_SERVER_BUILDDIR}\pts.exe"
@@ -493,13 +514,14 @@ Section "AFS Client" secClient
   File "${AFS_CLIENT_BUILDDIR}\tokens.pdb"
   File "${AFS_CLIENT_BUILDDIR}\unlog.pdb"
   File "${AFS_CLIENT_BUILDDIR}\fs.pdb"
+  File "${AFS_CLIENT_BUILDDIR}\aklog.pdb"
   File "${AFS_CLIENT_BUILDDIR}\afscreds.pdb"
   File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext.pdb"
   File "${AFS_CLIENT_BUILDDIR}\afsd_service.pdb"
   File "${AFS_CLIENT_BUILDDIR}\afslogon.pdb"
   File "${AFS_CLIENT_BUILDDIR}\symlink.pdb"
   File "${AFS_DESTDIR}\bin\kpasswd.pdb"
-  ;File "${AFS_SERVER_BUILDDIR}\pts.pdb"
+  File "${AFS_DESTDIR}\bin\pts.pdb"
   File "${AFS_SERVER_BUILDDIR}\bos.pdb"
   File "${AFS_SERVER_BUILDDIR}\kas.pdb"
   File "${AFS_SERVER_BUILDDIR}\vos.pdb"
@@ -518,7 +540,7 @@ Section "AFS Client" secClient
   
   ; Do Windows SYSDIR (Control panel)
   SetOutPath "$SYSDIR"
-  File "${AFS_CLIENT_BUILDDIR}\afs_cpa.cpl"
+  !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_cpa.cpl" "$SYSDIR\afs_cpa.cpl" "$INSTDIR"
 !ifdef DEBUG
   File "${AFS_CLIENT_BUILDDIR}\afs_cpa.pdb"
 !endif
@@ -554,7 +576,7 @@ Section "AFS Client" secClient
   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "VersionString" ${AFS_VERSION}
   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "Title" "AFS Client"
   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "Description" "AFS Client"
-  WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "PathName" "$INSTDIR\Client\Program"
+  WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "PathName" "$INSTDIR\Client"
   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "Software Type" "File System"
   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "MajorVersion" ${AFS_MAJORVERSION}
   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "MinorVersion" ${AFS_MINORVERSION}
@@ -589,14 +611,14 @@ Section "AFS Client" secClient
   CreateShortCut "$SMSTARTUP\AFS Credentials.lnk" "$INSTDIR\Client\Program\afscreds.exe" "-A -M -N -Q"
 
   Push "$INSTDIR\Client\Program"
-  Call AddToPath
+  Call AddToUniquePath
   Push "$INSTDIR\Common"
-  Call AddToPath
+  Call AddToUniquePath
   
 !ifdef INSTALL_KFW
   ; Add kfw to path too
   Push "$INSTDIR\kfw\bin"
-  Call AddToPath
+  Call AddToUniquePath
 !endif
    
   ; Create the AFS service
@@ -606,7 +628,7 @@ Section "AFS Client" secClient
   ;IMPORTANT!  If we are not refreshing the config files, do NOT remove the service
   ;Don't re-install because it must be present or we wouldn't have passed the Reg check
  
-  ReadRegStr $R2 HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon" "Cell"
+  ReadRegStr $R2 HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters" "Cell"
   StrCmp $R2 "" +1 skipremove
   nsExec::Exec '$INSTDIR\Common\Service.exe u TransarcAFSDaemon'
   nsExec::Exec '$INSTDIR\Common\Service.exe TransarcAFSDaemon "$INSTDIR\Client\Program\afsd_service.exe" "OpenAFS Client Service"'
@@ -614,34 +636,60 @@ skipremove:
   Delete "$INSTDIR\Common\service.exe"
 
   ; Daemon entries
-  WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon" "(Default)" ""
+  WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon" "" ""
+  WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider" "ProviderPath" "$INSTDIR\Client\Program\afslogon.dll"
+  WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider" "AuthentProviderPath" "$INSTDIR\Client\Program\afslogon.dll"
   WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider" "AuthentProviderPath" "$INSTDIR\Client\Program\afslogon.dll"
   WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider" "Class" 2
+  WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider" "VerboseLogging" 10
+
+  ; Must also add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider\HwOrder
+  ; and HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider\Order
+  ; to also include the service name.
+  Call AddProvider
   ReadINIStr $R0 $1 "Field 7" "State"
   ReadINIStr $R1 $1 "Field 9" "State"
   ; Complicated way to do $R1 = ($R1 *2) + $R0
   IntOp $R2 $R1 * 2
   IntOp $R1 $R2 + $R0
   WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider" "LogonOptions" $R1
-  WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider" "LogonScript" "$INSTDIR\Client\Program\afscreds.exe -:%s -x"
+  WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider" "LogonScript" "$INSTDIR\Client\Program\afscreds.exe -:%s -x -a -m -n -q"
   WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider" "Name" "OpenAFSDaemon"
-  WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider" "ProviderPath" "$INSTDIR\Client\Program\afslogon.dll"
 
   ;Write cell name
   ReadINIStr $R0 $1 "Field 2" "State"
   WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters" "Cell" $R0
   ReadINIStr $R0 $1 "Field 3" "State"
-  WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters" "ShowTrayIcon" 1
+  WriteRegDWORD HKLM "SOFTWARE\OpenAFS\Client" "ShowTrayIcon" 1
   WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters" "SecurityLevel" $R0
   ReadINIStr $R0 $1 "Field 5" "State"  
   WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters" "FreelanceClient" $R0
-  WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters" "UseDNS" 1
+  ReadINIStr $R0 $1 "Field 11" "State"
+  WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters" "UseDNS" $R0
   WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters" "NetbiosName" "AFS"
   WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters" "MountRoot" "/afs"
-  WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters" "RxMaxMTU" 1200
-!IFDEF DEBUG
+  WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters" "RxMaxMTU" 1260
+  WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters" "IsGateway" 0
+  WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters" "HideDotFiles" 1
+  WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters" "TruncateNetbios" "on"
+
+  ; Find Lana By Name appears to be causing grief for many people 
+  ; I do not have time to track this down so I am simply going to disable it
   WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters" "NoFindLanaByName" 1
-!ENDIF
+
+  strcpy $REG_SUB_KEY "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon" 
+  strcpy $REG_VALUE   "DependOnGroup" 
+  strcpy $REG_DATA_1  "PNP_TDI"
+  strcpy $REG_DATA_2  ""
+  strcpy $REG_DATA_3  ""
+  Call RegWriteMultiStr
+  strcpy $REG_SUB_KEY "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon" 
+  strcpy $REG_VALUE   "DependOnService" 
+  strcpy $REG_DATA_1  "Tcpip"
+  strcpy $REG_DATA_2  "NETBIOS"
+  strcpy $REG_DATA_3  "RpcSs"
+  Call RegWriteMultiStr
+
   SetRebootFlag true
   
   WriteUninstaller "$INSTDIR\Uninstall.exe"
@@ -653,16 +701,29 @@ SectionEnd
 Section "AFS Server" secServer
 
   SetShellVarContext all
+
+  ; Check for bad previous installation (if we are doing a new install)
+  Call IsAnyAFSInstalled
+  Pop $R0
+  StrCmp $R0 "0" +1 skipCheck
+  Call CheckPathForAFS
+skipCheck:
+
   ; Stop any running services or we can't replace the files
   ; Stop the running processes
   GetTempFileName $R0
-  File /oname=$R0 "${AFS_WININSTALL_DIR}\Killer.exe"   ; Might not have the MSVCR71.DLL file to run
+  File /oname=$R0 "${AFS_WININSTALL_DIR}\Killer.exe"
+  nsExec::Exec '$R0 afscreds.exe'
+  Exec "afscreds.exe -z"
+  ; in case we are upgrading an old version that does not support -z
+  Sleep 2000
   nsExec::Exec '$R0 afscreds.exe'
-  nsExec::Exec "afscreds.exe -z"
 !IFDEF INSTALL_KFW
   ;nsExec::Exec '$R0 krbcc32s.exe'
 !ENDIF
 
+  Delete $R0
+  
   nsExec::Exec "net stop TransarcAFSDaemon"
   nsExec::Exec "net stop TransarcAFSServer"
 
@@ -726,7 +787,7 @@ Section "AFS Server" secServer
    Call AFSLangFiles
    
    SetOutPath "$SYSDIR"
-   File "${AFS_SERVER_BUILDDIR}\afsserver.cpl"
+  !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afsserver.cpl" "$SYSDIR\afsserver.cpl" "$INSTDIR"
 
 !ifdef DEBUG
    File "${AFS_SERVER_BUILDDIR}\afsserver.pdb"
@@ -766,6 +827,19 @@ Section "AFS Server" secServer
 !ifdef DEBUG
   File "${AFS_WININSTALL_DIR}\Service.pdb"
 !endif
+
+  ; Check if the service exists--if it does, this is an upgrade/re-install
+  ReadRegStr $R0 HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSServer" "ImagePath"
+  StrCmp $R0 "$INSTDIR\Server\usr\afs\bin\bosctlsvc.exe" SkipStartup
+  
+  ; If an uninstall was done, but we kept the config files, also skip
+  IfFileExists "$INSTDIR\Server\usr\afs\etc\ThisCell" SkipStartup
+
+  ; Make the server config wizard auto-start on bootup if this is an install (not an upgrade)
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" "AFS Server Wizard" '"$INSTDIR\Server\usr\afs\bin\afssvrcfg.exe" /wizard"'
+  
+  
+SkipStartup:
   ;Don't want to whack existing settings... Make users un-install and then re-install if they want that
   ;nsExec::Exec '$INSTDIR\Common\service.exe u TransarcAFSServer'
   nsExec::Exec '$INSTDIR\Common\service.exe TransarcAFSServer "$INSTDIR\Server\usr\afs\bin\bosctlsvc.exe" "OpenAFS AFS Server"'
@@ -774,8 +848,6 @@ Section "AFS Server" secServer
   CreateDirectory "$SMPROGRAMS\OpenAFS\Server"
   CreateShortCut "$SMPROGRAMS\OpenAFS\Server\Server Configuration.lnk" "$INSTDIR\Server\usr\afs\bin\afssvrcfg.exe"
   
-  ; Make the server config wizard auto-start on bootup
-  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" "AFS Server Wizard" '"$INSTDIR\Server\usr\afs\bin\afssvrcfg.exe" /wizard"'
   
   WriteUninstaller "$INSTDIR\Uninstall.exe"
 
@@ -1071,161 +1143,11 @@ SectionEnd
 
 Section "Software Development Kit (SDK)" secSDK
 
-  SetOutPath "$INSTDIR\Client\Program"
+    SetOutPath "$INSTDIR\Client\Program\lib"
+    File /r "${AFS_CLIENT_LIBDIR}\*.*"
 
-  File "${AFS_BUILD_INCDIR}\afs\cm_config.h"
-  File "${AFS_BUILD_INCDIR}\afs\kautils.h"
-  File "${AFS_CLIENT_LIBDIR}\libafsconf.lib"
-  File "${AFS_CLIENT_LIBDIR}\afsauthent.lib"
-
-  ; Client_headers
-   SetOutPath "$INSTDIR\Client\Program\Include"
-   File "${AFS_BUILD_INCDIR}\lock.h"
-   File "${AFS_BUILD_INCDIR}\lwp.h"
-   File "${AFS_BUILD_INCDIR}\preempt.h"
-   File "${AFS_BUILD_INCDIR}\timer.h"
-   File "${AFS_BUILD_INCDIR}\des.h"
-   File "${AFS_BUILD_INCDIR}\des_conf.h"
-   File "${AFS_BUILD_INCDIR}\mit-cpyright.h"
-   ;File "${AFS_BUILD_INCDIR}\des-odd.h"
-   File "${AFS_BUILD_INCDIR}\crypt.h"
-   File "${AFS_BUILD_INCDIR}\pthread.h"
-   File "${AFS_BUILD_INCDIR}\dbrpc.h"
-   File "${AFS_BUILD_INCDIR}\basic.h"
-   File "${AFS_BUILD_INCDIR}\osidebug.h"
-   File "${AFS_BUILD_INCDIR}\osiltype.h"
-   File "${AFS_BUILD_INCDIR}\osistatl.h"
-   File "${AFS_BUILD_INCDIR}\trylock.h"
-   File "${AFS_BUILD_INCDIR}\main.h"
-   File "${AFS_BUILD_INCDIR}\osibasel.h"
-   File "${AFS_BUILD_INCDIR}\osifd.h"
-   File "${AFS_BUILD_INCDIR}\osiqueue.h"
-   File "${AFS_BUILD_INCDIR}\osiutils.h"
-   File "${AFS_BUILD_INCDIR}\osi.h"
-   File "${AFS_BUILD_INCDIR}\osidb.h"
-   File "${AFS_BUILD_INCDIR}\osilog.h"
-   File "${AFS_BUILD_INCDIR}\osisleep.h"
-   File "${AFS_BUILD_INCDIR}\perf.h"
-   File "${AFS_BUILD_INCDIR}\ubik.h"
-   File "${AFS_BUILD_INCDIR}\ubik_int.h"
-   
-   
-   
-   SetOutPath "$INSTDIR\Client\Program\Include\afs"
-   File "${AFS_BUILD_INCDIR}\afs\afs_args.h"
-   File "${AFS_BUILD_INCDIR}\afs\debug.h"
-   File "${AFS_BUILD_INCDIR}\afs\param.h"
-   File "${AFS_BUILD_INCDIR}\afs\afs_sysnames.h"
-   ;File "${AFS_BUILD_INCDIR}\afs\permit_xprt.h"
-   File "${AFS_BUILD_INCDIR}\afs\stds.h"
-   File "${AFS_BUILD_INCDIR}\afs\icl.h"
-   File "${AFS_BUILD_INCDIR}\afs\procmgmt.h"
-   File "${AFS_BUILD_INCDIR}\afs\afsutil.h"
-   File "${AFS_BUILD_INCDIR}\afs\assert.h"
-   File "${AFS_BUILD_INCDIR}\afs\dirent.h"
-   File "${AFS_BUILD_INCDIR}\afs\errors.h"
-   File "${AFS_BUILD_INCDIR}\afs\itc.h"
-   File "${AFS_BUILD_INCDIR}\afs\vice.h"
-   File "${AFS_BUILD_INCDIR}\afs\pthread_glock.h"
-   File "${AFS_BUILD_INCDIR}\afs\errmap_nt.h"
-   File "${AFS_BUILD_INCDIR}\afs\dirpath.h"
-   File "${AFS_BUILD_INCDIR}\afs\ktime.h"
-   File "${AFS_BUILD_INCDIR}\afs\fileutil.h"
-   File "${AFS_BUILD_INCDIR}\afs\secutil_nt.h"
-   File "${AFS_BUILD_INCDIR}\afs\com_err.h"
-   File "${AFS_BUILD_INCDIR}\afs\error_table.h"
-   ;File "${AFS_BUILD_INCDIR}\afs\mit_sipb-cr.h"
-   File "${AFS_BUILD_INCDIR}\afs\cmd.h"
-   File "${AFS_BUILD_INCDIR}\afs\rxgen_consts.h"
-   File "${AFS_BUILD_INCDIR}\afs\afsint.h"
-   File "${AFS_BUILD_INCDIR}\afs\afscbint.h"
-   File "${AFS_BUILD_INCDIR}\afs\audit.h"
-   File "${AFS_BUILD_INCDIR}\afs\acl.h"
-   File "${AFS_BUILD_INCDIR}\afs\prs_fs.h"
-   File "${AFS_BUILD_INCDIR}\afs\afsd.h"
-   File "${AFS_BUILD_INCDIR}\afs\cm.h"
-   File "${AFS_BUILD_INCDIR}\afs\cm_buf.h"
-   File "${AFS_BUILD_INCDIR}\afs\cm_cell.h"
-   File "${AFS_BUILD_INCDIR}\afs\cm_config.h"
-   File "${AFS_BUILD_INCDIR}\afs\cm_conn.h"
-   File "${AFS_BUILD_INCDIR}\afs\cm_ioctl.h"
-   File "${AFS_BUILD_INCDIR}\afs\cm_scache.h"
-   File "${AFS_BUILD_INCDIR}\afs\cm_server.h"
-   File "${AFS_BUILD_INCDIR}\afs\cm_user.h"
-   File "${AFS_BUILD_INCDIR}\afs\cm_utils.h"
-   File "${AFS_BUILD_INCDIR}\afs\fs_utils.h"
-   File "${AFS_BUILD_INCDIR}\afs\krb.h"
-   File "${AFS_BUILD_INCDIR}\afs\krb_prot.h"
-   File "${AFS_BUILD_INCDIR}\afs\smb.h"
-   File "${AFS_BUILD_INCDIR}\afs\smb3.h"
-   File "${AFS_BUILD_INCDIR}\afs\smb_iocons.h"
-   File "${AFS_BUILD_INCDIR}\afs\smb_ioctl.h"
-   File "${AFS_BUILD_INCDIR}\afs\afsrpc.h"
-   File "${AFS_BUILD_INCDIR}\afs\afssyscalls.h"
-   File "${AFS_BUILD_INCDIR}\afs\pioctl_nt.h"
-   File "${AFS_BUILD_INCDIR}\afs\auth.h"
-   File "${AFS_BUILD_INCDIR}\afs\cellconfig.h"
-   File "${AFS_BUILD_INCDIR}\afs\keys.h"
-   File "${AFS_BUILD_INCDIR}\afs\ptserver.h"
-   File "${AFS_BUILD_INCDIR}\afs\ptint.h"
-   File "${AFS_BUILD_INCDIR}\afs\pterror.h"
-   File "${AFS_BUILD_INCDIR}\afs\ptint.h"
-   File "${AFS_BUILD_INCDIR}\afs\pterror.h"
-   File "${AFS_BUILD_INCDIR}\afs\ptclient.h"
-   File "${AFS_BUILD_INCDIR}\afs\prserver.h"
-   File "${AFS_BUILD_INCDIR}\afs\print.h"
-   File "${AFS_BUILD_INCDIR}\afs\prerror.h"
-   File "${AFS_BUILD_INCDIR}\afs\prclient.h"
-   File "${AFS_BUILD_INCDIR}\afs\kautils.h"
-   File "${AFS_BUILD_INCDIR}\afs\kauth.h"
-   File "${AFS_BUILD_INCDIR}\afs\kaport.h"
-   File "${AFS_BUILD_INCDIR}\afs\vl_opcodes.h"
-   File "${AFS_BUILD_INCDIR}\afs\vlserver.h"
-   File "${AFS_BUILD_INCDIR}\afs\vldbint.h"
-   File "${AFS_BUILD_INCDIR}\afs\usd.h"
-   File "${AFS_BUILD_INCDIR}\afs\bubasics.h"
-   File "${AFS_BUILD_INCDIR}\afs\butc.h"
-   File "${AFS_BUILD_INCDIR}\afs\bumon.h"
-   File "${AFS_BUILD_INCDIR}\afs\butm.h"
-   File "${AFS_BUILD_INCDIR}\afs\tcdata.h"
-   File "${AFS_BUILD_INCDIR}\afs\budb.h"
-   ;File "${AFS_BUILD_INCDIR}\afs\budb_errors.h"
-   File "${AFS_BUILD_INCDIR}\afs\budb_client.h"
-   File "${AFS_BUILD_INCDIR}\afs\dir.h"
-   File "${AFS_BUILD_INCDIR}\afs\fssync.h"
-   File "${AFS_BUILD_INCDIR}\afs\ihandle.h"
-   File "${AFS_BUILD_INCDIR}\afs\nfs.h"
-   File "${AFS_BUILD_INCDIR}\afs\ntops.h"
-   File "${AFS_BUILD_INCDIR}\afs\partition.h"
-   File "${AFS_BUILD_INCDIR}\afs\viceinode.h"
-   File "${AFS_BUILD_INCDIR}\afs\vnode.h"
-   File "${AFS_BUILD_INCDIR}\afs\volume.h"
-   File "${AFS_BUILD_INCDIR}\afs\voldefs.h"
-   File "${AFS_BUILD_INCDIR}\afs\volser.h"
-   File "${AFS_BUILD_INCDIR}\afs\volint.h"
-   File "${AFS_BUILD_INCDIR}\afs\fs_stats.h"
-   File "${AFS_BUILD_INCDIR}\afs\bosint.h"
-   File "${AFS_BUILD_INCDIR}\afs\bnode.h"
-   
-   
-   SetOutPath "$INSTDIR\Client\Program\Include\rx"
-   File "${AFS_BUILD_INCDIR}\rx\rx.h"
-   File "${AFS_BUILD_INCDIR}\rx\rx_packet.h"
-   File "${AFS_BUILD_INCDIR}\rx\rx_user.h"
-   File "${AFS_BUILD_INCDIR}\rx\rx_event.h"
-   File "${AFS_BUILD_INCDIR}\rx\rx_queue.h"
-   File "${AFS_BUILD_INCDIR}\rx\rx_globals.h"
-   File "${AFS_BUILD_INCDIR}\rx\rx_clock.h"
-   File "${AFS_BUILD_INCDIR}\rx\rx_misc.h"
-   File "${AFS_BUILD_INCDIR}\rx\rx_multi.h"
-   File "${AFS_BUILD_INCDIR}\rx\rx_null.h"
-   File "${AFS_BUILD_INCDIR}\rx\rx_lwp.h"
-   File "${AFS_BUILD_INCDIR}\rx\rx_pthread.h"
-   File "${AFS_BUILD_INCDIR}\rx\rx_xmit_nt.h"
-   File "${AFS_BUILD_INCDIR}\rx\xdr.h"
-   File "${AFS_BUILD_INCDIR}\rx\rxkad.h"
-   
-   
+    SetOutPath "$INSTDIR\Client\Program\Include"
+    File /r "${AFS_BUILD_INCDIR}\*.*"    
 
    ; Client Sample
    SetOutPath "$INSTDIR\Client\Program\Sample"
@@ -1271,6 +1193,21 @@ Function .onInit
    Abort
    
 contInstall:
+
+   ; Check that RPC functions are installed (I believe any one of these can be present for
+   ; OpenAFS to work)
+   ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\RPC\ClientProtocols" "ncacn_np"
+   StrCmp $R0 "rpcrt4.dll" contInstall2
+   ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\RPC\ClientProtocols" "ncacn_ip_tcp"
+   StrCmp $R0 "rpcrt4.dll" contInstall2
+   ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\RPC\ClientProtocols" "ncadg_ip_udp"
+   StrCmp $R0 "rpcrt4.dll" contInstall2
+   
+   MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST "An error was detected with your Windows RPC installation. Please make sure Windows RPC is installed before installing OpenAFS."
+   Abort
+
+
+contInstall2:
    ; Our logic should be like this.
    ;     1) If no AFS components are installed, we do a clean install with default options. (Client/Docs)
    ;     2) If existing modules are installed, we keep them selected
@@ -1283,11 +1220,24 @@ contInstall:
    Call ShouldClientInstall
    Pop $R2
    
+   ; Check if it was an IBM/Transarc version
+   ReadRegStr $R0 HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon" "DisplayName"
+   StrCmp $R0 "IBM AFS Client" DoIBM
+   StrCmp $R0 "Transarc AFS Client" DoIBM
+NotIBM:
+   StrCpy $R9 ""
    StrCmp $R2 "0" NoClient
    StrCmp $R2 "1" ReinstallClient
    StrCmp $R2 "2" UpgradeClient
    StrCmp $R2 "3" DowngradeClient
-   
+   goto Continue
+DoIBM:
+   ReadRegDWORD $R0 HKLM "Software\TransarcCorporation\AFS Client\CurrentVersion" "MajorVersion"
+   StrCmp $R0 "3" +1 NotIBM
+   StrCpy $R9 "IBM"
+   goto UpgradeClient
+
+Continue:
        SectionGetFlags ${secClient} $0
        IntOp $0 $0 | ${SF_SELECTED}
        SectionSetFlags ${secClient} $0
@@ -1387,13 +1337,13 @@ CheckDocs:
        SectionGetFlags ${secDocs} $0
        IntOp $0 $0 | ${SF_SELECTED}
        SectionSetFlags ${secDocs} $0
-   goto end
+   goto CheckSDK
    
 NoDocs:
        SectionGetFlags ${secDocs} $0
        IntOp $0 $0 & ${SECTION_OFF}
        SectionSetFlags ${secDocs} $0
-   goto end
+   goto CheckSDK
    
 ; To check the SDK, we simply look to see if the files exist.  If they do,
 ; the SDK is installed.  If not, we don't need to push it on the user.
@@ -1452,7 +1402,24 @@ end:
   StrCmp $R0 "" TryServer
   Push $R0
   Call GetParent
-  Call GetParent
+  
+  ; Work around bug in 1.3.5000, 1.3.5100, 1.3.5200, 1.3.5201, 1.3.5299 installers...
+  ReadRegStr $R0 HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "MajorVersion"
+  StrCmp $R0 "1" +1 SkipParent
+  ReadRegStr $R0 HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "MinorVersion"
+  StrCmp $R0 "3" +1 SkipParent
+  ReadRegStr $R0 HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "PatchLevel"
+  StrCmp $R0 "5000" UpParent
+  StrCmp $R0 "5100" UpParent
+  StrCmp $R0 "5200" UpParent
+  StrCmp $R0 "5201" UpParent
+  StrCmp $R0 "5299" UpParent
+  goto SkipParent
+  
+UpParent:
+   Call GetParent
+  
+SkipParent:
   Pop $R0
   StrCpy $INSTDIR $R0
   goto Nope
@@ -1526,7 +1493,10 @@ StartRemove:
   GetTempFileName $R0
   File /oname=$R0 "${AFS_WININSTALL_DIR}\Killer.exe"
   nsExec::Exec '$R0 afscreds.exe'
-  nsExec::Exec "afscreds.exe -z"
+  Exec "afscreds.exe -z"
+  ; in case we are upgrading an old version that does not support -z
+  Sleep 2000
+  nsExec::Exec '$R0 afscreds.exe'
 !IFDEF INSTALL_KFW
   nsExec::Exec '$R0 krbcc32s.exe'
 !ENDIF
@@ -1543,6 +1513,8 @@ StartRemove:
   nsExec::Exec '$R0 u TransarcAFSServer'
   Delete $R0
   
+  Call un.RemoveProvider
+
   Push "$INSTDIR\Client\Program"
   Call un.RemoveFromPath
   Push "$INSTDIR\Common"
@@ -1594,79 +1566,61 @@ StartRemove:
    Delete /REBOOTOK "$INSTDIR\Common\afsptsadmin.pdb"
 
 !IFDEF CL_1310
-   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"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcr71d.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcr71d.pdb"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcp71d.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcp71d.pdb"
+   Delete /REBOOTOK "$INSTDIR\bin\mfc71d.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\mfc71d.pdb"
 !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"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcr70d.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcr70d.pdb"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcp70d.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcp70d.pdb"
+   Delete /REBOOTOK "$INSTDIR\bin\mfc70d.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\mfc70d.pdb"
 !ELSE
-   File "${SYSTEMDIR}\mfc42d.dll"
-   File "${SYSTEMDIR}\mfc42d.pdb"
-   File "${SYSTEMDIR}\msvcp60d.dll"
-   File "${SYSTEMDIR}\msvcp60d.pdb"
-   File "${SYSTEMDIR}\msvcrtd.dll"
-   File "${SYSTEMDIR}\msvcrtd.pdb"
+   Delete /REBOOTOK "$INSTDIR\bin\mfc42d.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\mfc42d.pdb"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcp60d.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcp60d.pdb"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcrtd.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\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"
+   Delete /REBOOTOK "$INSTDIR\bin\mfc71.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcr71.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcp71.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC71CHS.DLL"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC71CHT.DLL"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC71DEU.DLL"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC71ENU.DLL"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC71ESP.DLL"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC71FRA.DLL"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC71ITA.DLL"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC71JPN.DLL"
+   Delete /REBOOTOK "$INSTDIR\bin\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"
+   Delete /REBOOTOK "$INSTDIR\bin\mfc70.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcr70.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcp70.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC70CHS.DLL"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC70CHT.DLL"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC70DEU.DLL"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC70ENU.DLL"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC70ESP.DLL"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC70FRA.DLL"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC70ITA.DLL"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC70JPN.DLL"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC70KOR.DLL"
 !ELSE
-   File "${SYSTEMDIR}\mfc42.dll"
-   File "${SYSTEMDIR}\msvcp60.dll"
-   File "${SYSTEMDIR}\msvcrt.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\mfc42.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcp60.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcrt.dll"
 !ENDIF
 !ENDIF
 !ENDIF
@@ -1730,10 +1684,13 @@ StartRemove:
 !endif
 
   RMDir /r "$INSTDIR\Server\usr\afs\bin"
-  RmDir /r "$INSTDIR\Server\usr\afs\etc\logs"
-  RmDir /r "$INSTDIR\Server\usr\afs\etc"
-  RmDir /r "$INSTDIR\Server\usr\afs\local"
-  RMDIR /r "$INSTDIR\Server\usr\afs\logs"
+  ; do not delete the server configuration files
+  ; or we will lose the volumes and authentication
+  ; databases
+  ;RmDir /r "$INSTDIR\Server\usr\afs\etc\logs"
+  ;RmDir /r "$INSTDIR\Server\usr\afs\etc"
+  ;RmDir /r "$INSTDIR\Server\usr\afs\local"
+  ;RMDIR /r "$INSTDIR\Server\usr\afs\logs"
   
   Delete /REBOOTOK "$SYSDIR\afsserver.cpl"
   Delete /REBOOTOK "$SYSDIR\afs_cpa.cpl"
@@ -1768,85 +1725,68 @@ StartRemove:
   RMDir  "$INSTDIR\Client\Program\Include"
   RMDir  "$INSTDIR\Client\Program"
   RMDir  "$INSTDIR\Client"
-  
-!IFDEF DEBUG
+
+!IFDEF DEBUG  
 !IFDEF CL_1310
-   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"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcr71d.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcr71d.pdb"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcp71d.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcp71d.pdb"
+   Delete /REBOOTOK "$INSTDIR\bin\mfc71d.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\mfc71d.pdb"
 !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"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcr70d.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcr70d.pdb"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcp70d.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcp70d.pdb"
+   Delete /REBOOTOK "$INSTDIR\bin\mfc70d.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\mfc70d.pdb"
 !ELSE
-   File "${SYSTEMDIR}\mfc42d.dll"
-   File "${SYSTEMDIR}\mfc42d.pdb"
-   File "${SYSTEMDIR}\msvcp60d.dll"
-   File "${SYSTEMDIR}\msvcp60d.pdb"
-   File "${SYSTEMDIR}\msvcrtd.dll"
-   File "${SYSTEMDIR}\msvcrtd.pdb"
+   Delete /REBOOTOK "$INSTDIR\bin\mfc42d.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\mfc42d.pdb"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcp60d.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcp60d.pdb"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcrtd.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\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"
+   Delete /REBOOTOK "$INSTDIR\bin\mfc71.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcr71.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcp71.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC71CHS.DLL"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC71CHT.DLL"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC71DEU.DLL"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC71ENU.DLL"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC71ESP.DLL"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC71FRA.DLL"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC71ITA.DLL"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC71JPN.DLL"
+   Delete /REBOOTOK "$INSTDIR\bin\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"
+   Delete /REBOOTOK "$INSTDIR\bin\mfc70.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcr70.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcp70.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC70CHS.DLL"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC70CHT.DLL"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC70DEU.DLL"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC70ENU.DLL"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC70ESP.DLL"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC70FRA.DLL"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC70ITA.DLL"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC70JPN.DLL"
+   Delete /REBOOTOK "$INSTDIR\bin\MFC70KOR.DLL"
 !ELSE
-   File "${SYSTEMDIR}\mfc42.dll"
-   File "${SYSTEMDIR}\msvcp60.dll"
-   File "${SYSTEMDIR}\msvcrt.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\mfc42.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcp60.dll"
+   Delete /REBOOTOK "$INSTDIR\bin\msvcrt.dll"
 !ENDIF
 !ENDIF
 !ENDIF
+
   Delete /REBOOTOK "$INSTDIR\Common\*"
   RMDir "$INSTDIR\Common"
 
@@ -1938,11 +1878,14 @@ StrCmp $R0 "1" DoDownload
 ReadINIStr $R0 $0 "Field 2" "State"
 StrCmp $R0 "1" done
 
+ReadINIStr $R0 $0 "Field 6" "State"
+StrCmp $R0 "1" CheckOther
+
 ReadINIStr $R0 $0 "Field 3" "State"
 StrCmp $R0 "1" UsePackaged
 
 ; If none of these, grab file from other location
-goto CheckOther
+goto UsePackaged
 
 DoDownload:
    ReadINIStr $R0 $0 "Field 5" "State"
@@ -1959,13 +1902,139 @@ UsePackaged:
    
 CheckOther:
    ReadINIStr $R0 $0 "Field 7" "State"
-   StrCmp $R0 "1" +1 done
+   StrCmp $R0 "" done
    CopyFiles $R0 "$WINDIR\afsdcell.ini"
    
 done:
 
 FunctionEnd
 
+Function AddProvider
+   Push $R0
+   Push $R1
+   ReadRegStr $R0 HKLM "SYSTEM\CurrentControlSet\Control\NetworkProvider\HWOrder" "ProviderOrder"
+   Push $R0
+   StrCpy $R0 "TransarcAFSDaemon"
+   Push $R0
+   Call StrStr
+   Pop $R0
+   StrCmp $R0 "" +1 DoOther
+   ReadRegStr $R1 HKLM "SYSTEM\CurrentControlSet\Control\NetworkProvider\HWOrder" "ProviderOrder"   
+   StrCpy $R0 "$R1,TransarcAFSDaemon"
+   WriteRegStr HKLM "SYSTEM\CurrentControlSet\Control\NetworkProvider\HWOrder" "ProviderOrder" $R0
+DoOther:
+   ReadRegStr $R0 HKLM "SYSTEM\CurrentControlSet\Control\NetworkProvider\Order" "ProviderOrder"
+   Push $R0
+   StrCpy $R0 "TransarcAFSDaemon"
+   Push $R0
+   Call StrStr
+   Pop $R0
+   StrCmp $R0 "" +1 End
+   ReadRegStr $R1 HKLM "SYSTEM\CurrentControlSet\Control\NetworkProvider\Order" "ProviderOrder"   
+   StrCpy $R0 "$R1,TransarcAFSDaemon"
+   WriteRegStr HKLM "SYSTEM\CurrentControlSet\Control\NetworkProvider\Order" "ProviderOrder" $R0   
+End:
+   Pop $R1
+   Pop $R0
+FunctionEnd
+
+Function un.RemoveProvider
+   Push $R0
+   StrCpy $R0 "TransarcAFSDaemon"
+   Push $R0
+   StrCpy $R0 "SYSTEM\CurrentControlSet\Control\NetworkProvider\HWOrder"
+   Call un.RemoveFromProvider
+   StrCpy $R0 "TransarcAFSDaemon"
+   Push $R0
+   StrCpy $R0 "SYSTEM\CurrentControlSet\Control\NetworkProvider\Order"
+   Call un.RemoveFromProvider
+   Pop $R0
+FunctionEnd
+
+Function un.RemoveFromProvider
+  Exch $0
+  Push $1
+  Push $2
+  Push $3
+  Push $4
+  Push $5
+  Push $6
+
+  ReadRegStr $1 HKLM "$R0" "ProviderOrder"
+    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 $2 ; pos of our dir
+    StrCmp $2 "" unRemoveFromPath_done
+      ; else, it is in path
+      # $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
+
+      WriteRegStr HKLM "$R0" "ProviderOrder" $3
+      
+  unRemoveFromPath_done:
+    Pop $6
+    Pop $5
+    Pop $4
+    Pop $3
+    Pop $2
+    Pop $1
+    Pop $0
+FunctionEnd
+
+Function CheckPathForAFS
+   Push $0
+   Push $1
+   Push $2
+   Push $3
+   ReadRegStr $1 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "PATH"
+   StrCpy $1 "$1;"
+loop:
+   Push $1
+   Push ";"
+   Call StrStr
+   Pop $0
+   StrLen $2 $0
+   StrCpy $3 $1 -$2
+   IfFileExists "$3\afsd_service.exe" Error
+   StrCpy $1 $0 32768 1
+   StrLen $2 $1
+   IntCmp $2 0 Done Done loop
+   goto Done
+Error:
+   MessageBox MB_ICONSTOP|MB_OK|MB_TOPMOST "This installer is unable to upgrade the previous version of AFS. Please uninstall the current AFS version before continuing."
+   Abort "Unable to install OpenAFS"
+Done:
+   Pop $3
+   Pop $2
+   Pop $1
+   Pop $0
+FunctionEnd
+
+Function AddToUniquePath
+   Pop $R0
+   Push $R0
+   Push "$R0;"
+   ReadRegStr $R0 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "PATH"
+   Push "$R0;"
+   Call StrStr
+   Pop $R0
+   StrCmp $R0 "" +1 Done
+   Call AddToPath
+Done:
+FunctionEnd
 
 
 ;-------------------------------
@@ -2182,7 +2251,7 @@ Function ShouldClientInstall
    
    StrCmp $R0 "" NotInstalled
    ; Now we see if it's an older or newer version
-
+   
    Call GetInstalledVersionMajor
    Pop $R0
    IntCmpU $R0 ${AFS_MAJORVERSION} +1 Upgrade Downgrade
@@ -2210,7 +2279,6 @@ Downgrade:
    Exch $R0
    goto end
    
-   
 NotInstalled:
    StrCpy $R0 "0"
    Exch $R0
@@ -2418,9 +2486,9 @@ Function AFSLangFiles
    SetOutPath "$INSTDIR\Common"
    File "${AFS_CLIENT_BUILDDIR}\afs_config.exe"
    File "${AFS_SERVER_BUILDDIR}\afsadminutil.dll"
-  !insertmacro UpgradeDLL "${AFS_DESTDIR}\lib\afsauthent.dll" "$INSTDIR\Common\afsauthent.dll" "$INSTDIR"
-  !insertmacro UpgradeDLL "${AFS_DESTDIR}\lib\afspthread.dll" "$INSTDIR\Common\afspthread.dll" "$INSTDIR"
-  !insertmacro UpgradeDLL "${AFS_DESTDIR}\lib\afsrpc.dll" "$INSTDIR\Common\afsrpc.dll" "$INSTDIR"
+  !insertmacro ReplaceDLL "${AFS_DESTDIR}\lib\afsauthent.dll" "$INSTDIR\Common\afsauthent.dll" "$INSTDIR"
+  !insertmacro ReplaceDLL "${AFS_DESTDIR}\lib\afspthread.dll" "$INSTDIR\Common\afspthread.dll" "$INSTDIR"
+  !insertmacro ReplaceDLL "${AFS_DESTDIR}\lib\afsrpc.dll" "$INSTDIR\Common\afsrpc.dll" "$INSTDIR"
    File "${AFS_SERVER_BUILDDIR}\afsclientadmin.dll"
    File "${AFS_SERVER_BUILDDIR}\afsprocmgmt.dll"
    File "${AFS_SERVER_BUILDDIR}\afsvosadmin.dll"
@@ -2430,6 +2498,7 @@ Function AFSLangFiles
    File "${AFS_SERVER_BUILDDIR}\afscfgadmin.dll"
    File "${AFS_SERVER_BUILDDIR}\afskasadmin.dll"
    File "${AFS_SERVER_BUILDDIR}\afsptsadmin.dll"
+
 !IFDEF DEBUG
 !IFDEF CL_1310
    File "${SYSTEMDIR}\msvcr71d.dll"
@@ -2540,18 +2609,24 @@ DoEnglish:
    SetOutPath "$INSTDIR\Documentation"
    File "..\..\doc\install\Documentation\en_US\README.TXT"
 
+   SetOutPath "$INSTDIR\Client\Program"
+   !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afscreds_1033.dll"    "$INSTDIR\Client\Program\afscreds_1033.dll" "$INSTDIR"
+   !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1033.dll" "$INSTDIR\Client\Program\afs_shl_ext_1033.dll" "$INSTDIR"
+!ifdef DEBUG
+   ;File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1033.pdb"
+   ;File "${AFS_CLIENT_BUILDDIR}\afscreds_1033.pdb"
+!endif
+
    SetOutPath "$INSTDIR\Common"
-   File "${AFS_CLIENT_BUILDDIR}\afs_config_1033.dll"
-   File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1033.dll"
-   File "${AFS_CLIENT_BUILDDIR}\afscreds_1033.dll"
-   File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1033.dll"
-   File "${AFS_SERVER_BUILDDIR}\afseventmsg_1033.dll"
-   ;File "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1033.dll"
-   File "${AFS_SERVER_BUILDDIR}\afsserver_1033.dll"
-   File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1033.dll"
-   File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1033.dll"
-   File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1033.dll"
-   File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1033.dll"
+   !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_config_1033.dll"           "$INSTDIR\Common\afs_config_1033.dll" "$INSTDIR"
+   !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_cpa_1033.dll"              "$INSTDIR\Common\afs_cpa_1033.dll" "$INSTDIR"
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afseventmsg_1033.dll"          "$INSTDIR\Common\afseventmsg_1033.dll" "$INSTDIR"
+  ;!insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1033.dll"      "$INSTDIR\Common\afs_setup_utils_1033.dll" "$INSTDIR"
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afsserver_1033.dll"            "$INSTDIR\Common\afsserver_1033.dll" "$INSTDIR"
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afssvrcfg_1033.dll"            "$INSTDIR\Common\afssvrcfg_1033.dll" "$INSTDIR"
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1033.dll"  "$INSTDIR\Common\TaAfsAccountManager_1033.dll" "$INSTDIR"
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1033.dll"          "$INSTDIR\Common\TaAfsAppLib_1033.dll" "$INSTDIR"
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1033.dll"   "$INSTDIR\Common\TaAfsServerManager_1033.dll" "$INSTDIR"
    File "..\..\doc\help\en_US\afs-cc.CNT"
    File "..\..\doc\help\en_US\afs-cc.hlp"
    File "..\..\doc\help\en_US\afs-light.CNT"
@@ -2564,6 +2639,17 @@ DoEnglish:
    File "..\..\doc\help\en_US\taafssvrmgr.hlp"
    File "..\..\doc\help\en_US\taafsusrmgr.CNT"
    File "..\..\doc\help\en_US\taafsusrmgr.hlp"
+
+!ifdef DEBUG
+   ;File "${AFS_CLIENT_BUILDDIR}\afs_config_1033.pdb"
+   ;File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1033.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\afseventmsg_1033.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\afsserver_1033.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1033.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1033.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1033.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1033.pdb"
+!ENDIF
    goto done
 
 DoGerman:
@@ -2571,18 +2657,24 @@ DoGerman:
    SetOutPath "$INSTDIR\Documentation"
    File "..\..\doc\install\Documentation\de_DE\README.TXT"
 
+   SetOutPath "$INSTDIR\Client\Program"
+  !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afscreds_1032.dll"                      "$INSTDIR\Client\Program\afscreds_1032.dll" "$INSTDIR"
+  !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1032.dll" "$INSTDIR\Client\Program\afs_shl_ext_1032.dll" "$INSTDIR"
+!ifdef DEBUG
+   ;File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1032.pdb"
+   ;File "${AFS_CLIENT_BUILDDIR}\afscreds_1032.pdb"
+!endif
+
    SetOutPath "$INSTDIR\Common"
-   File "${AFS_CLIENT_BUILDDIR}\afs_config_1032.dll"
-   File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1032.dll"
-   File "${AFS_CLIENT_BUILDDIR}\afscreds_1032.dll"
-   File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1032.dll"
-   File "${AFS_SERVER_BUILDDIR}\afseventmsg_1032.dll"
-   ;File "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1032.dll"
-   File "${AFS_SERVER_BUILDDIR}\afsserver_1032.dll"
-   File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1032.dll"
-   File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1032.dll"
-   File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1032.dll"
-   File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1032.dll"
+   !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_config_1032.dll"           "$INSTDIR\Common\afs_config_1032.dll" "$INSTDIR"
+   !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_cpa_1032.dll"              "$INSTDIR\Common\afs_cpa_1032.dll" "$INSTDIR" 
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afseventmsg_1032.dll"          "$INSTDIR\Common\afseventmsg_1032.dll" "$INSTDIR" 
+  ;!insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1032.dll"      "$INSTDIR\Common\afs_setup_utils_1032.dll" "$INSTDIR" 
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afsserver_1032.dll"            "$INSTDIR\Common\afsserver_1032.dll" "$INSTDIR" 
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afssvrcfg_1032.dll"            "$INSTDIR\Common\afssvrcfg_1032.dll" "$INSTDIR" 
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1032.dll"  "$INSTDIR\Common\TaAfsAccountManager_1032.dll" "$INSTDIR" 
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1032.dll"          "$INSTDIR\Common\TaAfsAppLib_1032.dll" "$INSTDIR" 
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1032.dll"   "$INSTDIR\Common\TaAfsServerManager_1032.dll" "$INSTDIR" 
    File "..\..\doc\help\de_DE\afs-cc.CNT"
    File "..\..\doc\help\de_DE\afs-cc.hlp"
    File "..\..\doc\help\de_DE\afs-light.CNT"
@@ -2597,92 +2689,14 @@ DoGerman:
    File "..\..\doc\help\de_DE\taafsusrmgr.hlp"
 
 !ifdef DEBUG
-   ;File "${AFS_CLIENT_BUILDDIR}\afs_config_1033.pdb"
-   ;File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1033.pdb"
-   ;File "${AFS_CLIENT_BUILDDIR}\afscreds_1033.pdb"
-   ;File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1033.pdb"
-   ;File "${AFS_SERVER_BUILDDIR}\afseventmsg_1033.pdb"
-   ;File "${AFS_SERVER_BUILDDIR}\afsserver_1033.pdb"
-   ;File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1033.pdb"
-   ;File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1033.pdb"
-   ;File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1033.pdb"
-   ;File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1033.pdb"
-!IFDEF CL_1310
-   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 "${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
+   ;File "${AFS_CLIENT_BUILDDIR}\afs_config_1032.pdb"
+   ;File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1032.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\afseventmsg_1032.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\afsserver_1032.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1032.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1032.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1032.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1032.pdb"
 !ENDIF
    goto done   
 
@@ -2691,18 +2705,24 @@ DoSpanish:
    SetOutPath "$INSTDIR\Documentation"
    File "..\..\doc\install\Documentation\es_ES\README.TXT"
 
+   SetOutPath "$INSTDIR\Client\Program"
+   !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afscreds_1034.dll"     "$INSTDIR\Client\Program\afscreds_1034.dll" "$INSTDIR" 
+   !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1034.dll" "$INSTDIR\Client\Program\afs_shl_ext_1034.dll" "$INSTDIR"
+!ifdef DEBUG
+   ;File "${AFS_CLIENT_BUILDDIR}\afscreds_1034.pdb"
+   ;File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1034.pdb"
+!endif
+
    SetOutPath "$INSTDIR\Common"
-   File "${AFS_CLIENT_BUILDDIR}\afs_config_1034.dll"
-   File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1034.dll"
-   File "${AFS_CLIENT_BUILDDIR}\afscreds_1034.dll"
-   File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1034.dll"
-   File "${AFS_SERVER_BUILDDIR}\afseventmsg_1034.dll"
-   ;File "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1034.dll"
-   File "${AFS_SERVER_BUILDDIR}\afsserver_1034.dll"
-   File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1034.dll"
-   File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1034.dll"
-   File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1034.dll"
-   File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1034.dll"
+   !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_config_1034.dll"          "$INSTDIR\Common\afs_config_1034.dll" "$INSTDIR"  
+   !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_cpa_1034.dll"             "$INSTDIR\Common\afs_cpa_1034.dll" "$INSTDIR"  
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afseventmsg_1034.dll"         "$INSTDIR\Common\afseventmsg_1034.dll" "$INSTDIR"  
+  ;!insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1034.dll"     "$INSTDIR\Common\afs_setup_utils_1034.dll" "$INSTDIR"  
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afsserver_1034.dll"           "$INSTDIR\Common\afsserver_1034.dll" "$INSTDIR"  
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afssvrcfg_1034.dll"           "$INSTDIR\Common\afssvrcfg_1034.dll" "$INSTDIR"  
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1034.dll" "$INSTDIR\Common\TaAfsAccountManager_1034.dll" "$INSTDIR"  
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1034.dll"         "$INSTDIR\Common\TaAfsAppLib_1034.dll" "$INSTDIR"  
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1034.dll"  "$INSTDIR\Common\TaAfsServerManager_1034.dll" "$INSTDIR"  
    File "..\..\doc\help\es_ES\afs-cc.CNT"
    File "..\..\doc\help\es_ES\afs-cc.hlp"
    File "..\..\doc\help\es_ES\afs-light.CNT"
@@ -2715,6 +2735,17 @@ DoSpanish:
    File "..\..\doc\help\es_ES\taafssvrmgr.hlp"
    File "..\..\doc\help\es_ES\taafsusrmgr.CNT"
    File "..\..\doc\help\es_ES\taafsusrmgr.hlp"
+
+!ifdef DEBUG
+   ;File "${AFS_CLIENT_BUILDDIR}\afs_config_1034.pdb"
+   ;File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1034.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\afseventmsg_1034.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\afsserver_1034.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1034.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1034.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1034.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1034.pdb"
+!ENDIF
    goto done
 
 DoJapanese:
@@ -2722,18 +2753,24 @@ DoJapanese:
    SetOutPath "$INSTDIR\Documentation"
    File "..\..\doc\install\Documentation\ja_JP\README.TXT"
 
+   SetOutPath "$INSTDIR\Client\Program"
+   !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afscreds_1041.dll"  "$INSTDIR\Client\Program\afscreds_1041.dll" "$INSTDIR"  
+   !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1041.dll" "$INSTDIR\Client\Program\afs_shl_ext_1041.dll" "$INSTDIR"
+!ifdef DEBUG
+   ;File "${AFS_CLIENT_BUILDDIR}\afscreds_1041.pdb"
+   ;File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1041.pdb"
+!endif
+
    SetOutPath "$INSTDIR\Common"
-   File "${AFS_CLIENT_BUILDDIR}\afs_config_1041.dll"
-   File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1041.dll"
-   File "${AFS_CLIENT_BUILDDIR}\afscreds_1041.dll"
-   File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1041.dll"
-   File "${AFS_SERVER_BUILDDIR}\afseventmsg_1041.dll"
-   ;File "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1041.dll"
-   File "${AFS_SERVER_BUILDDIR}\afsserver_1041.dll"
-   File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1041.dll"
-   File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1041.dll"
-   File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1041.dll"
-   File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1041.dll"
+   !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_config_1041.dll"           "$INSTDIR\Common\afs_config_1041.dll" "$INSTDIR"   
+   !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_cpa_1041.dll"              "$INSTDIR\Common\afs_cpa_1041.dll" "$INSTDIR"   
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afseventmsg_1041.dll"          "$INSTDIR\Common\afseventmsg_1041.dll" "$INSTDIR"   
+  ;!insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1041.dll"      "$INSTDIR\Common\afs_setup_utils_1041.dll" "$INSTDIR"   
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afsserver_1041.dll"            "$INSTDIR\Common\afsserver_1041.dll" "$INSTDIR"   
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afssvrcfg_1041.dll"            "$INSTDIR\Common\afssvrcfg_1041.dll" "$INSTDIR"   
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1041.dll"  "$INSTDIR\Common\TaAfsAccountManager_1041.dll" "$INSTDIR"   
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1041.dll"          "$INSTDIR\Common\TaAfsAppLib_1041.dll" "$INSTDIR"   
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1041.dll"   "$INSTDIR\Common\TaAfsServerManager_1041.dll" "$INSTDIR"   
    File "..\..\doc\help\ja_JP\afs-cc.CNT"
    File "..\..\doc\help\ja_JP\afs-cc.hlp"
    File "..\..\doc\help\ja_JP\afs-light.CNT"
@@ -2746,6 +2783,17 @@ DoJapanese:
    File "..\..\doc\help\ja_JP\taafssvrmgr.hlp"
    File "..\..\doc\help\ja_JP\taafsusrmgr.CNT"
    File "..\..\doc\help\ja_JP\taafsusrmgr.hlp"
+
+!ifdef DEBUG
+   ;File "${AFS_CLIENT_BUILDDIR}\afs_config_1041.pdb"
+   ;File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1041.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\afseventmsg_1041.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\afsserver_1041.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1041.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1041.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1041.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1041.pdb"
+!ENDIF
    goto done
    
 DoKorean:
@@ -2753,18 +2801,24 @@ DoKorean:
    SetOutPath "$INSTDIR\Documentation"
    File "..\..\doc\install\Documentation\ko_KR\README.TXT"
 
+   SetOutPath "$INSTDIR\Client\Program"
+   !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afscreds_1042.dll"  "$INSTDIR\Client\Program\afscreds_1042.dll" "$INSTDIR"   
+   !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1042.dll" "$INSTDIR\Client\Program\afs_shl_ext_1042.dll" "$INSTDIR"
+!ifdef DEBUG
+   ;File "${AFS_CLIENT_BUILDDIR}\afscreds_1042.pdb"
+   ;File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1042.pdb"
+!endif
+
    SetOutPath "$INSTDIR\Common"
-   File "${AFS_CLIENT_BUILDDIR}\afs_config_1042.dll"
-   File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1042.dll"
-   File "${AFS_CLIENT_BUILDDIR}\afscreds_1042.dll"
-   File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1042.dll"
-   File "${AFS_SERVER_BUILDDIR}\afseventmsg_1042.dll"
-   ;File "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1042.dll"
-   File "${AFS_SERVER_BUILDDIR}\afsserver_1042.dll"
-   File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1042.dll"
-   File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1042.dll"
-   File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1042.dll"
-   File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1042.dll"
+   !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_config_1042.dll"           "$INSTDIR\Common\afs_config_1042.dll" "$INSTDIR"    
+   !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_cpa_1042.dll"              "$INSTDIR\Common\afs_cpa_1042.dll" "$INSTDIR"    
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afseventmsg_1042.dll"          "$INSTDIR\Common\afseventmsg_1042.dll" "$INSTDIR"    
+  ;!insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1042.dll"      "$INSTDIR\Common\afs_setup_utils_1042.dll" "$INSTDIR"    
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afsserver_1042.dll"            "$INSTDIR\Common\afsserver_1042.dll" "$INSTDIR"    
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afssvrcfg_1042.dll"            "$INSTDIR\Common\afssvrcfg_1042.dll" "$INSTDIR"    
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1042.dll"  "$INSTDIR\Common\TaAfsAccountManager_1042.dll" "$INSTDIR"    
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1042.dll"          "$INSTDIR\Common\TaAfsAppLib_1042.dll" "$INSTDIR"    
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1042.dll"   "$INSTDIR\Common\TaAfsServerManager_1042.dll" "$INSTDIR"    
    File "..\..\doc\help\ko_KR\afs-cc.CNT"
    File "..\..\doc\help\ko_KR\afs-cc.hlp"
    File "..\..\doc\help\ko_KR\afs-light.CNT"
@@ -2777,6 +2831,17 @@ DoKorean:
    File "..\..\doc\help\ko_KR\taafssvrmgr.hlp"
    File "..\..\doc\help\ko_KR\taafsusrmgr.CNT"
    File "..\..\doc\help\ko_KR\taafsusrmgr.hlp"
+
+!ifdef DEBUG
+   ;File "${AFS_CLIENT_BUILDDIR}\afs_config_1042.pdb"
+   ;File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1042.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\afseventmsg_1042.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\afsserver_1042.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1042.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1042.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1042.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1042.pdb"
+!ENDIF
    goto done
 
 
@@ -2785,18 +2850,24 @@ DoPortugueseBR:
    SetOutPath "$INSTDIR\Documentation"
    File "..\..\doc\install\Documentation\pt_BR\README.TXT"
 
+   SetOutPath "$INSTDIR\Client\Program"
+   !insertmacro ReplaceDLL  "${AFS_CLIENT_BUILDDIR}\afscreds_1046.dll"  "$INSTDIR\Client\Program\afscreds_1046.dll" "$INSTDIR"    
+   !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1046.dll" "$INSTDIR\Client\Program\afs_shl_ext_1046.dll" "$INSTDIR"
+!ifdef DEBUG
+   ;File "${AFS_CLIENT_BUILDDIR}\afscreds_1046.pdb"
+   ;File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1046.pdb"
+!endif
+
    SetOutPath "$INSTDIR\Common"
-   File "${AFS_CLIENT_BUILDDIR}\afs_config_1046.dll"
-   File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1046.dll"
-   File "${AFS_CLIENT_BUILDDIR}\afscreds_1046.dll"
-   File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1046.dll"
-   File "${AFS_SERVER_BUILDDIR}\afseventmsg_1046.dll"
-   ;File "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1046.dll"
-   File "${AFS_SERVER_BUILDDIR}\afsserver_1046.dll"
-   File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1046.dll"
-   File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1046.dll"
-   File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1046.dll"
-   File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1046.dll"
+   !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_config_1046.dll"           "$INSTDIR\Common\afs_config_1046.dll" "$INSTDIR"     
+   !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_cpa_1046.dll"              "$INSTDIR\Common\afs_cpa_1046.dll" "$INSTDIR"     
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afseventmsg_1046.dll"          "$INSTDIR\Common\afseventmsg_1046.dll" "$INSTDIR"     
+  ;!insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1046.dll"      "$INSTDIR\Common\afs_setup_utils_1046.dll" "$INSTDIR"     
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afsserver_1046.dll"            "$INSTDIR\Common\afsserver_1046.dll" "$INSTDIR"     
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afssvrcfg_1046.dll"            "$INSTDIR\Common\afssvrcfg_1046.dll" "$INSTDIR"     
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1046.dll"  "$INSTDIR\Common\TaAfsAccountManager_1046.dll" "$INSTDIR"     
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1046.dll"          "$INSTDIR\Common\TaAfsAppLib_1046.dll" "$INSTDIR"     
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1046.dll"   "$INSTDIR\Common\TaAfsServerManager_1046.dll" "$INSTDIR"     
    File "..\..\doc\help\pt_BR\afs-cc.CNT"
    File "..\..\doc\help\pt_BR\afs-cc.hlp"
    File "..\..\doc\help\pt_BR\afs-light.CNT"
@@ -2809,6 +2880,17 @@ DoPortugueseBR:
    File "..\..\doc\help\pt_BR\taafssvrmgr.hlp"
    File "..\..\doc\help\pt_BR\taafsusrmgr.CNT"
    File "..\..\doc\help\pt_BR\taafsusrmgr.hlp"
+
+!ifdef DEBUG
+   ;File "${AFS_CLIENT_BUILDDIR}\afs_config_1046.pdb"
+   ;File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1046.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\afseventmsg_1046.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\afsserver_1046.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1046.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1046.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1046.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1046.pdb"
+!ENDIF
    goto done
    
 DoSimpChinese:
@@ -2816,18 +2898,24 @@ DoSimpChinese:
    SetOutPath "$INSTDIR\Documentation"
    File "..\..\doc\install\Documentation\zh_CN\README.TXT"
 
+   SetOutPath "$INSTDIR\Client\Program"
+   !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afscreds_2052.dll"   "$INSTDIR\Client\Program\afscreds_2052.dll" "$INSTDIR"     
+   !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_2052.dll" "$INSTDIR\Client\Program\afs_shl_ext_2052.dll" "$INSTDIR"
+!ifdef DEBUG
+   ;File "${AFS_CLIENT_BUILDDIR}\afscreds_2052.pdb"
+   ;File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_2052.pdb"
+!endif
+
    SetOutPath "$INSTDIR\Common"
-   File "${AFS_CLIENT_BUILDDIR}\afs_config_2052.dll"
-   File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_2052.dll"
-   File "${AFS_CLIENT_BUILDDIR}\afscreds_2052.dll"
-   File "${AFS_CLIENT_BUILDDIR}\afs_cpa_2052.dll"
-   File "${AFS_SERVER_BUILDDIR}\afseventmsg_2052.dll"
-   ;File "${AFS_SERVER_BUILDDIR}\afs_setup_utils_2052.dll"
-   File "${AFS_SERVER_BUILDDIR}\afsserver_2052.dll"
-   File "${AFS_SERVER_BUILDDIR}\afssvrcfg_2052.dll"
-   File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_2052.dll"
-   File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_2052.dll"
-   File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_2052.dll"
+   !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_config_2052.dll"           "$INSTDIR\Common\afs_config_2052.dll" "$INSTDIR"      
+   !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_cpa_2052.dll"              "$INSTDIR\Common\afs_cpa_2052.dll" "$INSTDIR"      
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afseventmsg_2052.dll"          "$INSTDIR\Common\afseventmsg_2052.dll" "$INSTDIR"      
+  ;!insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afs_setup_utils_2052.dll"      "$INSTDIR\Common\afs_setup_utils_2052.dll" "$INSTDIR"      
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afsserver_2052.dll"            "$INSTDIR\Common\afsserver_2052.dll" "$INSTDIR"      
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afssvrcfg_2052.dll"            "$INSTDIR\Common\afssvrcfg_2052.dll" "$INSTDIR"      
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_2052.dll"  "$INSTDIR\Common\TaAfsAccountManager_2052.dll" "$INSTDIR"      
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_2052.dll"          "$INSTDIR\Common\TaAfsAppLib_2052.dll" "$INSTDIR"      
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_2052.dll"   "$INSTDIR\Common\TaAfsServerManager_2052.dll" "$INSTDIR"      
    File "..\..\doc\help\zh_CN\afs-cc.CNT"
    File "..\..\doc\help\zh_CN\afs-cc.hlp"
    File "..\..\doc\help\zh_CN\afs-light.CNT"
@@ -2840,6 +2928,17 @@ DoSimpChinese:
    File "..\..\doc\help\zh_CN\taafssvrmgr.hlp"
    File "..\..\doc\help\zh_CN\taafsusrmgr.CNT"
    File "..\..\doc\help\zh_CN\taafsusrmgr.hlp"
+
+!ifdef DEBUG
+   ;File "${AFS_CLIENT_BUILDDIR}\afs_config_2052.pdb"
+   ;File "${AFS_CLIENT_BUILDDIR}\afs_cpa_2052.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\afseventmsg_2052.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\afsserver_2052.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\afssvrcfg_2052.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_2052.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_2052.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_2052.pdb"
+!ENDIF
    goto done
    
 DoTradChinese:
@@ -2847,18 +2946,24 @@ DoTradChinese:
    SetOutPath "$INSTDIR\Documentation"
    File "..\..\doc\install\Documentation\zh_TW\README.TXT"
 
+   SetOutPath "$INSTDIR\Client\Program"
+   !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afscreds_1028.dll"  "$INSTDIR\Client\Program\_1028.dll" "$INSTDIR"      
+   !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1028.dll" "$INSTDIR\Client\Program\afs_shl_ext_1028.dll" "$INSTDIR"
+!ifdef DEBUG
+   ;File "${AFS_CLIENT_BUILDDIR}\afscreds_1028.pdb"
+   ;File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1028.pdb"
+!endif
+
    SetOutPath "$INSTDIR\Common"
-   File "${AFS_CLIENT_BUILDDIR}\afs_config_1028.dll"
-   File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1028.dll"
-   File "${AFS_CLIENT_BUILDDIR}\afscreds_1028.dll"
-   File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1028.dll"
-   File "${AFS_SERVER_BUILDDIR}\afseventmsg_1028.dll"
-   ;File "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1028.dll"
-   File "${AFS_SERVER_BUILDDIR}\afsserver_1028.dll"
-   File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1028.dll"
-   File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1028.dll"
-   File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1028.dll"
-   File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1028.dll"
+   !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_config_1028.dll"           "$INSTDIR\Common\afs_config_1028.dll" "$INSTDIR"       
+   !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_cpa_1028.dll"              "$INSTDIR\Common\afs_cpa_1028.dll" "$INSTDIR"       
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afseventmsg_1028.dll"          "$INSTDIR\Common\afseventmsg_1028.dll" "$INSTDIR"       
+  ;!insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1028.dll"      "$INSTDIR\Common\afs_setup_utils_1028.dll" "$INSTDIR"       
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afsserver_1028.dll"            "$INSTDIR\Common\afsserver_1028.dll" "$INSTDIR"       
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afssvrcfg_1028.dll"            "$INSTDIR\Common\afssvrcfg_1028.dll" "$INSTDIR"       
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1028.dll"  "$INSTDIR\Common\TaAfsAccountManager_1028.dll" "$INSTDIR"       
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1028.dll"          "$INSTDIR\Common\TaAfsAppLib_1028.dll" "$INSTDIR"       
+   !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1028.dll"   "$INSTDIR\Common\TaAfsServerManager_1028.dll" "$INSTDIR"       
    File "..\..\doc\help\zh_TW\afs-cc.CNT"
    File "..\..\doc\help\zh_TW\afs-cc.hlp"
    File "..\..\doc\help\zh_TW\afs-light.CNT"
@@ -2871,6 +2976,17 @@ DoTradChinese:
    File "..\..\doc\help\zh_TW\taafssvrmgr.hlp"
    File "..\..\doc\help\zh_TW\taafsusrmgr.CNT"
    File "..\..\doc\help\zh_TW\taafsusrmgr.hlp"
+
+!ifdef DEBUG
+   ;File "${AFS_CLIENT_BUILDDIR}\afs_config_1028.pdb"
+   ;File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1028.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\afseventmsg_1028.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\afsserver_1028.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1028.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1028.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1028.pdb"
+   ;File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1028.pdb"
+!ENDIF
    goto done
    
 done:
@@ -3380,3 +3496,97 @@ MakeClientSelected:
 end:
 FunctionEnd
 
+Function RegWriteMultiStr
+!define HKEY_CLASSES_ROOT        0x80000000
+!define HKEY_CURRENT_USER        0x80000001
+!define HKEY_LOCAL_MACHINE       0x80000002
+!define HKEY_USERS               0x80000003
+!define HKEY_PERFORMANCE_DATA    0x80000004
+!define HKEY_PERFORMANCE_TEXT    0x80000050
+!define HKEY_PERFORMANCE_NLSTEXT 0x80000060
+!define HKEY_CURRENT_CONFIG      0x80000005
+!define HKEY_DYN_DATA            0x80000006
+
+!define KEY_QUERY_VALUE          0x0001
+!define KEY_SET_VALUE            0x0002
+!define KEY_CREATE_SUB_KEY       0x0004
+!define KEY_ENUMERATE_SUB_KEYS   0x0008
+!define KEY_NOTIFY               0x0010
+!define KEY_CREATE_LINK          0x0020
+
+!define REG_NONE                 0
+!define REG_SZ                   1
+!define REG_EXPAND_SZ            2
+!define REG_BINARY               3
+!define REG_DWORD                4
+!define REG_DWORD_LITTLE_ENDIAN  4
+!define REG_DWORD_BIG_ENDIAN     5
+!define REG_LINK                 6
+!define REG_MULTI_SZ             7
+
+!define RegCreateKey             "Advapi32::RegCreateKeyA(i, t, *i) i"
+!define RegSetValueEx            "Advapi32::RegSetValueExA(i, t, i, i, i, i) i"
+!define RegCloseKey              "Advapi32::RegCloseKeyA(i) i"
+
+  Exch $R0
+  Push $1
+  Push $2
+  Push $9
+
+  SetPluginUnload alwaysoff
+  ; Create a buffer for the multi_sz value
+  System::Call "*(&t${NSIS_MAX_STRLEN}) i.r1"
+  ; Open/create the registry key
+  System::Call "${RegCreateKey}(${HKEY_LOCAL_MACHINE}, '$REG_SUB_KEY', .r0) .r9"
+  ; Failed?
+  IntCmp $9 0 write
+    MessageBox MB_OK|MB_ICONSTOP "Can't create registry key! ($9)"
+    Goto noClose
+
+  write:
+    ; Fill in the buffer with our strings
+    StrCpy $2 $1                            ; Initial position
+
+    StrLen $9 '$REG_DATA_1'                 ; Length of first string
+    IntOp $9 $9 + 1                         ; Plus null
+    System::Call "*$2(&t$9 '$REG_DATA_1')"  ; Place the string
+    IntOp $2 $2 + $9                        ; Advance to the next position
+
+    StrCmp '$REG_DATA_2' "" terminate
+    StrLen $9 '$REG_DATA_2'                 ; Length of second string
+    IntOp $9 $9 + 1                         ; Plus null
+    System::Call "*$2(&t$9 '$REG_DATA_2')"  ; Place the string
+    IntOp $2 $2 + $9                        ; Advance to the next position
+
+    StrCmp '$REG_DATA_3' "" terminate
+    StrLen $9 '$REG_DATA_3'                 ; Length of third string
+    IntOp $9 $9 + 1                         ; Plus null
+    System::Call "*$2(&t$9 '$REG_DATA_3')"  ; Place the string
+    IntOp $2 $2 + $9                        ; Advance to the next position
+
+  terminate:
+    System::Call "*$2(&t1 '')"              ; Place the terminating null
+    IntOp $2 $2 + 1                         ; Advance to the next position
+
+    ; Create/write the value
+    IntOp $2 $2 - $1                        ; Total length
+    System::Call "${RegSetValueEx}(r0, '$REG_VALUE', 0, ${REG_MULTI_SZ}, r1, r2) .r9"
+    ; Failed?
+    IntCmp $9 0 done
+      MessageBox MB_OK|MB_ICONSTOP "Can't set key value! ($9)"
+      Goto done
+
+  done:
+    ; Close the registry key
+    System::Call "${RegCloseKey}(r0)"
+
+noClose:
+  ; Clear the buffer
+  SetPluginUnload manual
+  System::Free $1
+
+  Pop $9
+  Pop $2
+  Pop $1
+  Exch $R0
+FunctionEnd
\ No newline at end of file