windows-nsis-vs2008-runtime-20080715
[openafs.git] / src / WINNT / install / NSIS / OpenAFS.nsi
index 34f30b4..5dc2057 100644 (file)
@@ -1,42 +1,59 @@
-;OpenAFS Install Script for NSIS
+!define RELEASE 1
+; OpenAFS Install Script for NSIS
+; This version compiles with NSIS v2.07
 ;
-; Written by Rob Murawski <rsm4@ieee.org>
+; Originally written by Rob Murawski <rsm4@ieee.org>
 ;
-;Based on:
-;NSIS Modern User Interface version 1.63
-;MultiLanguage Example Script
-;Written by Joost Verburg
+;Redistribution and use in source and binary forms, with or without modification, are permitted
+;provided that the following conditions are met:
+;
+;  Redistributions of source code must retain the above copyright notice, this list of conditions
+;  and the following disclaimer. Redistributions in binary form must reproduce the above copyright
+;  notice, this list of conditions and the following disclaimer in the documentation and/or other
+;  materials provided with the distribution. The name of the author may not be used to endorse or
+;  promote products derived from this software without specific prior written permission.
+;
+;  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+;  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+;  PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+;  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+;  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+;  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+;  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+;  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+;
+;
+;     Some code originally based on:
+;     NSIS Modern User Interface version 1.63
+;     MultiLanguage Example Script
+;     Written by Joost Verburg
 
 ; Read in the environment information
 !include ${INCLUDEDIR}\nsi-includes.nsi
-; Define DEBUG if building a DEBUG installer
 
-; This version compiles with NSIS v2.0b3 or NSIS v2.0b4
-
-!ifndef v2.0b4       ; v2.0b3
-!ifndef DEBUG        ; !DEBUG
-!define MUI_PRODUCT "OpenAFS" ;Define your own software name here
-!else                ; DEBUG on v2.0b3
-!define MUI_PRODUCT "OpenAFS Checked/Debug"
-!endif               ; End DEBUG
-!define MUI_VERSION ${AFS_VERSION}
-!else                ; v2.0b4
-!ifndef DEBUG        ; !DEBUG on v2.0b4
+!ifndef RELEASE
+!ifndef DEBUG
 Name "OpenAFS ${AFS_VERSION} ${__DATE__} ${__TIME__}"
-!else                ; DEBUG on v2.0b4
+!else
 Name "OpenAFS ${AFS_VERSION} ${__DATE__} ${__TIME__} Checked/Debug"
 !endif               ; End DEBUG/!DEBUG
+!else
+!ifndef DEBUG
+Name "OpenAFS ${AFS_VERSION}"
+!else                ; DEBUG
+Name "OpenAFS ${AFS_VERSION} Checked/Debug"
+!endif               ; End DEBUG/!DEBUG
+!endif
 VIProductVersion "${AFS_VERSION}.00"
 VIAddVersionKey "ProductName" "OpenAFS"
 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-2007"
 !ifdef DEBUG
 VIAddVersionKey "PrivateBuild" "Checked/Debug"
 !endif               ; End DEBUG
-!endif               ; End v2.0b4
 
 
 !include "MUI.nsh"
@@ -45,34 +62,41 @@ VIAddVersionKey "PrivateBuild" "Checked/Debug"
 ;--------------------------------
 ;Configuration
 
+!define REPLACEDLL_NOREGISTER
+
   ;General
+!ifndef AFSIFS
 !ifndef DEBUG
   OutFile "${AFS_DESTDIR}\WinInstall\OpenAFSforWindows.exe"
 !else
   OutFile "${AFS_DESTDIR}\WinInstall\OpenAFSforWindows-DEBUG.exe"
 !endif
+!else
+!ifndef DEBUG
+  OutFile "${AFS_DESTDIR}\WinInstall\OpenAFSforWindows-IFS.exe"
+!else
+  OutFile "${AFS_DESTDIR}\WinInstall\OpenAFSforWindows-IFS-DEBUG.exe"
+!endif
+!endif
   SilentInstall normal
-  SetCompressor bzip2
-  !define MUI_ICON "..\..\client_config\afs_config.ico"
-  !ifndef v2.0b4
-  !define MUI_UNICON "${NSISDIR}\Contrib\Icons\normal-uninstall.ico"
-  !else
-  !define MUI_UNICON "..\..\client_config\afs_config.ico"
-  !endif
+  SetCompressor /solid lzma
+  !define MUI_ICON "..\..\client_config\OpenAFS.ico"
+  !define MUI_UNICON "..\..\client_config\OpenAFS.ico"
   !define AFS_COMPANY_NAME "OpenAFS"
   !define AFS_PRODUCT_NAME "OpenAFS"
   !define AFS_REGKEY_ROOT "Software\TransarcCorporation"
+  !define NID_PLUGIN_MGR  "Software\MIT\NetIDMgr\PluginManager"
   CRCCheck force
 
   ;Folder selection page
   InstallDir "$PROGRAMFILES\OpenAFS"      ; Install to shorter path
   
   ;Remember install folder
-  InstallDirRegKey HKCU "Software\TransarcCorporation" ""
+  InstallDirRegKey HKCU ${AFS_REGKEY_ROOT} ""
   
   ;Remember the installer language
   !define MUI_LANGDLL_REGISTRY_ROOT "HKCU" 
-  !define MUI_LANGDLL_REGISTRY_KEY "Software\TransarcCorporation" 
+  !define MUI_LANGDLL_REGISTRY_KEY ${AFS_REGKEY_ROOT}
   !define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language"
   
   ;Where are the files?
@@ -82,11 +106,12 @@ 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
 
-  ;!define MUI_LICENSEPAGE
+  !define MUI_LICENSEPAGE
   !define MUI_CUSTOMPAGECOMMANDS
   !define MUI_WELCOMEPAGE
   !define MUI_COMPONENTSPAGE
@@ -100,26 +125,16 @@ VIAddVersionKey "PrivateBuild" "Checked/Debug"
   !define MUI_UNCONFIRMPAGE
   
   
-!IFNDEF v2.0b4       ; v2.0b3
-  !insertmacro MUI_PAGECOMMAND_WELCOME
- ;!insertmacro MUI_PAGECOMMAND_LICENSE
-  !insertmacro MUI_PAGECOMMAND_COMPONENTS
-  !insertmacro MUI_PAGECOMMAND_DIRECTORY
-  Page custom AFSPageGetCellServDB
-  Page custom AFSPageGetCellName
-  !insertmacro MUI_PAGECOMMAND_INSTFILES
-  !insertmacro MUI_PAGECOMMAND_FINISH
-!ELSE                ; v2.0b4
   !insertmacro MUI_PAGE_WELCOME
+  !insertmacro MUI_PAGE_LICENSE "Licenses.rtf"
   !insertmacro MUI_PAGE_COMPONENTS
   !insertmacro MUI_PAGE_DIRECTORY
   Page custom AFSPageGetCellServDB
   Page custom AFSPageGetCellName
+  Page custom AFSPageConfigAFSCreds
   !insertmacro MUI_PAGE_INSTFILES
   !insertmacro MUI_PAGE_FINISH
-!ENDIF
   
-  ;LicenseData "Licenses.rtf"
 ;--------------------------------
 ;Languages
 
@@ -130,9 +145,7 @@ VIAddVersionKey "PrivateBuild" "Checked/Debug"
   !insertmacro MUI_LANGUAGE "SimpChinese"
   !insertmacro MUI_LANGUAGE "TradChinese"    
   !insertmacro MUI_LANGUAGE "Japanese"
-  !ifndef v2.0b3
   !insertmacro MUI_LANGUAGE "Korean"
-  !endif
   ;!insertmacro MUI_LANGUAGE "Italian"
   ;!insertmacro MUI_LANGUAGE "Dutch"
   ;!insertmacro MUI_LANGUAGE "Danish"
@@ -162,9 +175,7 @@ VIAddVersionKey "PrivateBuild" "Checked/Debug"
   LangString DESC_SecCopyUI ${LANG_SIMPCHINESE} "OpenAFS for Windows: Simplified Chinese"
   LangString DESC_SecCopyUI ${LANG_TRADCHINESE} "OpenAFS for Windows: Traditional Chinese description"
   LangString DESC_SecCopyUI ${LANG_JAPANESE} "OpenAFS for Windows: Japanese description"
-!ifndef v2.0b3
   LangString DESC_SecCopyUI ${LANG_KOREAN} "OpenAFS for Windows: Korean description"
-!endif
   ;LangString DESC_SecCopyUI ${LANG_ITALIAN} "OpenAFS for Windows: Italian description"
   ;LangString DESC_SecCopyUI ${LANG_DUTCH} "OpenAFS for Windows: Dutch description"
   ;LangString DESC_SecCopyUI ${LANG_DANISH} "OpenAFS for Windows: Danish description"
@@ -189,20 +200,25 @@ VIAddVersionKey "PrivateBuild" "Checked/Debug"
   LangString DESC_secClient ${LANG_SIMPCHINESE} "OpenAFS Client: Allows you to access AFS from your Windows PC."
   LangString DESC_secClient ${LANG_TRADCHINESE} "OpenAFS Client: Allows you to access AFS from your Windows PC."
   LangString DESC_secClient ${LANG_JAPANESE} "OpenAFS Client: Allows you to access AFS from your Windows PC."
-!ifndef v2.0b3  
   LangString DESC_secClient ${LANG_KOREAN} "OpenAFS Client: Allows you to access AFS from your Windows PC."
-!endif
   LangString DESC_secClient ${LANG_PORTUGUESEBR} "OpenAFS Client: Allows you to access AFS from your Windows PC."
   
+  LangString DESC_secLoopback ${LANG_ENGLISH} "MS Loopback adapter: Installs the adapter for a more reliable AFS client."
+  LangString DESC_secLoopback ${LANG_GERMAN} "MS Loopback adapter: Installs the adapter for a more reliable AFS client."
+  LangString DESC_secLoopback ${LANG_SPANISH} "MS Loopback adapter: Installs the adapter for a more reliable AFS client."
+  LangString DESC_secLoopback ${LANG_SIMPCHINESE} "MS Loopback adapter: Installs the adapter for a more reliable AFS client."
+  LangString DESC_secLoopback ${LANG_TRADCHINESE} "MS Loopback adapter: Installs the adapter for a more reliable AFS client."
+  LangString DESC_secLoopback ${LANG_JAPANESE} "MS Loopback adapter: Installs the adapter for a more reliable AFS client."
+  LangString DESC_secLoopback ${LANG_KOREAN} "MS Loopback adapter: Installs the adapter for a more reliable AFS client."
+  LangString DESC_secLoopback ${LANG_PORTUGUESEBR} "MS Loopback adapter: Installs the adapter for a more reliable AFS client."
+
   LangString DESC_secServer ${LANG_ENGLISH} "OpenAFS Server: Allows you to run an AFS file server. This option requires the AFS Client."
   LangString DESC_secServer ${LANG_GERMAN} "OpenAFS Server: Allows you to run an AFS file server. This option requires the AFS Client."
   LangString DESC_secServer ${LANG_SPANISH} "OpenAFS Server: Allows you to run an AFS file server. This option requires the AFS Client."
   LangString DESC_secServer ${LANG_SIMPCHINESE} "OpenAFS Server: Allows you to run an AFS file server. This option requires the AFS Client."
   LangString DESC_secServer ${LANG_TRADCHINESE} "OpenAFS Server: Allows you to run an AFS file server. This option requires the AFS Client."
   LangString DESC_secServer ${LANG_JAPANESE} "OpenAFS Server: Allows you to run an AFS file server. This option requires the AFS Client."
-!ifdef v2.0b4  
   LangString DESC_secServer ${LANG_KOREAN} "OpenAFS Server: Allows you to run an AFS file server. This option requires the AFS Client."
-!endif
   LangString DESC_secServer ${LANG_PORTUGUESEBR} "OpenAFS Server: Allows you to run an AFS file server. This option requires the AFS Client."
   
   LangString DESC_secControl ${LANG_ENGLISH} "Control Center: GUI utilities for managing and configuring AFS servers.  This option requires the AFS Client."
@@ -211,9 +227,7 @@ VIAddVersionKey "PrivateBuild" "Checked/Debug"
   LangString DESC_secControl ${LANG_SIMPCHINESE} "Control Center: GUI utilities for managing and configuring AFS servers.  This option requires the AFS Client."
   LangString DESC_secControl ${LANG_TRADCHINESE} "Control Center: GUI utilities for managing and configuring AFS servers.  This option requires the AFS Client."
   LangString DESC_secControl ${LANG_JAPANESE} "Control Center: GUI utilities for managing and configuring AFS servers.  This option requires the AFS Client."
-!ifndef v2.0b3  
   LangString DESC_secControl ${LANG_KOREAN} "Control Center: GUI utilities for managing and configuring AFS servers.  This option requires the AFS Client."
-!endif
   LangString DESC_secControl ${LANG_PORTUGUESEBR} "Control Center: GUI utilities for managing and configuring AFS servers.  This option requires the AFS Client."
   
   LangString DESC_secDocs ${LANG_ENGLISH} "Supplemental Documentation: Additional documentation for using OpenAFS."
@@ -222,11 +236,27 @@ VIAddVersionKey "PrivateBuild" "Checked/Debug"
   LangString DESC_secDocs ${LANG_SIMPCHINESE} "Supplemental Documentation: Additional documentation for using OpenAFS."
   LangString DESC_secDocs ${LANG_TRADCHINESE} "Supplemental Documentation: Additional documentation for using OpenAFS."
   LangString DESC_secDocs ${LANG_JAPANESE} "Supplemental Documentation: Additional documentation for using OpenAFS."
-!ifndef v2.0b3  
   LangString DESC_secDocs ${LANG_KOREAN} "Supplemental Documentation: Additional documentation for using OpenAFS."
-!endif
   LangString DESC_secDocs ${LANG_PORTUGUESEBR} "Supplemental Documentation: Additional documentation for using OpenAFS."
   
+  LangString DESC_secSDK ${LANG_ENGLISH} "SDK: Header files and libraries for developing software with OpenAFS."
+  LangString DESC_secSDK ${LANG_GERMAN} "SDK: Header files and libraries for developing software with OpenAFS."
+  LangString DESC_secSDK ${LANG_SPANISH} "SDK: Header files and libraries for developing software with OpenAFS."
+  LangString DESC_secSDK ${LANG_SIMPCHINESE} "SDK: Header files and libraries for developing software with OpenAFS."
+  LangString DESC_secSDK ${LANG_TRADCHINESE} "SDK: Header files and libraries for developing software with OpenAFS."
+  LangString DESC_secSDK ${LANG_JAPANESE} "SDK: Header files and libraries for developing software with OpenAFS."
+  LangString DESC_secSDK ${LANG_KOREAN} "SDK: Header files and libraries for developing software with OpenAFS."
+  LangString DESC_secSDK ${LANG_PORTUGUESEBR} "SDK: Header files and libraries for developing software with OpenAFS."
+  
+  LangString DESC_secDEBUG ${LANG_ENGLISH} "Debug symbols: Used for debugging problems with OpenAFS."
+  LangString DESC_secDEBUG ${LANG_GERMAN} "Debug symbols: Used for debugging problems with OpenAFS."
+  LangString DESC_secDEBUG ${LANG_SPANISH} "Debug symbols: Used for debugging problems with OpenAFS."
+  LangString DESC_secDEBUG ${LANG_SIMPCHINESE} "Debug symbols: Used for debugging problems with OpenAFS."
+  LangString DESC_secDEBUG ${LANG_TRADCHINESE} "Debug symbols: Used for debugging problems with OpenAFS."
+  LangString DESC_secDEBUG ${LANG_JAPANESE} "Debug symbols: Used for debugging problems with OpenAFS."
+  LangString DESC_secDEBUG ${LANG_KOREAN} "Debug symbols: Used for debugging problems with OpenAFS."
+  LangString DESC_secDEBUG ${LANG_PORTUGUESEBR} "Debug symbols: Used for debugging problems with OpenAFS."
+
 ; Popup error messages
   LangString CellError ${LANG_ENGLISH} "You must specify a valid CellServDB file to copy during install"
   LangString CellError ${LANG_GERMAN} "You must specify a valid CellServDB file to copy during the install"
@@ -234,9 +264,7 @@ VIAddVersionKey "PrivateBuild" "Checked/Debug"
   LangString CellError ${LANG_SIMPCHINESE} "You must specify a valid CellServDB file to copy during the install"
   LangString CellError ${LANG_TRADCHINESE} "You must specify a valid CellServDB file to copy during the install"
   LangString CellError ${LANG_JAPANESE} "You must specify a valid CellServDB file to copy during the install"
-!ifndef v2.0b3  
   LangString CellError ${LANG_KOREAN} "You must specify a valid CellServDB file to copy during the install"
-!endif
   LangString CellError ${LANG_PORTUGUESEBR} "You must specify a valid CellServDB file to copy during the install"
   
   LangString CellNameError ${LANG_ENGLISH} "You must specify a cell name for your client to use."
@@ -245,9 +273,7 @@ VIAddVersionKey "PrivateBuild" "Checked/Debug"
   LangString CellNameError ${LANG_SIMPCHINESE} "You must specify a cell name for your client to use."
   LangString CellNameError ${LANG_TRADCHINESE} "You must specify a cell name for your client to use."
   LangString CellNameError ${LANG_JAPANESE} "You must specify a cell name for your client to use."
-!ifndef v2.0b3
   LangString CellNameError ${LANG_KOREAN} "You must specify a cell name for your client to use."
-!endif
   LangString CellNameError ${LANG_PORTUGUESEBR} "You must specify a cell name for your client to use."
   
   LangString URLError ${LANG_ENGLISH} "You must specify a URL if you choose the option to download the CellServDB."
@@ -256,9 +282,7 @@ VIAddVersionKey "PrivateBuild" "Checked/Debug"
   LangString URLError ${LANG_SIMPCHINESE} "You must specify a URL if you choose the option to download the CellServDB."
   LangString URLError ${LANG_TRADCHINESE} "You must specify a URL if you choose the option to download the CellServDB."
   LangString URLError ${LANG_JAPANESE} "You must specify a URL if you choose the option to download the CellServDB."
-!ifndef v2.0b3
   LangString URLError ${LANG_KOREAN} "You must specify a URL if you choose the option to download the CellServDB."
-!endif
   LangString URLError ${LANG_PORTUGUESEBR} "You must specify a URL if you choose the option to download the CellServDB."
 
   
@@ -269,9 +293,7 @@ VIAddVersionKey "PrivateBuild" "Checked/Debug"
    LangString UPGRADE_CLIENT ${LANG_SIMPCHINESE} "Upgrade AFS Client"
    LangString UPGRADE_CLIENT ${LANG_TRADCHINESE} "Upgrade AFS Client"
    LangString UPGRADE_CLIENT ${LANG_JAPANESE} "Upgrade AFS Client"
-!ifndef v2.0b3
    LangString UPGRADE_CLIENT ${LANG_KOREAN} "Upgrade AFS Client"
-!endif
    LangString UPGRADE_CLIENT ${LANG_PORTUGUESEBR} "Upgrade AFS Client"
  
    LangString REINSTALL_CLIENT ${LANG_ENGLISH} "Re-install AFS Client"
@@ -280,9 +302,7 @@ VIAddVersionKey "PrivateBuild" "Checked/Debug"
    LangString REINSTALL_CLIENT ${LANG_SIMPCHINESE} "Re-install AFS Client"
    LangString REINSTALL_CLIENT ${LANG_TRADCHINESE} "Re-install AFS Client"
    LangString REINSTALL_CLIENT ${LANG_JAPANESE} "Re-install AFS Client"
-!ifndef v2.0b3
    LangString REINSTALL_CLIENT ${LANG_KOREAN} "Re-install AFS Client"
-!endif
    LangString REINSTALL_CLIENT ${LANG_PORTUGUESEBR} "Re-install AFS Client"
   
    LangString UPGRADE_SERVER ${LANG_ENGLISH} "Upgrade AFS Server"
@@ -291,9 +311,7 @@ VIAddVersionKey "PrivateBuild" "Checked/Debug"
    LangString UPGRADE_SERVER ${LANG_SIMPCHINESE} "Upgrade AFS Server"
    LangString UPGRADE_SERVER ${LANG_TRADCHINESE} "Upgrade AFS Server"
    LangString UPGRADE_SERVER ${LANG_JAPANESE} "Upgrade AFS Server"
-!ifndef v2.0b3
    LangString UPGRADE_SERVER ${LANG_KOREAN} "Upgrade AFS Server"
-!endif
    LangString UPGRADE_SERVER ${LANG_PORTUGUESEBR} "Upgrade AFS Server"
     
    LangString REINSTALL_SERVER ${LANG_ENGLISH} "Re-install AFS Server"
@@ -302,132 +320,165 @@ VIAddVersionKey "PrivateBuild" "Checked/Debug"
    LangString REINSTALL_SERVER ${LANG_SIMPCHINESE} "Re-install AFS Server"
    LangString REINSTALL_SERVER ${LANG_TRADCHINESE} "Re-install AFS Server"
    LangString REINSTALL_SERVER ${LANG_JAPANESE} "Re-install AFS Server"
-!ifndef v2.0b3   
    LangString REINSTALL_SERVER ${LANG_KOREAN} "Re-install AFS Server"
-!endif
    LangString REINSTALL_SERVER ${LANG_PORTUGUESEBR} "Re-install AFS Server"
   
   ReserveFile "CellServPage.ini"
   ReserveFile "AFSCell.ini"
   !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS ;InstallOptions plug-in
   !insertmacro MUI_RESERVEFILE_LANGDLL ;Language selection dialog
+
+  RequestExecutionLevel admin
+
 ;--------------------------------
 ; Macros
 ; Macro - Upgrade DLL File
- ; Written by Joost Verburg
- ; ------------------------
- ;
- ; Example of usage:
- ; !insertmacro UpgradeDLL "dllname.dll" "$SYSDIR\dllname.dll"
- ;
- ; !define UPGRADEDLL_NOREGISTER if you want to upgrade a DLL which cannot be registered
- ;
- ; Note that this macro sets overwrite to ON (the default) when it has been inserted.
- ; If you are using another setting, set it again after inserting the macro.
+; Written by Joost Verburg
+; ------------------------
+;
+; Parameters:
+; LOCALFILE   - Location of the new DLL file (on the compiler system)
+; DESTFILE    - Location of the DLL file that should be upgraded
+;              (on the user's system)
+; TEMPBASEDIR - Directory on the user's system to store a temporary file
+;               when the system has to be rebooted.
+;               For Win9x support, this should be on the same volume as the
+;               DESTFILE!
+;               The Windows temp directory could be located on any volume,
+;               so you cannot use  this directory.
+;
+; 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 ReplaceDLL "dllname.dll" "$SYSDIR\dllname.dll" "$SYSDIR"
+;
 
+!macro ReplaceDLL LOCALFILE DESTFILE TEMPBASEDIR
 
- !macro UpgradeDLL LOCALFILE DESTFILE
+  Push $R0
+  Push $R1
+  Push $R2
+  Push $R3
+  Push $R4
+  Push $R5
 
-   Push $R0
-   Push $R1
-   Push $R2
-   Push $R3
+  ;------------------------
+  ;Unique number for labels
 
-   ;------------------------
-   ;Check file and version
+  !define REPLACEDLL_UNIQUE ${__LINE__}
 
-   IfFileExists "${DESTFILE}" "" "copy_${LOCALFILE}"
+  ;------------------------
+  ;Copy the parameters used on run-time to a variable
+  ;This allows the usage of variables as paramter
 
-   ClearErrors
-     GetDLLVersionLocal "${LOCALFILE}" $R0 $R1
-     GetDLLVersion "${DESTFILE}" $R2 $R3
-   IfErrors "upgrade_${LOCALFILE}"
+  StrCpy $R4 "${DESTFILE}"
+  StrCpy $R5 "${TEMPBASEDIR}"
 
-   IntCmpU $R0 $R2 "" "done_${LOCALFILE}" "upgrade_${LOCALFILE}"
-   IntCmpU $R1 $R3 "done_${LOCALFILE}" "done_${LOCALFILE}" "upgrade_${LOCALFILE}"
+  ;------------------------
+  ;Check file and version
+  ;
+  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
+  SetOverwrite try
 
-   "upgrade_${LOCALFILE}:"
-     !ifndef UPGRADEDLL_NOREGISTER
-       ;Unregister the DLL
-       UnRegDLL "${DESTFILE}"
-     !endif
+  ;replacedll.upgrade_${REPLACEDLL_UNIQUE}:
+    !ifndef REPLACEDLL_NOREGISTER
+      ;Unregister the DLL
+      UnRegDLL $R4
+    !endif
 
-   ;------------------------
-   ;Try to copy the DLL directly
+  ;------------------------
+  ;Try to copy the DLL directly
 
-   ClearErrors
-     StrCpy $R0 "${DESTFILE}"
-     Call ":file_${LOCALFILE}"
-   IfErrors "" "noreboot_${LOCALFILE}"
+  ClearErrors
+    StrCpy $R0 $R4
+    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.
+  ;------------------------
+  ;DLL is in use. Copy it to a temp file and Rename it on reboot.
 
-   GetTempFileName $R0
-     Call ":file_${LOCALFILE}"
-   Rename /REBOOTOK $R0 "${DESTFILE}"
+  GetTempFileName $R0 $R5
+    Call :replacedll.file_${REPLACEDLL_UNIQUE}
+  Rename /REBOOTOK $R0 $R4
 
-   ;------------------------
-   ;Register the DLL on reboot
+  ;------------------------
+  ;Register the DLL on reboot
 
-   !ifndef UPGRADEDLL_NOREGISTER
-     WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\RunOnce" \
-     "Register ${DESTFILE}" '"$SYSDIR\rundll32.exe" "${DESTFILE},DllRegisterServer"'
-   !endif
+  !ifndef REPLACEDLL_NOREGISTER
+    WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\RunOnce" \
+      "Register $R4" 'rundll32.exe "$R4",DllRegisterServer'
+  !endif
 
-   Goto "done_${LOCALFILE}"
+  Goto replacedll.done_${REPLACEDLL_UNIQUE}
 
-   ;------------------------
-   ;DLL does not exist - just extract
+  ;------------------------
+  ;DLL does not exist - just extract
 
-   "copy_${LOCALFILE}:"
-     StrCpy $R0 "${DESTFILE}"
-     Call ":file_${LOCALFILE}"
+  replacedll.copy_${REPLACEDLL_UNIQUE}:
+    StrCpy $R0 $R4
+    Call :replacedll.file_${REPLACEDLL_UNIQUE}
 
-   ;------------------------
-   ;Register the DLL
+  ;------------------------
+  ;Register the DLL
 
-   "noreboot_${LOCALFILE}:"
-     !ifndef UPGRADEDLL_NOREGISTER
-       RegDLL "${DESTFILE}"
-     !endif
+  replacedll.noreboot_${REPLACEDLL_UNIQUE}:
+    !ifndef REPLACEDLL_NOREGISTER
+      RegDLL $R4
+    !endif
 
-   ;------------------------
-   ;Done
+  ;------------------------
+  ;Done
 
-   "done_${LOCALFILE}:"
+  replacedll.done_${REPLACEDLL_UNIQUE}:
 
-   Pop $R3
-   Pop $R2
-   Pop $R1
-   Pop $R0
+  Pop $R5
+  Pop $R4
+  Pop $R3
+  Pop $R2
+  Pop $R1
+  Pop $R0
 
-   ;------------------------
-   ;End
+  ;------------------------
+  ;End
 
-   Goto "end_${LOCALFILE}"
+  Goto replacedll.end_${REPLACEDLL_UNIQUE}
 
-   ;------------------------
-   ;Called to extract the DLL
+  ;------------------------
+  ;Called to extract the DLL
 
-   "file_${LOCALFILE}:"
-     File /oname=$R0 "${LOCALFILE}"
-     Return
+  replacedll.file_${REPLACEDLL_UNIQUE}:
+    File /oname=$R0 "${LOCALFILE}"
+    Return
 
-   "end_${LOCALFILE}:"
+  replacedll.end_${REPLACEDLL_UNIQUE}:
 
-  ;------------------------
-  ;Set overwrite to default
-  ;(was set to TRY above)
+ ;------------------------
+ ;Restore settings
 
-  SetOverwrite on
+ SetOverwrite lastused
+ !undef REPLACEDLL_UNIQUE
 
- !macroend
+!macroend
 
 
 ;--------------------------------
@@ -437,43 +488,75 @@ 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
+var REG_DATA_4
+
 
 ;--------------------------------
 ;Installer Sections
 
 ;----------------------
 ; OpenAFS CLIENT
-Section "AFS Client" secClient
+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 afscreds.exe'
+  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'
+!IFDEF INSTALL_KFW
   ;nsExec::Exec '$R0 krbcc32s.exe'
+!ENDIF
 
   nsExec::Exec "net stop TransarcAFSDaemon"
   nsExec::Exec "net stop TransarcAFSServer"
   
+  ; Install the Microsoft IDNM Redistributable
+  Call GetWindowsVersion
+  Pop $R1
+  StrCmp $R1 "XP" installIDN +1
+  StrCmp $R1 "2003" installIDN skipIDN
+  installIDN:
+  GetTempFileName $R0
+  File /oname=$R0 "${IDNMREDIST}"
+  nsExec::Exec '$R0 /quiet /norestart'
+  skipIDN:  
+
    ; Do client components
   SetOutPath "$INSTDIR\Client\Program"
   File "${AFS_CLIENT_BUILDDIR}\afsshare.exe"
-  File "${AFS_BUILD_INCDIR}\afs\cm_config.h"
-  File "${AFS_CLIENT_BUILDDIR}\libosi.dll"
-  File "${AFS_BUILD_INCDIR}\afs\kautils.h"
-  File "${AFS_CLIENT_BUILDDIR}\libafsconf.dll"
+  !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_LIBDIR}\libafsconf.lib"
-  File "${AFS_CLIENT_LIBDIR}\afsauthent.lib"
-  File "${AFS_CLIENT_BUILDDIR}\afscreds.exe"
-  File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext.dll"
-  File "${AFS_BUILD_INCDIR}\afs\auth.h"
-  File "${AFS_CLIENT_BUILDDIR}\afsd_service.exe"
-  File "${AFS_CLIENT_BUILDDIR}\afslogon.dll"
+  File "${AFS_CLIENT_BUILDDIR}\afsdacl.exe"
+  File "${AFS_CLIENT_BUILDDIR}\cmdebug.exe"
+  File "${AFS_CLIENT_BUILDDIR}\aklog.exe"
+  !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afscreds.exe"           "$INSTDIR\Client\Program\afscreds.exe"    "$INSTDIR"
+  !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_shl_ext.dll" "$INSTDIR\Client\Program\afs_shl_ext.dll" "$INSTDIR"
+  !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afsd_service.exe" "$INSTDIR\Client\Program\afsd_service.exe" "$INSTDIR"
   File "${AFS_CLIENT_BUILDDIR}\symlink.exe"
   File "${AFS_DESTDIR}\bin\kpasswd.exe"
   File "${AFS_SERVER_BUILDDIR}\pts.exe"
@@ -484,202 +567,31 @@ Section "AFS Client" secClient
   File "${AFS_DESTDIR}\bin\translate_et.exe"
   File "${AFS_DESTDIR}\etc\rxdebug.exe"
   File "${AFS_DESTDIR}\etc\backup.exe"
+  !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_cpa.cpl" "$INSTDIR\Client\Program\afs_cpa.cpl" "$INSTDIR"
+  !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afscred.dll" "$INSTDIR\Client\Program\afscred.dll" "$INSTDIR"
+  !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afscred_en_us.dll" "$INSTDIR\Client\Program\afscred_en_us.dll" "$INSTDIR"
+  File "${AFS_CLIENT_BUILDDIR}\afsplhlp.chm"
   
-!ifdef DEBUG
-  File "${AFS_CLIENT_BUILDDIR}\afsshare.pdb"
-  File "${AFS_CLIENT_BUILDDIR}\libosi.pdb"
-  File "${AFS_CLIENT_BUILDDIR}\libafsconf.pdb"
-  File "${AFS_CLIENT_BUILDDIR}\klog.pdb"
-  File "${AFS_CLIENT_BUILDDIR}\tokens.pdb"
-  File "${AFS_CLIENT_BUILDDIR}\unlog.pdb"
-  File "${AFS_CLIENT_BUILDDIR}\fs.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_SERVER_BUILDDIR}\bos.pdb"
-  File "${AFS_SERVER_BUILDDIR}\kas.pdb"
-  File "${AFS_SERVER_BUILDDIR}\vos.pdb"
-  File "${AFS_SERVER_BUILDDIR}\udebug.pdb"
-  File "${AFS_DESTDIR}\bin\translate_et.pdb"
-  File "${AFS_DESTDIR}\etc\rxdebug.pdb"
-  File "${AFS_DESTDIR}\etc\backup.pdb"
-!endif
-
-  ; 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"
-   
-   
+  !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afslogon.dll" "$INSTDIR\Client\Program\afslogon.dll" "$INSTDIR"
+  File "${AFS_CLIENT_BUILDDIR}\afscpcc.exe"
 
-   ; Client Sample
-   SetOutPath "$INSTDIR\Client\Program\Sample"
-   File "..\..\afsd\sample\token.c"
+!ifdef AFSIFS
+  SetOutPath "$SYSDIR"
+!ifndef DEBUG
+  !insertmacro ReplaceDLL "..\..\afsrdr\objfre_w2K_x86\i386\afsrdr.sys" "$SYSDIR\DRIVERS\afsrdr.sys" "$INSTDIR"
+!else
+  !insertmacro ReplaceDLL "..\..\afsrdr\objchk_w2K_x86\i386\afsrdr.sys" "$SYSDIR\DRIVERS\afsrdr.sys" "$INSTDIR"
+!endif
+!endif
    
    Call AFSLangFiles
-   
 
-   
-  ; Do WINDOWSDIR components
-  
-  ; Do Windows SYSDIR (Control panel)
-  SetOutPath "$SYSDIR"
-  File "${AFS_CLIENT_BUILDDIR}\afs_cpa.cpl"
-!ifdef DEBUG
-  File "${AFS_CLIENT_BUILDDIR}\afs_cpa.pdb"
-!endif
-  
   ; Get AFS CellServDB file
   Call afs.GetCellServDB
-!ifdef INSTALL_LOOPBACK
-  Call afs.InstallMSLoopback
-!endif
+
+  GetTempFileName $R0
+  File /oname=$R0 "${AFS_WININSTALL_DIR}\AdminGroup.exe"
+  nsExec::Exec '$R0 -create'
 
 !ifdef INSTALL_KFW
   ; Include Kerberos for Windows files in the installer...
@@ -700,13 +612,18 @@ Section "AFS Client" secClient
   WriteRegStr HKCR "CLSID\{DC515C27-6CAC-11D1-BAE7-00C04FD140D2}\InprocServer32" "ThreadingModel" "Apartment"
   WriteRegStr HKCR "FOLDER\shellex\ContextMenuHandlers\AFS Client Shell Extension" "" "{DC515C27-6CAC-11D1-BAE7-00C04FD140D2}"
   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved" "{DC515C27-6CAC-11D1-BAE7-00C04FD140D2}" "AFS Client Shell Extension"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Control Panel\Cpls" "afs_cpa" "$INSTDIR\Client\Program\afs_cpa.cpl"
+
+  ; Support for apps that wrote submount data directly to afsdsbmt.ini
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\IniFileMapping\afsdsbmt.ini" "AFS Mappings" "USR:Software\OpenAFS\Client\mappings"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\IniFileMapping\afsdsbmt.ini" "AFS Submounts" "SYS:OpenAFS\Client\Submounts"
   
   ; AFS Reg entries
   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion"
   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}
@@ -727,81 +644,209 @@ Section "AFS Client" secClient
    DeleteRegValue HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "Debug"
    DeleteRegValue HKLM "${AFS_REGKEY_ROOT}\AFS Client\${AFS_VERSION}" "Debug"
 !endif
-   ; Set network settings
-  WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\NetBT\Parameters" "SmbDeviceEnabled" 0
+
+  ;NetIDMgr Plug-in Reg Entries
+  WriteRegStr HKLM "${NID_PLUGIN_MGR}\Modules\OpenAFS" "ImagePath" "$INSTDIR\Client\Program\afscred.dll"
+  WriteRegStr HKLM "${NID_PLUGIN_MGR}\Modules\OpenAFS" "Description" "OpenAFS Module"
+  WriteRegStr HKLM "${NID_PLUGIN_MGR}\Modules\OpenAFS" "Vendor" "Secure Endpoints Inc."
+  WriteRegStr HKLM "${NID_PLUGIN_MGR}\Modules\OpenAFS" "PluginList" "AfsCred"
+  WriteRegDWORD HKLM "${NID_PLUGIN_MGR}\Modules\OpenAFS" "NoUnload" "1"
+  
+  WriteRegStr HKLM "${NID_PLUGIN_MGR}\Plugins\AfsCred" "Module" "OpenAFS"
+  WriteRegStr HKLM "${NID_PLUGIN_MGR}\Plugins\AfsCred" "Description" "AFS Credentials Provider"
+  WriteRegStr HKLM "${NID_PLUGIN_MGR}\Plugins\AfsCred" "Dependencies" "Krb5Cred"
+  WriteRegDWORD HKLM "${NID_PLUGIN_MGR}\Plugins\AfsCred" "Type" "1"
+
+   ; On Windows 2000 work around KB301673.  This is fixed in Windows XP and 2003
+   Call GetWindowsVersion
+   Pop $R1
+   StrCmp $R1 "2000" +1 +2
+   WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\NetBT\Parameters" "SmbDeviceEnabled" 0
   
   ;Write start menu entries
   CreateDirectory "$SMPROGRAMS\OpenAFS\Client"
   CreateShortCut "$SMPROGRAMS\OpenAFS\Uninstall OpenAFS.lnk" "$INSTDIR\Uninstall.exe"
-  CreateShortCut "$SMPROGRAMS\OpenAFS\Client\Authentication.lnk" "$INSTDIR\Client\Program\afscreds.exe" 
-  CreateShortCut "$SMSTARTUP\AFS Credentials.lnk" "$INSTDIR\Client\Program\afscreds.exe" 
+  
+  ; Create command line options for AFSCreds...
+  StrCpy $R2 ""
+  ReadINIStr $R1 $2 "Field 3" "State"
+  StrCmp $R1 "1" +1 +2
+  StrCpy $R2 "-A "
+  ReadINIStr $R1 $2 "Field 5" "State"
+  StrCmp $R1 "1" +1 +2
+  StrCpy $R2 "$R2-M "
+  ReadINIStr $R1 $2 "Field 7" "State"
+  StrCmp $R1 "1" +1 +2
+  StrCpy $R2 "$R2-N "
+  ReadINIStr $R1 $2 "Field 9" "State"
+  StrCmp $R1 "1" +1 +2
+  StrCpy $R2 "$R2-Q "
+  ReadINIStr $R1 $2 "Field 13" "State"
+  StrCmp $R1 "1" +1 +2
+  StrCpy $R2 "$R2-S"
+  WriteRegStr HKLM "SOFTWARE\OpenAFS\Client" "AfscredsShortcutParams" "$R2"
+  
+  CreateShortCut "$SMPROGRAMS\OpenAFS\Client\Authentication.lnk" "$INSTDIR\Client\Program\afscreds.exe" "$R2"
+  
+  ReadINIStr $R1 $2 "Field 1" "State"
+  StrCmp $R1 "1" +1 +2
+  CreateShortCut "$SMSTARTUP\AFS Credentials.lnk" "$INSTDIR\Client\Program\afscreds.exe" "$R2"
 
   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
   SetOutPath "$INSTDIR\Common"
   File "${AFS_WININSTALL_DIR}\Service.exe"
   nsExec::Exec "net stop TransarcAFSDaemon"
+  nsExec::Exec "net stop AfsRdr"
   ;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"'
+  nsExec::Exec '$INSTDIR\Common\Service.exe u AfsRdr'
+!ifdef AFSIFS
+  nsExec::Exec '$INSTDIR\Common\Service.exe AfsRdr "System32\DRIVERS\afsrdr.sys" "AFS Redirector"'
+!endif
 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"
   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"
+  WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider" "LogonOptions" $R0
+  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" 0
+  ReadINIStr $R0 $1 "Field 9" "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" 0
+  WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters" "IsGateway" 0
+  WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters" "HideDotFiles" 1
+
+  ; 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
+
+  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  ""
+  strcpy $REG_DATA_4  ""
+  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"
+!ifdef AFSIFS
+  strcpy $REG_DATA_4  "AfsRdr"
+!else
+  strcpy $REG_DATA_4  ""
+!endif
+  Call RegWriteMultiStr
+!ifdef AFSIFS
+  strcpy $REG_SUB_KEY "SYSTEM\CurrentControlSet\Services\AfsRdr" 
+  strcpy $REG_VALUE   "DependOnService" 
+  strcpy $REG_DATA_1  "Tcpip"
+  strcpy $REG_DATA_2  ""
+  strcpy $REG_DATA_3  ""
+  strcpy $REG_DATA_4  ""
+  Call RegWriteMultiStr
+!endif
+
+  ; WinLogon Event Notification
+  WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\WinLogon\Notify\AfsLogon" "Asynchronous" 0
+  WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\WinLogon\Notify\AfsLogon" "Impersonate"  1
+  WriteRegStr HKLM "Software\Microsoft\Windows NT\CurrentVersion\WinLogon\Notify\AfsLogon" "DLLName" "afslogon.dll"
+  WriteRegStr HKLM "Software\Microsoft\Windows NT\CurrentVersion\WinLogon\Notify\AfsLogon" "Logon" "AFS_Logon_Event"
+  WriteRegStr HKLM "Software\Microsoft\Windows NT\CurrentVersion\WinLogon\Notify\AfsLogon" "Logoff" "AFS_Logoff_Event"
+  WriteRegStr HKLM "Software\Microsoft\Windows NT\CurrentVersion\WinLogon\Notify\AfsLogon" "Startup" "AFS_Startup_Event"
+
+; No longer install KFW Logon Handler - KFW 3.1 and above supports this functionality
+;  WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\WinLogon\Notify\KFWLogon" "Asynchronous" 0
+;  WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\WinLogon\Notify\KFWLogon" "Impersonate"  0
+;  WriteRegStr HKLM "Software\Microsoft\Windows NT\CurrentVersion\WinLogon\Notify\KFWLogon" "DLLName" "afslogon.dll"
+;  WriteRegStr HKLM "Software\Microsoft\Windows NT\CurrentVersion\WinLogon\Notify\KFWLogon" "Logon" "KFW_Logon_Event"
+
   SetRebootFlag true
   
   WriteUninstaller "$INSTDIR\Uninstall.exe"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenAFS" "DisplayIcon" "$INSTDIR\Uninstall.exe,0"  
+  Call CreateDesktopIni
   
 SectionEnd
 
+
+
+; MS Loopback adapter
+Section "!MS Loopback Adapter" secLoopback
+
+Call afs.InstallMSLoopback
+
+SectionEnd
+
+
 ;------------------------
 ; OpenAFS SERVER  
-Section "AFS Server" secServer
+Section /o "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
-  ;nsExec::Exec '$R0 afscreds.exe'
+  GetTempFileName $R0
+  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'
+!IFDEF INSTALL_KFW
   ;nsExec::Exec '$R0 krbcc32s.exe'
+!ENDIF
 
+  Delete $R0
+  
   nsExec::Exec "net stop TransarcAFSDaemon"
   nsExec::Exec "net stop TransarcAFSServer"
 
@@ -812,6 +857,7 @@ Section "AFS Server" secServer
   SetOutPath "$INSTDIR\Server\usr\afs\bin"  
   File "${AFS_SERVER_BUILDDIR}\afskill.exe"
   File "${AFS_SERVER_BUILDDIR}\afssvrcfg.exe"
+  File "${AFS_SERVER_BUILDDIR}\asetkey.exe"
   File "${AFS_SERVER_BUILDDIR}\bosctlsvc.exe"
   File "${AFS_SERVER_BUILDDIR}\bosserver.exe"
   File "${AFS_SERVER_BUILDDIR}\buserver.exe"
@@ -826,25 +872,6 @@ Section "AFS Server" secServer
   File "${AFS_SERVER_BUILDDIR}\vlserver.exe"
   File "${AFS_SERVER_BUILDDIR}\volinfo.exe"
   File "${AFS_SERVER_BUILDDIR}\volserver.exe"
-
-!ifdef DEBUG
-  File "${AFS_SERVER_BUILDDIR}\afskill.pdb"
-  File "${AFS_SERVER_BUILDDIR}\afssvrcfg.pdb"
-  File "${AFS_SERVER_BUILDDIR}\bosctlsvc.pdb"
-  File "${AFS_SERVER_BUILDDIR}\bosserver.pdb"
-  File "${AFS_SERVER_BUILDDIR}\buserver.pdb"
-  File "${AFS_ETC_BUILDDIR}\butc.pdb"
-  File "${AFS_SERVER_BUILDDIR}\fileserver.pdb"
-  File "${AFS_ETC_BUILDDIR}\fms.pdb"
-  File "${AFS_SERVER_BUILDDIR}\kaserver.pdb"
-  File "${AFS_SERVER_BUILDDIR}\ptserver.pdb"
-  File "${AFS_SERVER_BUILDDIR}\salvager.pdb"
-  File "${AFS_SERVER_BUILDDIR}\upclient.pdb"
-  File "${AFS_SERVER_BUILDDIR}\upserver.pdb"
-  File "${AFS_SERVER_BUILDDIR}\vlserver.pdb"
-  File "${AFS_SERVER_BUILDDIR}\volinfo.pdb"
-  File "${AFS_SERVER_BUILDDIR}\volserver.pdb"
-!endif
  
  ;AFS Server common files
  SetOutPath "$INSTDIR\Common"
@@ -854,22 +881,11 @@ Section "AFS Server" secServer
  File "${AFS_SERVER_BUILDDIR}\afskasadmin.dll"
  File "${AFS_SERVER_BUILDDIR}\afsptsadmin.dll"
 
-!ifdef DEBUG
- File "${AFS_SERVER_BUILDDIR}\afsvosadmin.pdb"
- File "${AFS_SERVER_BUILDDIR}\afsbosadmin.pdb"
- File "${AFS_SERVER_BUILDDIR}\afscfgadmin.pdb"
- File "${AFS_SERVER_BUILDDIR}\afskasadmin.pdb"
- File "${AFS_SERVER_BUILDDIR}\afsptsadmin.pdb"
-!endif
  SetOutPath "$INSTDIR\Common"
    Call AFSLangFiles
    
    SetOutPath "$SYSDIR"
-   File "${AFS_SERVER_BUILDDIR}\afsserver.cpl"
-
-!ifdef DEBUG
-   File "${AFS_SERVER_BUILDDIR}\afsserver.pdb"
-!endif
+  !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afsserver.cpl" "$SYSDIR\afsserver.cpl" "$INSTDIR"
    
   ;Store install folder
   WriteRegStr HKCU "${AFS_REGKEY_ROOT}\AFS Server" "" $INSTDIR
@@ -905,25 +921,51 @@ 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"'
   Delete "$INSTDIR\Common\service.exe"
-  
-  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"'
+
+  strcpy $REG_SUB_KEY "SYSTEM\CurrentControlSet\Services\TransarcAFSServer" 
+  strcpy $REG_VALUE   "DependOnGroup" 
+  strcpy $REG_DATA_1  "PNP_TDI"
+  strcpy $REG_DATA_2  ""
+  strcpy $REG_DATA_3  ""
+  strcpy $REG_DATA_4  ""
+  Call RegWriteMultiStr
+  strcpy $REG_SUB_KEY "SYSTEM\CurrentControlSet\Services\TransarcAFSServer" 
+  strcpy $REG_VALUE   "DependOnService" 
+  strcpy $REG_DATA_1  "Tcpip"
+  strcpy $REG_DATA_2  ""
+  strcpy $REG_DATA_3  ""
+  strcpy $REG_DATA_4  ""
+  Call RegWriteMultiStr
+  
+  ;CreateDirectory "$SMPROGRAMS\OpenAFS\Server"
+  ;CreateShortCut "$SMPROGRAMS\OpenAFS\Server\Server Configuration.lnk" "$INSTDIR\Server\usr\afs\bin\afssvrcfg.exe"
   
   WriteUninstaller "$INSTDIR\Uninstall.exe"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenAFS" "DisplayIcon" "$INSTDIR\Uninstall.exe,0"  
 
 SectionEnd
 
 
 ;----------------------------
 ; OpenAFS Control Center
-Section "AFS Control Center" secControl
+Section /o "AFS Control Center" secControl
 
   SetShellVarContext all
 
@@ -932,43 +974,12 @@ Section "AFS Control Center" secControl
   File "${AFS_SERVER_BUILDDIR}\TaAfsAdmSvr.exe"
   File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager.exe"
    
-!ifdef DEBUG
-  File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager.pdb"
-  File "${AFS_SERVER_BUILDDIR}\TaAfsAdmSvr.pdb"
-  File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager.pdb"
-!endif
 
  ;AFS Server common files
  Call AFSCommon.Install
  Call AFSLangFiles
  SetOutPath "$INSTDIR\Common"
 
-  SetOutPath "$INSTDIR\Common"
-!IFDEF DEBUG
-!IFDEF CL_1310
-  File "${AFS_WININSTALL_DIR}\msvcr71d.dll"
-  File "${AFS_WININSTALL_DIR}\msvcr71d.pdb"
-!ELSE
-!IFDEF CL_1300
-  File "${AFS_WININSTALL_DIR}\msvcrtd.dll"
-  File "${AFS_WININSTALL_DIR}\msvcrtd.pdb"
-!ELSE
-  File "${AFS_WININSTALL_DIR}\msvcrtd.dll"
-  File "${AFS_WININSTALL_DIR}\msvcrtd.pdb"
-!ENDIF
-!ENDIF
-!ELSE
-!IFDEF CL_1310
-  File "${AFS_WININSTALL_DIR}\msvcr71.dll"
-!ELSE
-!IFDEF CL_1300
-  File "${AFS_WININSTALL_DIR}\msvcrt.dll"
-!ELSE
-  File "${AFS_WININSTALL_DIR}\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}
@@ -994,141 +1005,98 @@ Section "AFS Control Center" secControl
   CreateShortCut "$SMPROGRAMS\OpenAFS\Control Center\Server Manager.lnk" "$INSTDIR\Control Center\TaAfsServerManager.exe"
   
   WriteUninstaller "$INSTDIR\Uninstall.exe"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenAFS" "DisplayIcon" "$INSTDIR\Uninstall.exe,0"  
 
 SectionEnd   
 
 
 ;----------------------------
 ; OpenAFS Supplemental Documentation
-Section "Supplemental Documentation" secDocs
+Section /o "Supplemental Documentation" secDocs
   SetShellVarContext all
 
    StrCmp $LANGUAGE ${LANG_ENGLISH} DoEnglish
    StrCmp $LANGUAGE ${LANG_GERMAN} DoGerman
    StrCmp $LANGUAGE ${LANG_SPANISH} DoSpanish
    StrCmp $LANGUAGE ${LANG_JAPANESE} DoJapanese
-!ifdef v2.0b4
    StrCmp $LANGUAGE ${LANG_KOREAN} DoKorean
-!endif
    StrCmp $LANGUAGE ${LANG_PORTUGUESEBR} DoPortugueseBR
    StrCmp $LANGUAGE ${LANG_SIMPCHINESE} DoSimpChinese
    StrCmp $LANGUAGE ${LANG_TRADCHINESE} DoTradChinese
    
    
 DoEnglish:
-   SetOutPath "$INSTDIR\Documentation\html"
-   File "..\..\doc\install\Documentation\en_US\html\*"
    SetOutPath "$INSTDIR\Documentation\html\CmdRef"
-   File "..\..\doc\install\Documentation\en_US\html\CmdRef\*"
-   SetOutPath "$INSTDIR\Documentation\html\InstallGd"
-   File "..\..\doc\install\Documentation\en_US\html\InstallGd\*"
-   SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
-   File "..\..\doc\install\Documentation\en_US\html\ReleaseNotes\*"
+   File "..\..\..\..\doc\man-pages\html\*"
+   SetOutPath "$INSTDIR\Documentation\html\CmdRef\1"
+   File "..\..\..\..\doc\man-pages\html\1\*"
+   SetOutPath "$INSTDIR\Documentation\html\CmdRef\5"
+   File "..\..\..\..\doc\man-pages\html\5\*"
+   SetOutPath "$INSTDIR\Documentation\html\CmdRef\8"
+   File "..\..\..\..\doc\man-pages\html\8\*"
    SetOutPath "$INSTDIR\Documentation\html\SysAdminGd"
    File "..\..\doc\install\Documentation\en_US\html\SysAdminGd\*"
    goto DoneLanguage
    
 DoGerman:
-   SetOutPath "$INSTDIR\Documentation"
-   File "..\..\doc\install\Documentation\de_DE\README.TXT"
    SetOutPath "$INSTDIR\Documentation\html"
    File "..\..\doc\install\Documentation\de_DE\html\*"
    SetOutPath "$INSTDIR\Documentation\html\CmdRef"
    ;File "..\..\doc\install\Documentation\de_DE\html\CmdRef\*"
-   SetOutPath "$INSTDIR\Documentation\html\InstallGd"
-   File "..\..\doc\install\Documentation\de_DE\html\InstallGd\*"
-   ;SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
-   ;File "..\..\doc\install\Documentation\de_DE\html\ReleaseNotes\*"
    ;SetOutPath "$INSTDIR\Documentation\html\SysAdminGd"
    ;File "..\..\doc\install\Documentation\de_DE\html\SysAdminGd\*"
    goto DoneLanguage
    
 DoSpanish:
-   SetOutPath "$INSTDIR\Documentation"
-   File "..\..\doc\install\Documentation\es_ES\README.TXT"
    SetOutPath "$INSTDIR\Documentation\html"
    File "..\..\doc\install\Documentation\es_ES\html\*"
    SetOutPath "$INSTDIR\Documentation\html\CmdRef"
    ;File "..\..\doc\install\Documentation\es_ES\html\CmdRef\*"
-   SetOutPath "$INSTDIR\Documentation\html\InstallGd"
-   ;File "..\..\doc\install\Documentation\es_ES\html\InstallGd\*"
-   SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
-   ;File "..\..\doc\install\Documentation\es_ES\html\ReleaseNotes\*"
    SetOutPath "$INSTDIR\Documentation\html\SysAdminGd"
    ;File "..\..\doc\install\Documentation\es_ES\html\SysAdminGd\*"
    goto DoneLanguage
 
 DoJapanese:
-   SetOutPath "$INSTDIR\Documentation"
-   File "..\..\doc\install\Documentation\ja_JP\README.TXT"
    SetOutPath "$INSTDIR\Documentation\html"
    File "..\..\doc\install\Documentation\ja_JP\html\*"
    SetOutPath "$INSTDIR\Documentation\html\CmdRef"
    File "..\..\doc\install\Documentation\ja_JP\html\CmdRef\*"
-   SetOutPath "$INSTDIR\Documentation\html\InstallGd"
-   File "..\..\doc\install\Documentation\ja_JP\html\InstallGd\*"
-   SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
-   ;File "..\..\doc\install\Documentation\ja_JP\html\ReleaseNotes\*"
    SetOutPath "$INSTDIR\Documentation\html\SysAdminGd"
    ;File "..\..\doc\install\Documentation\ja_JP\html\SysAdminGd\*"
    goto DoneLanguage
    
 DoKorean:
-   SetOutPath "$INSTDIR\Documentation"
-   File "..\..\doc\install\Documentation\ko_KR\README.TXT"
    SetOutPath "$INSTDIR\Documentation\html"
    File "..\..\doc\install\Documentation\ko_KR\html\*"
    ;SetOutPath "$INSTDIR\Documentation\html\CmdRef"
    ;File "..\..\doc\install\Documentation\ko_KR\html\CmdRef\*"
-   SetOutPath "$INSTDIR\Documentation\html\InstallGd"
-   File "..\..\doc\install\Documentation\ko_KR\html\InstallGd\*"
-   SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
-   File "..\..\doc\install\Documentation\ko_KR\html\ReleaseNotes\*"
    SetOutPath "$INSTDIR\Documentation\html\SysAdminGd"
    File "..\..\doc\install\Documentation\ko_KR\html\SysAdminGd\*"
    goto DoneLanguage
    
 DoPortugueseBR:
-   SetOutPath "$INSTDIR\Documentation"
-   File "..\..\doc\install\Documentation\pt_BR\README.TXT"
    SetOutPath "$INSTDIR\Documentation\html"
    File "..\..\doc\install\Documentation\pt_BR\html\*"
    ;SetOutPath "$INSTDIR\Documentation\html\CmdRef"
    ;File "..\..\doc\install\Documentation\pt_BR\html\CmdRef\*"
-   SetOutPath "$INSTDIR\Documentation\html\InstallGd"
-   File "..\..\doc\install\Documentation\pt_BR\html\InstallGd\*"
-   SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
-   File "..\..\doc\install\Documentation\pt_BR\html\ReleaseNotes\*"
    ;SetOutPath "$INSTDIR\Documentation\html\SysAdminGd"
    ;File "..\..\doc\install\Documentation\pt_BR\html\SysAdminGd\*"
    goto DoneLanguage
 
 DoSimpChinese:
-   SetOutPath "$INSTDIR\Documentation"
-   File "..\..\doc\install\Documentation\zh_CN\README.TXT"
    SetOutPath "$INSTDIR\Documentation\html"
    File "..\..\doc\install\Documentation\zh_CN\html\*"
    ;SetOutPath "$INSTDIR\Documentation\html\CmdRef"
    ;File "..\..\doc\install\Documentation\zh_CN\html\CmdRef\*"
-   SetOutPath "$INSTDIR\Documentation\html\InstallGd"
-   File "..\..\doc\install\Documentation\zh_CN\html\InstallGd\*"
-   SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
-   File "..\..\doc\install\Documentation\zh_CN\html\ReleaseNotes\*"
    ;SetOutPath "$INSTDIR\Documentation\html\SysAdminGd"
    ;File "..\..\doc\install\Documentation\zh_CN\html\SysAdminGd\*"
    goto DoneLanguage
    
 DoTradChinese:
-   SetOutPath "$INSTDIR\Documentation"
-   File "..\..\doc\install\Documentation\zh_TW\README.TXT"
    SetOutPath "$INSTDIR\Documentation\html"
    File "..\..\doc\install\Documentation\zh_TW\html\*"
    ;SetOutPath "$INSTDIR\Documentation\html\CmdRef"
    ;File "..\..\doc\install\Documentation\zh_TW\html\CmdRef\*"
-   SetOutPath "$INSTDIR\Documentation\html\InstallGd"
-   File "..\..\doc\install\Documentation\zh_TW\html\InstallGd\*"
-   SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
-   File "..\..\doc\install\Documentation\zh_TW\html\ReleaseNotes\*"
    ;SetOutPath "$INSTDIR\Documentation\html\SysAdminGd"
    ;File "..\..\doc\install\Documentation\zh_TW\html\SysAdminGd\*"
    goto DoneLanguage
@@ -1146,15 +1114,175 @@ DoneLanguage:
   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation\${AFS_VERSION}" "MinorVersion" ${AFS_MINORVERSION}
   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation\${AFS_VERSION}" "PatchLevel" ${AFS_PATCHLEVEL}
 
-  ; Write start menu shortcut
-  SetOutPath "$SMPROGRAMS\OpenAFS"
-  CreateShortCut "$SMPROGRAMS\OpenAFS\Documentation.lnk" "$INSTDIR\Documentation\html\index.htm"
-  
-  
   WriteUninstaller "$INSTDIR\Uninstall.exe"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenAFS" "DisplayIcon" "$INSTDIR\Uninstall.exe,0"  
   CreateShortCut "$SMPROGRAMS\OpenAFS\Uninstall OpenAFS.lnk" "$INSTDIR\Uninstall.exe"
+  Call AFSCommon.Install
 SectionEnd  
   
+
+Section /o "Software Development Kit (SDK)" secSDK
+
+   SetOutPath "$INSTDIR\SDK\lib"
+   File /r "${AFS_CLIENT_LIBDIR}\*.*"
+
+   SetOutPath "$INSTDIR\SDK\Include"
+   File /r "${AFS_BUILD_INCDIR}\*.*"    
+
+   ; Client Sample
+   SetOutPath "$INSTDIR\SDK\Sample"
+   File "..\..\afsd\sample\token.c"
+
+   ;Store install folder
+  WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS SDK" "" $INSTDIR
+  WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS SDK\CurrentVersion" "VersionString" ${AFS_VERSION}
+  WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS SDK\CurrentVersion" "MajorVersion" ${AFS_MAJORVERSION}
+  WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS SDK\CurrentVersion" "MinorVersion" ${AFS_MINORVERSION}
+  WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS SDK\CurrentVersion" "PatchLevel" ${AFS_PATCHLEVEL}
+  WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS SDK\${AFS_VERSION}" "VersionString" ${AFS_VERSION}
+  WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS SDK\${AFS_VERSION}" "MajorVersion" ${AFS_MAJORVERSION}
+  WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS SDK\${AFS_VERSION}" "MinorVersion" ${AFS_MINORVERSION}
+  WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS SDK\${AFS_VERSION}" "PatchLevel" ${AFS_PATCHLEVEL}
+
+  WriteUninstaller "$INSTDIR\Uninstall.exe"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenAFS" "DisplayIcon" "$INSTDIR\Uninstall.exe,0"  
+
+  SetOutPath "$SMPROGRAMS\OpenAFS"
+  CreateShortCut "$SMPROGRAMS\OpenAFS\Uninstall OpenAFS.lnk" "$INSTDIR\Uninstall.exe"
+
+  Call AFSCommon.Install
+SectionEnd
+
+
+Section /o "Debug symbols" secDebug
+   SectionGetFlags ${secClient} $R0
+   IntOp $R0 $R0 & ${SF_SELECTED}
+   IntCmp $R0 ${SF_SELECTED} +1 DoServer
+  
+  ; Do client components
+  SetOutPath "$INSTDIR\Client\Program"
+  File "${AFS_CLIENT_BUILDDIR}\afsshare.pdb"
+  File "${AFS_CLIENT_BUILDDIR}\libosi.pdb"
+  File "${AFS_CLIENT_BUILDDIR}\libafsconf.pdb"
+  File "${AFS_CLIENT_BUILDDIR}\klog.pdb"
+  File "${AFS_CLIENT_BUILDDIR}\tokens.pdb"
+  File "${AFS_CLIENT_BUILDDIR}\unlog.pdb"
+  File "${AFS_CLIENT_BUILDDIR}\fs.pdb"
+  File "${AFS_CLIENT_BUILDDIR}\afsdacl.pdb"
+  File "${AFS_CLIENT_BUILDDIR}\cmdebug.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}\symlink.pdb"
+  File "${AFS_DESTDIR}\bin\kpasswd.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"
+  File "${AFS_SERVER_BUILDDIR}\udebug.pdb"
+  File "${AFS_DESTDIR}\bin\translate_et.pdb"
+  File "${AFS_DESTDIR}\etc\rxdebug.pdb"
+  File "${AFS_DESTDIR}\etc\backup.pdb"
+  File "${AFS_CLIENT_BUILDDIR}\afs_cpa.pdb"
+  File "${AFS_CLIENT_BUILDDIR}\afscred.pdb"
+  File "${AFS_CLIENT_BUILDDIR}\afslogon.pdb"
+  File "${AFS_CLIENT_BUILDDIR}\afscpcc.pdb"
+
+  SetOutPath "$SYSDIR"
+  
+DoServer:
+   SectionGetFlags ${secServer} $R0
+   IntOp $R0 $R0 & ${SF_SELECTED}
+   IntCmp $R0 ${SF_SELECTED} +1 DoControl
+
+  ; Do server components
+  SetOutPath "$INSTDIR\Server\usr\afs\bin"  
+  File "${AFS_SERVER_BUILDDIR}\afskill.pdb"
+  File "${AFS_SERVER_BUILDDIR}\afssvrcfg.pdb"
+  File "${AFS_SERVER_BUILDDIR}\asetkey.pdb"
+  File "${AFS_SERVER_BUILDDIR}\bosctlsvc.pdb"
+  File "${AFS_SERVER_BUILDDIR}\bosserver.pdb"
+  File "${AFS_SERVER_BUILDDIR}\buserver.pdb"
+  File "${AFS_ETC_BUILDDIR}\butc.pdb"
+  File "${AFS_SERVER_BUILDDIR}\fileserver.pdb"
+  File "${AFS_ETC_BUILDDIR}\fms.pdb"
+  File "${AFS_SERVER_BUILDDIR}\kaserver.pdb"
+  File "${AFS_SERVER_BUILDDIR}\ptserver.pdb"
+  File "${AFS_SERVER_BUILDDIR}\salvager.pdb"
+  File "${AFS_SERVER_BUILDDIR}\upclient.pdb"
+  File "${AFS_SERVER_BUILDDIR}\upserver.pdb"
+  File "${AFS_SERVER_BUILDDIR}\vlserver.pdb"
+  File "${AFS_SERVER_BUILDDIR}\volinfo.pdb"
+  File "${AFS_SERVER_BUILDDIR}\volserver.pdb"
+
+  ; Do server common components
+ File "${AFS_SERVER_BUILDDIR}\afsvosadmin.pdb"
+ File "${AFS_SERVER_BUILDDIR}\afsbosadmin.pdb"
+ File "${AFS_SERVER_BUILDDIR}\afscfgadmin.pdb"
+ File "${AFS_SERVER_BUILDDIR}\afskasadmin.pdb"
+ File "${AFS_SERVER_BUILDDIR}\afsptsadmin.pdb"
+   SetOutPath "$SYSDIR"
+   File "${AFS_SERVER_BUILDDIR}\afsserver.pdb"
+
+   ; Do control center components
+DoControl:
+   SectionGetFlags ${secControl} $R0
+   IntOp $R0 $R0 & ${SF_SELECTED}
+   IntCmp $R0 ${SF_SELECTED} +1 DoCommon
+
+   SetOutPath "$INSTDIR\Control Center"   
+  File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager.pdb"
+  File "${AFS_SERVER_BUILDDIR}\TaAfsAdmSvr.pdb"
+  File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager.pdb"
+
+DoCommon:
+  SetOutPath "$INSTDIR\Common"
+!IFDEF CL_1500
+  ; Do nothing
+!ELSE
+!IFDEF CL_1400
+  ; Do nothing
+!ELSE
+!IFDEF CL_1310
+   File "${SYSTEMDIR}\msvcr71d.pdb"
+   File "${SYSTEMDIR}\msvcp71d.pdb"
+   File "${SYSTEMDIR}\mfc71d.pdb"
+!ELSE
+!IFDEF CL_1300
+   File "${SYSTEMDIR}\msvcr70d.pdb"
+   File "${SYSTEMDIR}\msvcp70d.pdb"
+   File "${SYSTEMDIR}\mfc70d.pdb"
+!ELSE
+   File "${SYSTEMDIR}\mfc42d.pdb"
+   File "${SYSTEMDIR}\msvcp60d.pdb"
+   File "${SYSTEMDIR}\msvcrtd.pdb"
+!ENDIF
+!ENDIF
+!ENDIF
+!ENDIF
+  
+; Common Areas
+   SetOutPath "$INSTDIR\Common"
+   File "${AFS_CLIENT_BUILDDIR}\afs_config.pdb"
+   File "${AFS_SERVER_BUILDDIR}\afsadminutil.pdb"
+   File "${AFS_DESTDIR}\lib\afsauthent.pdb"
+   File "${AFS_DESTDIR}\lib\afspthread.pdb"
+   File "${AFS_DESTDIR}\lib\afsrpc.pdb"
+   File "${AFS_SERVER_BUILDDIR}\afsclientadmin.pdb"
+   File "${AFS_SERVER_BUILDDIR}\afsprocmgmt.pdb"
+   File "${AFS_SERVER_BUILDDIR}\afsvosadmin.pdb"
+   File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib.pdb"
+   File "${AFS_SERVER_BUILDDIR}\afsvosadmin.pdb"
+   File "${AFS_SERVER_BUILDDIR}\afsbosadmin.pdb"
+   File "${AFS_SERVER_BUILDDIR}\afscfgadmin.pdb"
+   File "${AFS_SERVER_BUILDDIR}\afskasadmin.pdb"
+   File "${AFS_SERVER_BUILDDIR}\afsptsadmin.pdb"
+
+SectionEnd
+
+
 ;Display the Finish header
 ;Insert this macro after the sections if you are not using a finish page
 ;!insertmacro MUI_SECTIONS_FINISHHEADER
@@ -1177,6 +1305,64 @@ Function .onInit
    Abort
    
 contInstall:
+
+   ; Set Install Type text
+   InstTypeSetText 0 "AFS Client"
+   InstTypeSetText 1 "AFS Administrator"
+   InstTypeSetText 2 "AFS Server"
+   InstTypeSetText 3 "AFS Developer Tools"
+
+   ; Set sections in each install type
+   SectionSetInstTypes 0 15            ; AFS Client
+   SectionSetInstTypes 1 15            ; Loopback adapter
+   SectionSetInstTypes 2 4              ; AFS Server
+   SectionSetInstTypes 3 6              ; AFS Control Center
+   SectionSetInstTypes 4 14            ; Documentation
+   SectionSetInstTypes 5 8             ; SDK
+!ifndef DEBUG
+   SectionSetInstTypes 6 8             ; Debug symbols
+!else
+   SectionSetInstTypes 6 15            ; Debug symbols
+!endif
+
+   ; 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
+   ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\RPC\ClientProtocols" "ncacn_http"
+   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:
+   ; If the Loopback is already installed, we mark the option OFF and Read Only
+   ; so the user can not select it.
+   Call afs.isLoopbackInstalled
+   IntCmp $R1 0 SkipLoop
+   SectionGetFlags ${secLoopback} $0
+   IntOp $0 $0 & ${SECTION_OFF}
+   IntOp $0 $0 | ${SF_RO}
+   SectionSetFlags ${secLoopback} $0
+   ; And disable the loopback in the types
+   SectionSetInstTypes 1 0             ; Loopback adapter
+   
+SkipLoop:
+   ; Never install debug symbols unless explicitly selected, except in DEBUG mode
+       !IFNDEF DEBUG
+   SectionGetFlags ${secDebug} $0
+       IntOp $0 $0 & ${SECTION_OFF}
+       SectionSetFlags ${secDebug} $0
+   !ELSE
+   SectionGetFlags ${secDebug} $0
+       IntOp $0 $0 | ${SF_SELECTED}
+       SectionSetFlags ${secDebug} $0
+   !ENDIF
    ; 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
@@ -1189,11 +1375,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 $R3 "3" DowngradeClient
-   
+   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
@@ -1234,10 +1433,10 @@ skipClient:
    StrCmp $R2 "2" UpgradeServer
    StrCmp $R2 "3" DowngradeServer
    
-       SectionGetFlags ${secServer} $0
-       IntOp $0 $0 | ${SF_SELECTED}
-       SectionSetFlags ${secServer} $0
-       ;# !insertmacro UnselectSection ${secServer}
+   SectionGetFlags ${secServer} $0
+   IntOp $0 $0 | ${SF_SELECTED}
+   SectionSetFlags ${secServer} $0
+   ;# !insertmacro UnselectSection ${secServer}
    goto skipServer
 
 UpgradeServer:
@@ -1262,10 +1461,10 @@ DowngradeServer:
    goto skipServer
    
 NoServer:
-       SectionGetFlags ${secServer} $0
-       IntOp $0 $0 & ${SECTION_OFF}
-       SectionSetFlags ${secServer} $0
-       ;# !insertmacro UnselectSection ${secServer}
+   SectionGetFlags ${secServer} $0
+   IntOp $0 $0 & ${SECTION_OFF}
+   SectionSetFlags ${secServer} $0
+   ;# !insertmacro UnselectSection ${secServer}
    goto skipServer
    
 skipServer:
@@ -1274,59 +1473,82 @@ skipServer:
    Pop $R2
    StrCmp $R2 "0" NoControl
 
-       SectionGetFlags ${secControl} $0
-       IntOp $0 $0 | ${SF_SELECTED}
-       SectionSetFlags ${secControl} $0
+   SectionGetFlags ${secControl} $0
+   IntOp $0 $0 | ${SF_SELECTED}
+   SectionSetFlags ${secControl} $0
    goto CheckDocs
    
 NoControl:   
-       SectionGetFlags ${secControl} $0
-       IntOp $0 $0 & ${SECTION_OFF}
-       SectionSetFlags ${secControl} $0
-       ;# !insertmacro UnselectSection ${secControl}
+   SectionGetFlags ${secControl} $0
+   IntOp $0 $0 & ${SECTION_OFF}
+   SectionSetFlags ${secControl} $0
+   ;# !insertmacro UnselectSection ${secControl}
 
 CheckDocs:
    ; Check Documentation
    Call IsDocumentationInstalled
    Pop $R2
    StrCmp $R2 "0" NoDocs
-       SectionGetFlags ${secDocs} $0
-       IntOp $0 $0 | ${SF_SELECTED}
-       SectionSetFlags ${secDocs} $0
-   goto end
+   SectionGetFlags ${secDocs} $0
+   IntOp $0 $0 | ${SF_SELECTED}
+   SectionSetFlags ${secDocs} $0
+   goto CheckSDK
    
 NoDocs:
-       SectionGetFlags ${secDocs} $0
-       IntOp $0 $0 & ${SECTION_OFF}
-       SectionSetFlags ${secDocs} $0
+   SectionGetFlags ${secDocs} $0
+   IntOp $0 $0 & ${SECTION_OFF}
+   SectionSetFlags ${secDocs} $0
+   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.
+; If they are there, we want to make sure they match the installed version.
+CheckSDK:
+   IfFileExists "$INSTDIR\SDK\Include\main.h" +1 NoSDK
+   SectionGetFlags ${secSDK} $0
+   IntOp $0 $0 | ${SF_SELECTED}
+   SectionSetFlags ${secSDK} $0
+   goto end
+   
+NoSDK:
+   SectionGetFlags ${secSDK} $0
+   IntOp $0 $0 & ${SECTION_OFF}
+   SectionSetFlags ${secSDK} $0
    goto end
    
 DefaultOptions:
    ; Client Selected
-       SectionGetFlags ${secClient} $0
-       IntOp $0 $0 | ${SF_SELECTED}
-       SectionSetFlags ${secClient} $0
+   SectionGetFlags ${secClient} $0
+   IntOp $0 $0 | ${SF_SELECTED}
+   SectionSetFlags ${secClient} $0
 
    ; Server NOT selected
-       SectionGetFlags ${secServer} $0
-       IntOp $0 $0 & ${SECTION_OFF}
-       SectionSetFlags ${secServer} $0
+   SectionGetFlags ${secServer} $0
+   IntOp $0 $0 & ${SECTION_OFF}
+   SectionSetFlags ${secServer} $0
    
    ; Control Center NOT selected
-       SectionGetFlags ${secControl} $0
-       IntOp $0 $0 & ${SECTION_OFF}
-       SectionSetFlags ${secControl} $0
-       ;# !insertmacro UnselectSection ${secControl}
-
-   ; Documentation selected
-       SectionGetFlags ${secDocs} $0
-       IntOp $0 $0 | ${SF_SELECTED}
-       SectionSetFlags ${secDocs} $0
-       ;# !insertmacro UnselectSection ${secDocs}
+   SectionGetFlags ${secControl} $0
+   IntOp $0 $0 & ${SECTION_OFF}
+   SectionSetFlags ${secControl} $0
+   ;# !insertmacro UnselectSection ${secControl}
+
+   ; Documentation NOT selected
+   SectionGetFlags ${secDocs} $0
+   IntOp $0 $0 & ${SECTION_OFF}
+   SectionSetFlags ${secDocs} $0
+   ;# !insertmacro UnselectSection ${secDocs}
+   
+   ; SDK not selected
+   SectionGetFlags ${secSDK} $0
+   IntOp $0 $0 & ${SECTION_OFF}
+   SectionSetFlags ${secSDK} $0
+   ;# !insertmacro UnselectSection ${secSDK}
+   
    goto end
 
 end:
-       Pop $0
+   Pop $0
   
    Push $R0
   
@@ -1335,7 +1557,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
@@ -1361,14 +1600,13 @@ Nope:
   File /oname=$0 CellServPage.ini
   GetTempFilename $1
   File /oname=$1 AFSCell.ini
+  GetTempFilename $2
+  File /oname=$2 AFSCreds.ini
   ;File /oname=$1 ConfigURL.ini
   
 FunctionEnd
 
 
-
-
-
 ;--------------------------------
 ; These are our cleanup functions
 Function .onInstFailed
@@ -1385,29 +1623,22 @@ FunctionEnd
 ;--------------------------------
 ;Descriptions
 
-!ifndef v2.0b4
-!insertmacro MUI_FUNCTIONS_DESCRIPTION_BEGIN
-!else
-!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
-!endif
+  !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
   !insertmacro MUI_DESCRIPTION_TEXT ${secServer} $(DESC_secServer)
   !insertmacro MUI_DESCRIPTION_TEXT ${secClient} $(DESC_secClient)
   !insertmacro MUI_DESCRIPTION_TEXT ${secControl} $(DESC_secControl)
   !insertmacro MUI_DESCRIPTION_TEXT ${secDocs} $(DESC_secDocs)
-!ifndef v2.0b4
-  !insertmacro MUI_FUNCTIONS_DESCRIPTION_END
-!else
+  !insertmacro MUI_DESCRIPTION_TEXT ${secSDK} $(DESC_secSDK)
+  !insertmacro MUI_DESCRIPTION_TEXT ${secLoopback} $(DESC_secLoopback)
+  !insertmacro MUI_DESCRIPTION_TEXT ${secDebug} $(DESC_secDebug)
   !insertmacro MUI_FUNCTION_DESCRIPTION_END
-!endif
  
 ;--------------------------------
 ;Uninstaller Section
 
 Section "Uninstall"
   ; Make sure the user REALLY wants to do this, unless they did a silent uninstall, in which case...let them!
-#ifdef v2.0b4
   IfSilent StartRemove     ; New in v2.0b4
-#endif
   MessageBox MB_YESNO "Are you sure you want to remove OpenAFS from this machine?" IDYES StartRemove
   abort
   
@@ -1418,7 +1649,13 @@ StartRemove:
   GetTempFileName $R0
   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'
+!IFDEF INSTALL_KFW
   nsExec::Exec '$R0 krbcc32s.exe'
+!ENDIF
 
   ; Delete the AFS service
   GetTempFileName $R0
@@ -1432,6 +1669,8 @@ StartRemove:
   nsExec::Exec '$R0 u TransarcAFSServer'
   Delete $R0
   
+  Call un.RemoveProvider
+
   Push "$INSTDIR\Client\Program"
   Call un.RemoveFromPath
   Push "$INSTDIR\Common"
@@ -1444,8 +1683,13 @@ StartRemove:
   ; Delete documentation
   Delete "$INSTDIR\Documentation\README.TXT"
   Delete "$INSTDIR\Documentation\html\*"
+  Delete "$INSTDIR\Documentation\html\index_files\*"
+  Delete "$INSTDIR\Documentation\html\CmdRef\1\*"
+  Delete "$INSTDIR\Documentation\html\CmdRef\5\*"
+  Delete "$INSTDIR\Documentation\html\CmdRef\8\*"
   Delete "$INSTDIR\Documentation\html\CmdRef\*"
-  Delete "$INSTDIR\Documentation\html\InstallGd\*"
+  Delete "$INSTDIR\Documentation\html\ReleaseNotes\logo_files\*"
+  Delete "$INSTDIR\Documentation\html\ReleaseNotes\relnotes_files\*"
   Delete "$INSTDIR\Documentation\html\ReleaseNotes\*"
   Delete "$INSTDIR\Documentation\html\SysAdminGd\*"
 
@@ -1465,7 +1709,6 @@ StartRemove:
    Delete /REBOOTOK "$INSTDIR\Common\afskasadmin.dll"
    Delete /REBOOTOK "$INSTDIR\Common\afsptsadmin.dll"
 
-!IFDEF DEBUG
    Delete /REBOOTOK "$INSTDIR\Common\afs_config.pdb"
    Delete /REBOOTOK "$INSTDIR\Common\afs_shl_ext.pdb"
    Delete /REBOOTOK "$INSTDIR\Common\afsadminutil.pdb"
@@ -1481,40 +1724,111 @@ StartRemove:
    Delete /REBOOTOK "$INSTDIR\Common\afscfgadmin.pdb"
    Delete /REBOOTOK "$INSTDIR\Common\afskasadmin.pdb"
    Delete /REBOOTOK "$INSTDIR\Common\afsptsadmin.pdb"
-
+!IFDEF DEBUG
+!IFDEF CL_1500
+   SetOutPath "$INSTDIR\Common"
+   File /oname=vcruntime.msi "${MSVCMSI}"
+   nsExec::Exec 'msiexec /x "$INSTDIR\Common\vcruntime.msi" /passive /norestart'
+   Delete "$INSTDIR\Common\vcruntime.msi"
+!ELSE
+!IFDEF CL_1400
+   SetOutPath "$INSTDIR\Common"
+   File /oname=vcruntime.msi "${MSVCMSI}"
+   nsExec::Exec 'msiexec /x "$INSTDIR\Common\vcruntime.msi" /passive /norestart'
+   Delete "$INSTDIR\Common\vcruntime.msi"
+!ELSE
 !IFDEF CL_1310
    Delete /REBOOTOK "$INSTDIR\Common\msvcr71d.dll"
    Delete /REBOOTOK "$INSTDIR\Common\msvcr71d.pdb"
+   Delete /REBOOTOK "$INSTDIR\Common\msvcp71d.dll"
+   Delete /REBOOTOK "$INSTDIR\Common\msvcp71d.pdb"
+   Delete /REBOOTOK "$INSTDIR\Common\mfc71d.dll"
+   Delete /REBOOTOK "$INSTDIR\Common\mfc71d.pdb"
 !ELSE
+!IFDEF CL_1300
+   Delete /REBOOTOK "$INSTDIR\Common\msvcr70d.dll"
+   Delete /REBOOTOK "$INSTDIR\Common\msvcr70d.pdb"
+   Delete /REBOOTOK "$INSTDIR\Common\msvcp70d.dll"
+   Delete /REBOOTOK "$INSTDIR\Common\msvcp70d.pdb"
+   Delete /REBOOTOK "$INSTDIR\Common\mfc70d.dll"
+   Delete /REBOOTOK "$INSTDIR\Common\mfc70d.pdb"
+!ELSE
+   Delete /REBOOTOK "$INSTDIR\Common\mfc42d.dll"
+   Delete /REBOOTOK "$INSTDIR\Common\mfc42d.pdb"
+   Delete /REBOOTOK "$INSTDIR\Common\msvcp60d.dll"
+   Delete /REBOOTOK "$INSTDIR\Common\msvcp60d.pdb"
    Delete /REBOOTOK "$INSTDIR\Common\msvcrtd.dll"
    Delete /REBOOTOK "$INSTDIR\Common\msvcrtd.pdb"
 !ENDIF
+!ENDIF
+!ENDIF
+!ENDIF
+!ELSE
+!IFDEF CL_1500
+   SetOutPath "$INSTDIR\Common"
+   File /oname=vcruntime.msi "${MSVCMSI}"
+   nsExec::Exec 'msiexec /x "$INSTDIR\Common\vcruntime.msi" /passive /norestart'
+   Delete "$INSTDIR\Common\vcruntime.msi"
+!ELSE
+!IFDEF CL_1400
+   SetOutPath "$INSTDIR\Common"
+   File /oname=vcruntime.msi "${MSVCMSI}"
+   nsExec::Exec 'msiexec /x "$INSTDIR\Common\vcruntime.msi" /passive /norestart'
+   Delete "$INSTDIR\Common\vcruntime.msi"
 !ELSE
 !IFDEF CL_1310
+   Delete /REBOOTOK "$INSTDIR\Common\mfc71.dll"
    Delete /REBOOTOK "$INSTDIR\Common\msvcr71.dll"
+   Delete /REBOOTOK "$INSTDIR\Common\msvcp71.dll"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC71CHS.DLL"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC71CHT.DLL"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC71DEU.DLL"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC71ENU.DLL"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC71ESP.DLL"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC71FRA.DLL"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC71ITA.DLL"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC71JPN.DLL"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC71KOR.DLL"
+!ELSE
+!IFDEF CL_1300
+   Delete /REBOOTOK "$INSTDIR\Common\mfc70.dll"
+   Delete /REBOOTOK "$INSTDIR\Common\msvcr70.dll"
+   Delete /REBOOTOK "$INSTDIR\Common\msvcp70.dll"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC70CHS.DLL"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC70CHT.DLL"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC70DEU.DLL"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC70ENU.DLL"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC70ESP.DLL"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC70FRA.DLL"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC70ITA.DLL"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC70JPN.DLL"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC70KOR.DLL"
 !ELSE
+   Delete /REBOOTOK "$INSTDIR\Common\mfc42.dll"
+   Delete /REBOOTOK "$INSTDIR\Common\msvcp60.dll"
    Delete /REBOOTOK "$INSTDIR\Common\msvcrt.dll"
 !ENDIF
 !ENDIF
+!ENDIF
+!ENDIF
+!ENDIF
   
-!ifdef v2.0b3
-   Call un.IsSilent
-   Pop $R1
-   StrCmp $R1 "/S" SkipAsk
-!else
-   IfSilent SkipAsk
-!endif
-;  IfFileExists "$WINDIR\afsdcell.ini" CellExists SkipDelAsk
+   IfSilent SkipDel
+;  IfFileExists "$INSTDIR\Client\CellServDB" CellExists SkipDelAsk
 ;  CellExists:
-  MessageBox MB_YESNO "Would you like to keep your configuration files?" IDYES SkipDel
-  SkipAsk:
-  Delete "$WINDIR\afsdcell.ini"
+  MessageBox MB_YESNO "Would you like to keep your configuration information?" IDYES SkipDel
+  Delete "$INSTDIR\Client\CellServDB"
 
-  Delete "$WINDIR\afsdsbmt.ini"
+; Only remove krb5.ini if KfW was installed
+!IFDEF INSTALL_KFW
   Delete "$WINDIR\krb5.ini"
-  Delete "$WINDIR\afsdns.ini"
-  Delete "$WINDIR\afs_freelance.ini"
+!ENDIF
+  Delete "$INSTDIR\Client\afsdns.ini"
   
+  GetTempFileName $R0
+  File /oname=$R0 "${AFS_WININSTALL_DIR}\AdminGroup.exe"
+  nsExec::Exec '$R0 -remove'
+
   SkipDel:
   Delete "$WINDIR\afsd_init.log"
   Delete "$INSTDIR\Uninstall.exe"
@@ -1538,7 +1852,6 @@ StartRemove:
   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\volinfo.exe"
   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\volserver.exe"
 
-!ifdef DEBUG
   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\afskill.pdb"
   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\afssvrcfg.pdb"
   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\bosctlsvc.pdb"
@@ -1556,24 +1869,27 @@ StartRemove:
   Delete "$INSTDIR\Server\usr\afs\bin\vlserver.pdb"
   Delete "$INSTDIR\Server\usr\afs\bin\volinfo.pdb"
   Delete "$INSTDIR\Server\usr\afs\bin\volserver.pdb"
-!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"
+  Delete /REBOOTOK "$INSTDIR\Client\Program\afs_cpa.cpl"
+  Delete /REBOOTOK "$INSTDIR\Client\Program\afslogon.dll"
+  Delete /REBOOTOK "$INSTDIR\Client\Program\afscpcc.exe"
 
-!ifdef DEBUG
   Delete /REBOOTOK "$SYSDIR\afsserver.pdb"
-  Delete /REBOOTOK "$SYSDIR\afs_cpa.pdb"
-!endif
-  
+  Delete /REBOOTOK "$INSTDIR\Client\Program\afs_cpa.pdb"
+  Delete /REBOOTOK "$INSTDIR\Client\Program\afslogon.pdb"
+  Delete /REBOOTOK "$INSTDIR\Client\Program\afscpcc.pdb"
+
   RMDir /r "$INSTDIR\Documentation\html\CmdRef"
-  RMDir /r "$INSTDIR\Documentation\html\InstallGd"
   RMDir /r "$INSTDIR\Documentation\html\ReleaseNotes"
   RMDir /r "$INSTDIR\Documentation\html\SysAdminGd"
   RMDIr /r "$INSTDIR\Documentation\html"
@@ -1581,38 +1897,115 @@ StartRemove:
   RMDir "$INSTDIR\Documentation"
   ; Delete DOC short cut
   Delete /REBOOTOK "$INSTDIR\Client\Program\afscreds.exe"
-
-!ifdef DEBUG
   Delete /REBOOTOK "$INSTDIR\Client\Program\afscreds.pdb"
-!endif
+
+  Delete /REBOOTOK "$INSTDIR\SDK\Include\*"
+  Delete /REBOOTOK "$INSTDIR\SDK\Include\afs\*"
+  Delete /REBOOTOK "$INSTDIR\SDK\Include\rx\*"
+  Delete /REBOOTOK "$INSTDIR\SDK\Sample\*"
+  Delete /REBOOTOK "$INSTDIR\SDK\*"
+
+  RMDir  "$INSTDIR\SDK\Sample"
+  RMDir  "$INSTDIR\SDK\Include\afs"
+  RMDir  "$INSTDIR\SDK\Include\rx"
+  RMDir  "$INSTDIR\SDK\Include"
+  RMDir  "$INSTDIR\SDK"
 
   Delete /REBOOTOK "$INSTDIR\Client\Program\*"
-  Delete /REBOOTOK "$INSTDIR\Client\Program\Include\*"
-  Delete /REBOOTOK "$INSTDIR\Client\Program\Include\afs\*"
-  Delete /REBOOTOK "$INSTDIR\Client\Program\Include\rx\*"
-  Delete /REBOOTOK "$INSTDIR\Client\Program\Sample\*"
-  RMDir  "$INSTDIR\Client\Program\Sample"
-  RMDir  "$INSTDIR\Client\Program\Include\afs"
-  RMDir  "$INSTDIR\Client\Program\Include\rx"
-  RMDir  "$INSTDIR\Client\Program\Include"
+  Delete /REBOOTOK "$INSTDIR\Client\*"
+
   RMDir  "$INSTDIR\Client\Program"
   RMDir  "$INSTDIR\Client"
-  
-!IFDEF DEBUG
+
+!IFDEF DEBUG  
+!IFDEF CL_1500
+   SetOutPath "$INSTDIR\Common"
+   File /oname=vcruntime.msi "${MSVCMSI}"
+   nsExec::Exec 'msiexec /x "$INSTDIR\Common\vcruntime.msi" /passive /norestart'
+   Delete "$INSTDIR\Common\vcruntime.msi"
+!ELSE
+!IFDEF CL_1400
+   SetOutPath "$INSTDIR\Common"
+   File /oname=vcruntime.msi "${MSVCMSI}"
+   nsExec::Exec 'msiexec /x "$INSTDIR\Common\vcruntime.msi" /passive /norestart'
+   Delete "$INSTDIR\Common\vcruntime.msi"
+!ELSE
 !IFDEF CL_1310
-  Delete /REBOOTOK "$INSTDIR\Common\msvcr71d.dll"
-  Delete /REBOOTOK "$INSTDIR\Common\msvcr71d.pdb"
+   Delete /REBOOTOK "$INSTDIR\Common\msvcr71d.dll"
+   Delete /REBOOTOK "$INSTDIR\Common\msvcr71d.pdb"
+   Delete /REBOOTOK "$INSTDIR\Common\msvcp71d.dll"
+   Delete /REBOOTOK "$INSTDIR\Common\msvcp71d.pdb"
+   Delete /REBOOTOK "$INSTDIR\Common\mfc71d.dll"
+   Delete /REBOOTOK "$INSTDIR\Common\mfc71d.pdb"
+!ELSE
+!IFDEF CL_1300
+   Delete /REBOOTOK "$INSTDIR\Common\msvcr70d.dll"
+   Delete /REBOOTOK "$INSTDIR\Common\msvcr70d.pdb"
+   Delete /REBOOTOK "$INSTDIR\Common\msvcp70d.dll"
+   Delete /REBOOTOK "$INSTDIR\Common\msvcp70d.pdb"
+   Delete /REBOOTOK "$INSTDIR\Common\mfc70d.dll"
+   Delete /REBOOTOK "$INSTDIR\Common\mfc70d.pdb"
 !ELSE
-  Delete /REBOOTOK "$INSTDIR\Common\msvcrtd.dll"
-  Delete /REBOOTOK "$INSTDIR\Common\msvcrtd.pdb"
+   Delete /REBOOTOK "$INSTDIR\Common\mfc42d.dll"
+   Delete /REBOOTOK "$INSTDIR\Common\mfc42d.pdb"
+   Delete /REBOOTOK "$INSTDIR\Common\msvcp60d.dll"
+   Delete /REBOOTOK "$INSTDIR\Common\msvcp60d.pdb"
+   Delete /REBOOTOK "$INSTDIR\Common\msvcrtd.dll"
+   Delete /REBOOTOK "$INSTDIR\Common\msvcrtd.pdb"
+!ENDIF
+!ENDIF
 !ENDIF
+!ENDIF
+!ELSE
+!IFDEF CL_1500
+   SetOutPath "$INSTDIR\Common"
+   File /oname=vcruntime.msi "${MSVCMSI}"
+   nsExec::Exec 'msiexec /x "$INSTDIR\Common\vcruntime.msi" /passive /norestart'
+   Delete "$INSTDIR\Common\vcruntime.msi"
+!ELSE
+!IFDEF CL_1400
+   SetOutPath "$INSTDIR\Common"
+   File /oname=vcruntime.msi "${MSVCMSI}"
+   nsExec::Exec 'msiexec /x "$INSTDIR\Common\vcruntime.msi" /passive /norestart'
+   Delete "$INSTDIR\Common\vcruntime.msi"
 !ELSE
 !IFDEF CL_1310
-  Delete /REBOOTOK "$INSTDIR\Common\msvcr71.dll"
+   Delete /REBOOTOK "$INSTDIR\Common\mfc71.dll"
+   Delete /REBOOTOK "$INSTDIR\Common\msvcr71.dll"
+   Delete /REBOOTOK "$INSTDIR\Common\msvcp71.dll"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC71CHS.DLL"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC71CHT.DLL"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC71DEU.DLL"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC71ENU.DLL"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC71ESP.DLL"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC71FRA.DLL"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC71ITA.DLL"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC71JPN.DLL"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC71KOR.DLL"
+!ELSE
+!IFDEF CL_1300
+   Delete /REBOOTOK "$INSTDIR\Common\mfc70.dll"
+   Delete /REBOOTOK "$INSTDIR\Common\msvcr70.dll"
+   Delete /REBOOTOK "$INSTDIR\Common\msvcp70.dll"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC70CHS.DLL"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC70CHT.DLL"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC70DEU.DLL"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC70ENU.DLL"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC70ESP.DLL"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC70FRA.DLL"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC70ITA.DLL"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC70JPN.DLL"
+   Delete /REBOOTOK "$INSTDIR\Common\MFC70KOR.DLL"
 !ELSE
-  Delete /REBOOTOK "$INSTDIR\Common\msvcrt.dll"
+   Delete /REBOOTOK "$INSTDIR\Common\mfc42.dll"
+   Delete /REBOOTOK "$INSTDIR\Common\msvcp60.dll"
+   Delete /REBOOTOK "$INSTDIR\Common\msvcrt.dll"
+!ENDIF
+!ENDIF
 !ENDIF
 !ENDIF
+!ENDIF
+
   Delete /REBOOTOK "$INSTDIR\Common\*"
   RMDir "$INSTDIR\Common"
 
@@ -1632,11 +2025,9 @@ StartRemove:
   Delete /REBOOTOK "$INSTDIR\Control Center\TaAfsAdmSvr.exe"
   Delete /REBOOTOK "$INSTDIR\Control Center\TaAfsServerManager.exe"
   Delete /REBOOTOK "$INSTDIR\Control Center\CCUninst.dll"
-!ifdef DEBUG
   Delete /REBOOTOK "$INSTDIR\Control Center\TaAfsAccountManager.pdb"
   Delete /REBOOTOK "$INSTDIR\Control Center\TaAfsAdmSvr.pdb"
   Delete /REBOOTOK "$INSTDIR\Control Center\TaAfsServerManager.pdb"
-!endif
   RMDir  "$INSTDIR\Control Center"
   
   Delete "$SMPROGRAMS\OpenAFS\Uninstall OpenAFS.lnk"
@@ -1658,6 +2049,10 @@ StartRemove:
   DeleteRegKey HKCR "CLSID\{DC515C27-6CAC-11D1-BAE7-00C04FD140D2}"
   DeleteRegKey HKCR "FOLDER\shellex\ContextMenuHandlers\AFS Client Shell Extension"
   DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved" "{DC515C27-6CAC-11D1-BAE7-00C04FD140D2}"
+  DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Control Panel\Cpls" "afs_cpa"
+
+  ; WinLogon Event Notification
+  DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\AfsLogon"
 
   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion"
   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Client"
@@ -1668,15 +2063,16 @@ StartRemove:
   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Server\CurrentVersion"
   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Server"
   DeleteRegKey /ifempty HKLM "${AFS_REGKEY_ROOT}"
+  DeleteRegKey HKLM "${NID_PLUGIN_MGR}\Modules\OpenAFS"
+  DeleteRegKey HKLM "${NID_PLUGIN_MGR}\Plugins\AfsCred"
+  DeleteRegKey /ifempty HKLM "Software\MIT\NetIDMgr"
   DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenAFS"
   DeleteRegValue HKLM "SYSTEM\CurrentControlSet\Services\NetBT\Parameters" "SmbDeviceEnabled"
-  RMDir  "$INSTDIR"
 
-!ifndef v2.0b4
-  ;Display the Finish header
-  !insertmacro MUI_UNFINISHHEADER
-!endif
+  ; Support for apps that wrote submount data directly to afsdsbmt.ini
+  DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\IniFileMapping\afsdsbmt.ini"
+
+  RMDir  "$INSTDIR"
 
 SectionEnd
 
@@ -1692,7 +2088,9 @@ FunctionEnd
 
 Function un.onUninstSuccess
 
-   MessageBox MB_OK "Please reboot your machine to complete uninstallation of the software"
+  IfSilent SkipAsk
+  MessageBox MB_OK "Please reboot your machine to complete uninstallation of the software"
+  SkipAsk:
 
 FunctionEnd
 
@@ -1709,34 +2107,163 @@ 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"
-   NSISdl::download $R0 "$WINDIR\afsdcell.ini"
+   NSISdl::download $R0 "$INSTDIR\Client\CellServDB"
    Pop $R0 ;Get the return value
    StrCmp $R0 "success" +2
       MessageBox MB_OK|MB_ICONSTOP "Download failed: $R0"
    goto done
 
 UsePackaged:
-   SetOutPath "$WINDIR"
-   File "afsdcell.ini"
+   SetOutPath "$INSTDIR\Client"
+   File "CellServDB"
    goto done
    
 CheckOther:
    ReadINIStr $R0 $0 "Field 7" "State"
-   StrCmp $R0 "1" +1 done
-   CopyFiles $R0 "$WINDIR\afsdcell.ini"
+   StrCmp $R0 "" done
+   CopyFiles $R0 "$INSTDIR\Client\CellServDB"
    
 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
 
 
 ;-------------------------------
@@ -1756,8 +2283,12 @@ startOver:
   WriteINISTR $0 "Field 4" "State" "0"
   WriteINIStr $0 "Field 6" "State" "0"
   
-  ; If there is an existing afsdcell.ini file, allow the user to choose it and make it default
-  IfFileExists "$WINDIR\afsdcell.ini" +1 notpresent
+  ; If there is an existing afsdcell.ini file, migrate it to CellServDB
+  IfFileExists "$WINDIR\afsdcell.ini" +1 +3
+  CopyFiles /SILENT "$WINDIR\afsdcell.ini" "$INSTDIR\Client\CellServDB"
+  Delete "$WINDIR\afsdcell.ini"
+  ; If there is an existing CellServDB file, allow the user to choose it and make it default
+  IfFileExists "$INSTDIR\Client\CellServDB" +1 notpresent
   WriteINIStr $0 "Field 2" "Flags" "ENABLED"
   WriteINIStr $0 "Field 2" "State" "1"
   WriteINIStr $0 "Field 3" "State" "0"
@@ -1802,31 +2333,56 @@ FunctionEnd
 
 
 Function AFSPageGetCellName
-!ifndef v2.0b4
-   Call IsSilent
-   Pop $R1
-   StrCmp $R1 "/S" exit
-!else
    IfSilent good
-!endif
   ; Skip this page if we are not installing the client
   SectionGetFlags ${secClient} $R0
   IntOp $R0 $R0 & ${SF_SELECTED}
   StrCmp $R0 "0" good
   
 startOver:
+   ; We want to read in the existing parameters and make them the defaults
+   
+   ;AFS Crypt security
+   ReadRegDWORD $R1 HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters" "SecurityLevel"
+   StrCmp $R1 "" +3
+   WriteINIStr $1 "Field 3" "State" $R1
+   goto +2
+   WriteINIStr $1 "Field 3" "State" "1"
+   
+   ;Use DNS
+   ReadRegDWORD $R1 HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters" "UseDNS"
+   StrCmp $R1 "" +3
+   WriteINIStr $1 "Field 9" "State" $R1
+   goto +2
+   WriteINIStr $1 "Field 9" "State" "1"
+   
+   ; Use integrated logon
+   ReadRegDWORD $R1 HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters" "LogonOptions"
+   StrCmp $R1 "" +3
+   WriteINIStr $1 "Field 7" "State" $R1
+   goto +2
+   WriteINIStr $1 "Field 7" "State" "0"
+   
    ; If this is a server install, we do NOT want to recommend the Freelance client
    ; And we do not need to ask for the cell name.
    SectionGetFlags ${secServer} $R1
    IntOp $R1 $R1 & ${SF_SELECTED}
    StrCmp $R1 "1" +1 NotServer
    WriteINIStr $1 "Field 6" "Text" "Enable AFS Freelance client (Not Recommended for servers)"
+   ReadRegDWORD $R1 HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters" "FreelanceClient"
+   StrCmp $R1 "" +3
+   WriteINIStr $1 "Field 5" "State" $R1
+   goto +2
    WriteINIStr $1 "Field 5" "State" "0"
    WriteINIStr $1 "Field 1" "Flags" "DISABLED"
    WriteINIStr $1 "Field 2" "Flags" "DISABLED"
    goto SkipServerTest
 NotServer:
    WriteINIStr $1 "Field 6" "Text" "Enable AFS Freelance client (Recommended)"
+   ReadRegDWORD $R1 HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters" "FreelanceClient"
+   StrCmp $R1 "" +3
+   WriteINIStr $1 "Field 5" "State" $R1
+   goto +2
    WriteINIStr $1 "Field 5" "State" "1"
    WriteINIStr $1 "Field 1" "Flags" ""
    WriteINIStr $1 "Field 2" "Flags" ""
@@ -1851,6 +2407,30 @@ done:
 good:
 FunctionEnd
 
+
+;---------------------------------------------------------
+;Do the page to get the afscreds.exe startup configuration
+
+Function AFSPageConfigAFSCreds
+  ; Skip this page if we are not installing the client
+  SectionGetFlags ${secClient} $R0
+  IntOp $R0 $R0 & ${SF_SELECTED}
+  StrCmp $R0 "0" done
+  
+  ; Set the install options here
+  
+  !insertmacro MUI_HEADER_TEXT "AFS Credentials Configuration" "Please choose default options for configuring the AFS Credentials program:" 
+  InstallOptions::dialog $2
+  Pop $R1
+  StrCmp $R1 "cancel" exit
+  StrCmp $R1 "back" done
+  StrCmp $R1 "success" done
+exit: Quit
+done:
+   
+FunctionEnd
+
+
 ;-------------
 ; Common install routines for each module
 Function AFSCommon.Install
@@ -1866,75 +2446,6 @@ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenAFS" "
 
 FunctionEnd
 
-; This code is all needed in v2.0b3 to handle the /S switch...
-!ifdef v2.0b3
-; Check if install should be silent
-Function IsSilent
-  Push $0
-  Push $CMDLINE
-  Push "/S"
-  Call StrStr
-  Pop $0
-  StrCpy $0 $0 3
-  StrCmp $0 "/S" silent
-  StrCmp $0 "/S " silent
-    StrCpy $0 0
-    Goto notsilent
-  silent: StrCpy $0 1
-  notsilent: Exch $0
-FunctionEnd
-
-
-; Check if uninstall should be silent
-Function un.IsSilent
-  Push $0
-  Push $CMDLINE
-  Push "/S"
-  Call un.StrStr
-  Pop $0
-  StrCpy $0 $0 3
-  StrCmp $0 "/S" silent
-  StrCmp $0 "/S " silent
-    StrCpy $0 0
-    Goto notsilent
-  silent: StrCpy $0 1
-  notsilent: Exch $0
-FunctionEnd
-
-
-
-; StrStr function
-Function 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
-!endif
-; End of specific v2.0b3 code...
-
 
 ;-------------------
 ; Get the currently installed version and place it on the stack
@@ -2028,7 +2539,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
@@ -2056,7 +2567,6 @@ Downgrade:
    Exch $R0
    goto end
    
-   
 NotInstalled:
    StrCpy $R0 "0"
    Exch $R0
@@ -2194,6 +2704,7 @@ end:
 FunctionEnd
 
 
+!ifdef USE_GETPARAMETERS
 ; GetParameters
 ; input, none
 ; output, top of stack (replaces, with e.g. whatever)
@@ -2223,6 +2734,7 @@ Function GetParameters
   Pop $R1
   Exch $R0
 FunctionEnd
+!endif
 
 
 ;Check to see if any AFS component is installed
@@ -2263,61 +2775,121 @@ Function AFSLangFiles
    ; Common files
    SetOutPath "$INSTDIR\Common"
    File "${AFS_CLIENT_BUILDDIR}\afs_config.exe"
-   File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext.dll"
-   File "${AFS_SERVER_BUILDDIR}\afsadminutil.dll"
-   File "${AFS_DESTDIR}\lib\afsauthent.dll"
-   File "${AFS_DESTDIR}\lib\afspthread.dll"
-   File "${AFS_DESTDIR}\lib\afsrpc.dll"
-   File "${AFS_SERVER_BUILDDIR}\afsclientadmin.dll"
-   File "${AFS_SERVER_BUILDDIR}\afsprocmgmt.dll"
-   File "${AFS_SERVER_BUILDDIR}\afsvosadmin.dll"
-   File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib.dll"
-   File "${AFS_SERVER_BUILDDIR}\afsvosadmin.dll"
-   File "${AFS_SERVER_BUILDDIR}\afsbosadmin.dll"
-   File "${AFS_SERVER_BUILDDIR}\afscfgadmin.dll"
-   File "${AFS_SERVER_BUILDDIR}\afskasadmin.dll"
-   File "${AFS_SERVER_BUILDDIR}\afsptsadmin.dll"
+  !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"
+  !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afsadminutil.dll"    "$INSTDIR\Common\afsadminutil.dll"    "$INSTDIR"
+  !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afsclientadmin.dll"  "$INSTDIR\Common\afsclientadmin.dll"  "$INSTDIR" 
+  !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afsprocmgmt.dll"     "$INSTDIR\Common\afsprocmgmt.dll"     "$INSTDIR" 
+  !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afsvosadmin.dll"     "$INSTDIR\Common\afsvosadmin.dll"     "$INSTDIR" 
+  !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\TaAfsAppLib.dll"     "$INSTDIR\Common\TaAfsAppLib.dll"     "$INSTDIR" 
+  !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afsvosadmin.dll"     "$INSTDIR\Common\afsvosadmin.dll"     "$INSTDIR" 
+  !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afsbosadmin.dll"     "$INSTDIR\Common\afsbosadmin.dll"     "$INSTDIR" 
+  !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afscfgadmin.dll"     "$INSTDIR\Common\afscfgadmin.dll"     "$INSTDIR" 
+  !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afskasadmin.dll"     "$INSTDIR\Common\afskasadmin.dll"     "$INSTDIR" 
+  !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\afsptsadmin.dll"     "$INSTDIR\Common\afsptsadmin.dll"     "$INSTDIR" 
+
+ SetOutPath "$INSTDIR\Common"
+
 !IFDEF DEBUG
+!IFDEF CL_1500
+   File /oname=vcruntime.msi "${MSVCMSI}"
+   nsExec::Exec 'msiexec /i "$INSTDIR\Common\vcruntime.msi" /passive /norestart'
+   Delete "$INSTDIR\Common\vcruntime.msi"
+!ELSE
+!IFDEF CL_1400
+   File /oname=vcruntime.msi "${MSVCMSI}"
+   nsExec::Exec 'msiexec /i "$INSTDIR\Common\vcruntime.msi" /passive /norestart'
+   Delete "$INSTDIR\Common\vcruntime.msi"
+!ELSE
 !IFDEF CL_1310
-   File "${AFS_WININSTALL_DIR}\msvcr71d.dll"
-   File "${AFS_WININSTALL_DIR}\msvcr71d.pdb"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcr71d.dll" "$INSTDIR\Common\msvcr71d.dll" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcp71d.dll" "$INSTDIR\Common\msvcp71d.dll" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\mfc71d.dll" "$INSTDIR\Common\mfc71d.dll" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71CHS.DLL" "$INSTDIR\Common\MFC71CHS.DLL" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71CHT.DLL" "$INSTDIR\Common\MFC71CHT.DLL" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71DEU.DLL" "$INSTDIR\Common\MFC71DEU.DLL" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71ENU.DLL" "$INSTDIR\Common\MFC71ENU.DLL" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71ESP.DLL" "$INSTDIR\Common\MFC71ESP.DLL" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71FRA.DLL" "$INSTDIR\Common\MFC71FRA.DLL" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71ITA.DLL" "$INSTDIR\Common\MFC71ITA.DLL" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71JPN.DLL" "$INSTDIR\Common\MFC71JPN.DLL" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71KOR.DLL" "$INSTDIR\Common\MFC71KOR.DLL" "$INSTDIR"
 !ELSE
-   File "${AFS_WININSTALL_DIR}\msvcrtd.dll"
-   File "${AFS_WININSTALL_DIR}\msvcrtd.pdb"
+!IFDEF CL_1300
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcr70d.dll" "$INSTDIR\Common\msvcr70d.dll" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcp70d.dll" "$INSTDIR\Common\msvcp70d.dll" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\mfc70d.dll" "$INSTDIR\Common\mfc70d.dll" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70CHS.DLL" "$INSTDIR\Common\MFC70CHS.DLL" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70CHT.DLL" "$INSTDIR\Common\MFC70CHT.DLL" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70DEU.DLL" "$INSTDIR\Common\MFC70DEU.DLL" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70ENU.DLL" "$INSTDIR\Common\MFC70ENU.DLL" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70ESP.DLL" "$INSTDIR\Common\MFC70ESP.DLL" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70FRA.DLL" "$INSTDIR\Common\MFC70FRA.DLL" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70ITA.DLL" "$INSTDIR\Common\MFC70ITA.DLL" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70JPN.DLL" "$INSTDIR\Common\MFC70JPN.DLL" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70KOR.DLL" "$INSTDIR\Common\MFC70KOR.DLL" "$INSTDIR"
+!ELSE
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\mfc42d.dll" "$INSTDIR\Common\mfc42d.dll" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcp60d.dll" "$INSTDIR\Common\msvcp60d.dll" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcrtd.dll" "$INSTDIR\Common\msvcrtd.dll" "$INSTDIR"
+!ENDIF
+!ENDIF
 !ENDIF
+!ENDIF
+!ELSE
+!IFDEF CL_1500
+   File /oname=vcruntime.msi "${MSVCMSI}"
+   nsExec::Exec 'msiexec /i "$INSTDIR\Common\vcruntime.msi" /passive /norestart'
+   Delete "$INSTDIR\Common\vcruntime.msi"
+!ELSE
+!IFDEF CL_1400
+   File /oname=vcruntime.msi "${MSVCMSI}"
+   nsExec::Exec 'msiexec /i "$INSTDIR\Common\vcruntime.msi" /passive /norestart'
+   Delete "$INSTDIR\Common\vcruntime.msi"
 !ELSE
 !IFDEF CL_1310
-   File "${AFS_WININSTALL_DIR}\msvcr71.dll"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\mfc71.dll" "$INSTDIR\Common\mfc71.dll" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcr71.dll" "$INSTDIR\Common\msvcr71.dll" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcp71.dll" "$INSTDIR\Common\msvcp71.dll" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71CHS.DLL" "$INSTDIR\Common\MFC71CHS.DLL" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71CHT.DLL" "$INSTDIR\Common\MFC71CHT.DLL" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71DEU.DLL" "$INSTDIR\Common\MFC71DEU.DLL" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71ENU.DLL" "$INSTDIR\Common\MFC71ENU.DLL" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71ESP.DLL" "$INSTDIR\Common\MFC71ESP.DLL" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71FRA.DLL" "$INSTDIR\Common\MFC71FRA.DLL" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71ITA.DLL" "$INSTDIR\Common\MFC71ITA.DLL" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71JPN.DLL" "$INSTDIR\Common\MFC71JPN.DLL" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71KOR.DLL" "$INSTDIR\Common\MFC71KOR.DLL" "$INSTDIR"
 !ELSE
-   File "${AFS_WININSTALL_DIR}\msvcrt.dll"
+!IFDEF CL_1300
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\mfc70.dll" "$INSTDIR\Common\mfc70.dll" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcr70.dll" "$INSTDIR\Common\msvcr70.dll" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcp70.dll" "$INSTDIR\Common\msvcp70.dll" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70CHS.DLL" "$INSTDIR\Common\MFC70CHS.DLL" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70CHT.DLL" "$INSTDIR\Common\MFC70CHT.DLL" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70DEU.DLL" "$INSTDIR\Common\MFC70DEU.DLL" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70ENU.DLL" "$INSTDIR\Common\MFC70ENU.DLL" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70ESP.DLL" "$INSTDIR\Common\MFC70ESP.DLL" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70FRA.DLL" "$INSTDIR\Common\MFC70FRA.DLL" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70ITA.DLL" "$INSTDIR\Common\MFC70ITA.DLL" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70JPN.DLL" "$INSTDIR\Common\MFC70JPN.DLL" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70KOR.DLL" "$INSTDIR\Common\MFC70KOR.DLL" "$INSTDIR"
+!ELSE
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\mfc42.dll" "$INSTDIR\Common\mfc42.dll" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcp60.dll" "$INSTDIR\Common\msvcp60.dll" "$INSTDIR"
+   !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcrt.dll" "$INSTDIR\Common\msvcrt.dll" "$INSTDIR"
+!ENDIF
+!ENDIF
+!ENDIF   
 !ENDIF
 !ENDIF
-
-!ifdef DEBUG
-   File "${AFS_CLIENT_BUILDDIR}\afs_config.pdb"
-   File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext.pdb"
-   File "${AFS_SERVER_BUILDDIR}\afsadminutil.pdb"
-   File "${AFS_DESTDIR}\lib\afsauthent.pdb"
-   File "${AFS_DESTDIR}\lib\afspthread.pdb"
-   File "${AFS_DESTDIR}\lib\afsrpc.pdb"
-   File "${AFS_SERVER_BUILDDIR}\afsclientadmin.pdb"
-   File "${AFS_SERVER_BUILDDIR}\afsprocmgmt.pdb"
-   File "${AFS_SERVER_BUILDDIR}\afsvosadmin.pdb"
-   File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib.pdb"
-   File "${AFS_SERVER_BUILDDIR}\afsvosadmin.pdb"
-   File "${AFS_SERVER_BUILDDIR}\afsbosadmin.pdb"
-   File "${AFS_SERVER_BUILDDIR}\afscfgadmin.pdb"
-   File "${AFS_SERVER_BUILDDIR}\afskasadmin.pdb"
-   File "${AFS_SERVER_BUILDDIR}\afsptsadmin.pdb"
-!endif
 
    StrCmp $LANGUAGE ${LANG_ENGLISH} DoEnglish
    StrCmp $LANGUAGE ${LANG_GERMAN} DoGerman
    StrCmp $LANGUAGE ${LANG_SPANISH} DoSpanish
    StrCmp $LANGUAGE ${LANG_JAPANESE} DoJapanese
-!ifdef v2.0b4
    StrCmp $LANGUAGE ${LANG_KOREAN} DoKorean
-!endif
    StrCmp $LANGUAGE ${LANG_PORTUGUESEBR} DoPortugueseBR
    StrCmp $LANGUAGE ${LANG_SIMPCHINESE} DoSimpChinese
    StrCmp $LANGUAGE ${LANG_TRADCHINESE} DoTradChinese
@@ -2326,56 +2898,103 @@ DoEnglish:
 
    SetOutPath "$INSTDIR\Documentation"
    File "..\..\doc\install\Documentation\en_US\README.TXT"
+   SetOutPath "$INSTDIR\Documentation\html"
+   File "..\..\doc\install\Documentation\en_US\html\*"
+   SetOutPath "$INSTDIR\Documentation\html\index_files"
+   File "..\..\doc\install\Documentation\en_US\html\index_files\*"
+   SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
+   File "..\..\doc\install\Documentation\en_US\html\ReleaseNotes\*"
+   SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes\logo_files"
+   File "..\..\doc\install\Documentation\en_US\html\ReleaseNotes\logo_files\*"
+   SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes\relnotes_files"
+   File "..\..\doc\install\Documentation\en_US\html\ReleaseNotes\relnotes_files\*"
+
+   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"
-   File "..\..\doc\help\en_US\afs-cc.CNT"
-   File "..\..\doc\help\en_US\afs-cc.hlp"
    File "..\..\doc\help\en_US\afs-light.CNT"
    File "..\..\doc\help\en_US\afs-light.hlp"
    File "..\..\doc\help\en_US\afs-nt.CNT"
    File "..\..\doc\help\en_US\afs-nt.HLP"
+
+   SetOutPath "$INSTDIR\Common"
+   !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\taafscfg.CNT"
    File "..\..\doc\help\en_US\taafscfg.hlp"
    File "..\..\doc\help\en_US\taafssvrmgr.CNT"
    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:
 
    SetOutPath "$INSTDIR\Documentation"
    File "..\..\doc\install\Documentation\de_DE\README.TXT"
+   SetOutPath "$INSTDIR\Documentation\html"
+   File "..\..\doc\install\Documentation\de_DE\html\*"
+   SetOutPath "$INSTDIR\Documentation\html\index_files"
+   ;File "..\..\doc\install\Documentation\de_DE\html\index_files\*"
+   SetOutPath "$INSTDIR\Documentation\html\InstallGd"
+   File "..\..\doc\install\Documentation\de_DE\html\InstallGd\*"
+   ;SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
+   ;File "..\..\doc\install\Documentation\de_DE\html\ReleaseNotes\*"
+   ;SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes\logo_files"
+   ;File "..\..\doc\install\Documentation\de_DE\html\ReleaseNotes\logo_files\*"
+   ;SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes\relnotes_files"
+   ;File "..\..\doc\install\Documentation\de_DE\html\ReleaseNotes\relnotes_files\*"
+
+   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"
-   File "..\..\doc\help\de_DE\afs-cc.CNT"
-   File "..\..\doc\help\de_DE\afs-cc.hlp"
    File "..\..\doc\help\de_DE\afs-light.CNT"
    File "..\..\doc\help\de_DE\afs-light.hlp"
    File "..\..\doc\help\de_DE\afs-nt.CNT"
    File "..\..\doc\help\de_DE\afs-nt.HLP"
+
+   SetOutPath "$INSTDIR\Common"
+   !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\taafscfg.CNT"
    File "..\..\doc\help\de_DE\taafscfg.hlp"
    File "..\..\doc\help\de_DE\taafssvrmgr.CNT"
@@ -2384,117 +3003,198 @@ 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 "${AFS_WININSTALL_DIR}\msvcr71d.dll"
-   File "${AFS_WININSTALL_DIR}\msvcr71d.pdb"
-!ELSE
-   File "${AFS_WININSTALL_DIR}\msvcrtd.dll"
-   File "${AFS_WININSTALL_DIR}\msvcrtd.pdb"
+   ;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
-!endif
    goto done   
 
 DoSpanish:
 
    SetOutPath "$INSTDIR\Documentation"
    File "..\..\doc\install\Documentation\es_ES\README.TXT"
+   SetOutPath "$INSTDIR\Documentation\html"
+   ;File "..\..\doc\install\Documentation\es_ES\html\*"
+   SetOutPath "$INSTDIR\Documentation\html\index_html"
+   ;File "..\..\doc\install\Documentation\es_ES\html\index_files\*"
+   SetOutPath "$INSTDIR\Documentation\html\InstallGd"
+   ;File "..\..\doc\install\Documentation\es_ES\html\InstallGd\*"
+   SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
+   ;File "..\..\doc\install\Documentation\es_ES\html\ReleaseNotes\*"
+   SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes\logo_files"
+   ;File "..\..\doc\install\Documentation\es_ES\html\ReleaseNotes\logo_files\*"
+   SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes\relnotes_files"
+   ;File "..\..\doc\install\Documentation\es_ES\html\ReleaseNotes\relnotes_files\*"
+
+   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"
-   File "..\..\doc\help\es_ES\afs-cc.CNT"
-   File "..\..\doc\help\es_ES\afs-cc.hlp"
    File "..\..\doc\help\es_ES\afs-light.CNT"
    File "..\..\doc\help\es_ES\afs-light.hlp"
    File "..\..\doc\help\es_ES\afs-nt.CNT"
    File "..\..\doc\help\es_ES\afs-nt.HLP"
+
+   SetOutPath "$INSTDIR\Common"
+   !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\taafscfg.CNT"
    File "..\..\doc\help\es_ES\taafscfg.hlp"
    File "..\..\doc\help\es_ES\taafssvrmgr.CNT"
    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:
 
    SetOutPath "$INSTDIR\Documentation"
    File "..\..\doc\install\Documentation\ja_JP\README.TXT"
+   SetOutPath "$INSTDIR\Documentation\html"
+   File "..\..\doc\install\Documentation\ja_JP\html\*"
+   SetOutPath "$INSTDIR\Documentation\html\index_files"
+   ;File "..\..\doc\install\Documentation\ja_JP\html\index_files\*"
+   SetOutPath "$INSTDIR\Documentation\html\InstallGd"
+   File "..\..\doc\install\Documentation\ja_JP\html\InstallGd\*"
+   SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
+   ;File "..\..\doc\install\Documentation\ja_JP\html\ReleaseNotes\*"
+   SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes\logo_files"
+   ;File "..\..\doc\install\Documentation\ja_JP\html\ReleaseNotes\logo_files\*"
+   SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes\relnotes_files"
+   ;File "..\..\doc\install\Documentation\ja_JP\html\ReleaseNotes\relnotes_files\*"
+
+   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"
-   File "..\..\doc\help\ja_JP\afs-cc.CNT"
-   File "..\..\doc\help\ja_JP\afs-cc.hlp"
    File "..\..\doc\help\ja_JP\afs-light.CNT"
    File "..\..\doc\help\ja_JP\afs-light.hlp"
    File "..\..\doc\help\ja_JP\afs-nt.CNT"
    File "..\..\doc\help\ja_JP\afs-nt.HLP"
+
+   SetOutPath "$INSTDIR\Common"
+   !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\taafscfg.CNT"
    File "..\..\doc\help\ja_JP\taafscfg.hlp"
    File "..\..\doc\help\ja_JP\taafssvrmgr.CNT"
    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:
 
    SetOutPath "$INSTDIR\Documentation"
    File "..\..\doc\install\Documentation\ko_KR\README.TXT"
+   SetOutPath "$INSTDIR\Documentation\html"
+   File "..\..\doc\install\Documentation\ko_KR\html\*"
+   SetOutPath "$INSTDIR\Documentation\html\index_files"
+   ;File "..\..\doc\install\Documentation\ko_KR\html\index_files\*"
+   SetOutPath "$INSTDIR\Documentation\html\InstallGd"
+   File "..\..\doc\install\Documentation\ko_KR\html\InstallGd\*"
+   SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
+   File "..\..\doc\install\Documentation\ko_KR\html\ReleaseNotes\*"
+   SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes\logo_files"
+   ;File "..\..\doc\install\Documentation\ko_KR\html\ReleaseNotes\logo_files\*"
+   SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes\relnotes_files"
+   ;File "..\..\doc\install\Documentation\ko_KR\html\ReleaseNotes\relnotes_files\*"
+
+   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"
-   File "..\..\doc\help\ko_KR\afs-cc.CNT"
-   File "..\..\doc\help\ko_KR\afs-cc.hlp"
    File "..\..\doc\help\ko_KR\afs-light.CNT"
    File "..\..\doc\help\ko_KR\afs-light.hlp"
    File "..\..\doc\help\ko_KR\afs-nt.CNT"
    File "..\..\doc\help\ko_KR\afs-nt.HLP"
+
+   SetOutPath "$INSTDIR\Common"
+   !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\taafscfg.CNT"
    File "..\..\doc\help\ko_KR\taafscfg.hlp"
    File "..\..\doc\help\ko_KR\taafssvrmgr.CNT"
    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
 
 
@@ -2502,96 +3202,192 @@ DoPortugueseBR:
 
    SetOutPath "$INSTDIR\Documentation"
    File "..\..\doc\install\Documentation\pt_BR\README.TXT"
+   SetOutPath "$INSTDIR\Documentation\html"
+   File "..\..\doc\install\Documentation\pt_BR\html\*"
+   SetOutPath "$INSTDIR\Documentation\html\index_files"
+   ;File "..\..\doc\install\Documentation\pt_BR\html\index_files\*"
+   SetOutPath "$INSTDIR\Documentation\html\InstallGd"
+   File "..\..\doc\install\Documentation\pt_BR\html\InstallGd\*"
+   SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
+   File "..\..\doc\install\Documentation\pt_BR\html\ReleaseNotes\*"
+   SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes\logo_files"
+   ;File "..\..\doc\install\Documentation\pt_BR\html\ReleaseNotes\logo_files\*"
+   SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes\relnotes_files"
+   ;File "..\..\doc\install\Documentation\pt_BR\html\ReleaseNotes\relnotes_files\*"
+
+   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"
-   File "..\..\doc\help\pt_BR\afs-cc.CNT"
-   File "..\..\doc\help\pt_BR\afs-cc.hlp"
    File "..\..\doc\help\pt_BR\afs-light.CNT"
    File "..\..\doc\help\pt_BR\afs-light.hlp"
    File "..\..\doc\help\pt_BR\afs-nt.CNT"
    File "..\..\doc\help\pt_BR\afs-nt.HLP"
+
+   SetOutPath "$INSTDIR\Common"
+   !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\taafscfg.CNT"
    File "..\..\doc\help\pt_BR\taafscfg.hlp"
    File "..\..\doc\help\pt_BR\taafssvrmgr.CNT"
    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:
 
    SetOutPath "$INSTDIR\Documentation"
    File "..\..\doc\install\Documentation\zh_CN\README.TXT"
+   SetOutPath "$INSTDIR\Documentation\html"
+   File "..\..\doc\install\Documentation\zh_CN\html\*"
+   SetOutPath "$INSTDIR\Documentation\html\index_files"
+   ;File "..\..\doc\install\Documentation\zh_CN\html\index_files\*"
+   SetOutPath "$INSTDIR\Documentation\html\InstallGd"
+   File "..\..\doc\install\Documentation\zh_CN\html\InstallGd\*"
+   SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
+   File "..\..\doc\install\Documentation\zh_CN\html\ReleaseNotes\*"
+   SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes\logo_files"
+   ;File "..\..\doc\install\Documentation\zh_CN\html\ReleaseNotes\logo_files\*"
+   SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes\relnotes_files"
+   ;File "..\..\doc\install\Documentation\zh_CN\html\ReleaseNotes\relnotes_files\*"
+
+   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"
-   File "..\..\doc\help\zh_CN\afs-cc.CNT"
-   File "..\..\doc\help\zh_CN\afs-cc.hlp"
    File "..\..\doc\help\zh_CN\afs-light.CNT"
    File "..\..\doc\help\zh_CN\afs-light.hlp"
    File "..\..\doc\help\zh_CN\afs-nt.CNT"
    File "..\..\doc\help\zh_CN\afs-nt.HLP"
+
+   SetOutPath "$INSTDIR\Common"
+   !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\taafscfg.CNT"
    File "..\..\doc\help\zh_CN\taafscfg.hlp"
    File "..\..\doc\help\zh_CN\taafssvrmgr.CNT"
    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:
 
    SetOutPath "$INSTDIR\Documentation"
    File "..\..\doc\install\Documentation\zh_TW\README.TXT"
+   SetOutPath "$INSTDIR\Documentation\html"
+   File "..\..\doc\install\Documentation\zh_TW\html\*"
+   SetOutPath "$INSTDIR\Documentation\html\index_files"
+   ;File "..\..\doc\install\Documentation\zh_TW\html\index_files\*"
+   SetOutPath "$INSTDIR\Documentation\html\InstallGd"
+   File "..\..\doc\install\Documentation\zh_TW\html\InstallGd\*"
+   SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
+   File "..\..\doc\install\Documentation\zh_TW\html\ReleaseNotes\*"
+   SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes\logo_files"
+   ;File "..\..\doc\install\Documentation\zh_TW\html\ReleaseNotes\logo_files\*"
+   SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes\relnotes_files"
+   ;File "..\..\doc\install\Documentation\zh_TW\html\ReleaseNotes\relnotes_files\*"
+
+   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"
-   File "..\..\doc\help\zh_TW\afs-cc.CNT"
-   File "..\..\doc\help\zh_TW\afs-cc.hlp"
    File "..\..\doc\help\zh_TW\afs-light.CNT"
    File "..\..\doc\help\zh_TW\afs-light.hlp"
    File "..\..\doc\help\zh_TW\afs-nt.CNT"
    File "..\..\doc\help\zh_TW\afs-nt.HLP"
+
+   SetOutPath "$INSTDIR\Common"
+   !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\taafscfg.CNT"
    File "..\..\doc\help\zh_TW\taafscfg.hlp"
    File "..\..\doc\help\zh_TW\taafssvrmgr.CNT"
    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:
+
+  ; Write start menu shortcut
+  SetOutPath "$SMPROGRAMS\OpenAFS"
+  CreateShortCut "$SMPROGRAMS\OpenAFS\Documentation.lnk" "$INSTDIR\Documentation\html\index.htm"
+  
+
 FunctionEnd
 
 
@@ -2604,29 +3400,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
@@ -2641,7 +3472,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
@@ -2652,18 +3487,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
@@ -2674,25 +3514,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
@@ -2705,7 +3554,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
@@ -2719,12 +3569,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.
@@ -2732,62 +3583,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
@@ -2844,18 +3672,21 @@ FunctionEnd
  FunctionEnd
 !endif
 
-!ifdef INSTALL_LOOPBACK
+
+; Installs the loopback adpater and disables it on Windows 2000
 Function afs.InstallMSLoopback
    GetTempFileName $R0
-   File /oname=$R0 "loopback_install.dll"
-   nsExec::Exec "rundll32.exe $R0 doLoopBackEntry quiet"
-   Call GetWindowsVersion
-   Pop $R1
-   StrCmp $R1 "2000" +1 +2
-   nsExec::Exec "rundll32.exe $R0 disableLoopBackEntry"
+   File /oname=$R0 "${AFS_WININSTALL_DIR}\afsloopback.dll"
+   nsExec::Exec "rundll32.exe $R0 doLoopBackEntry AFS 10.254.254.253 255.255.255.252"
    Delete $R0
 FunctionEnd
-!endif
+
+Function afs.isLoopbackInstalled
+   SetOutPath $TEMP
+   File "${AFS_WININSTALL_DIR}\afsloopback.dll"
+   System::Call "$TEMP\afsloopback.dll::IsLoopbackInstalled() i().r11"
+   Delete "$TEMP\afsloopback.dll"
+FunctionEnd
 
 
 ; GetWindowsVersion
@@ -2865,7 +3696,7 @@ FunctionEnd
 ;
 ; Returns on top of stack
 ;
-; Windows Version (95, 98, ME, NT x.x, 2000, XP, 2003)
+; Windows Version (95, 98, ME, NT x.x, 2000, XP, 2003, Vista/2008)
 ; or
 ; '' (Unknown Windows Version)
 ;
@@ -2921,7 +3752,8 @@ Function GetWindowsVersion
 
   StrCmp $R1 '5.0' lbl_winnt_2000
   StrCmp $R1 '5.1' lbl_winnt_XP
-  StrCmp $R1 '5.2' lbl_winnt_2003 lbl_error
+  StrCmp $R1 '5.2' lbl_winnt_2003
+  StrCmp $R1 '6.0' lbl_winnt_vista lbl_error
 
   lbl_winnt_x:
     StrCpy $R0 "NT $R0" 6
@@ -2939,6 +3771,10 @@ Function GetWindowsVersion
     Strcpy $R0 '2003'
   Goto lbl_done
 
+  lbl_winnt_vista:
+    Strcpy $R0 'Vista'
+  Goto lbl_done
+
   lbl_error:
     Strcpy $R0 ''
   lbl_done:
@@ -3064,3 +3900,110 @@ 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
+
+    StrCmp '$REG_DATA_4' "" terminate
+    StrLen $9 '$REG_DATA_4'                 ; Length of third string
+    IntOp $9 $9 + 1                         ; Plus null
+    System::Call "*$2(&t$9 '$REG_DATA_4')"  ; 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
+
+Function CreateDesktopIni
+   WriteIniStr "$INSTDIR\Desktop.ini" ".ShellClassInfo" "IconFile" "client\program\afsd_service.exe"
+   WriteIniStr "$INSTDIR\Desktop.ini" ".ShellClassInfo" "IconIndex" "0"
+   SetFileAttributes "$INSTDIR\Desktop.ini" HIDDEN|SYSTEM
+   SetFileAttributes "$INSTDIR\" READONLY
+FunctionEnd