svn rev #22450: branches/krb5-1-6/src/windows/ installer/nsis/
tlyu@MIT.EDU
tlyu at MIT.EDU
Thu Jul 23 13:55:04 EDT 2009
http://src.mit.edu/fisheye/changelog/krb5/?cs=22450
Commit By: tlyu
Log Message:
ticket: 6535
set eol-style properties
Changed Files:
UU branches/krb5-1-6/src/windows/installer/nsis/kfw-fixed-tagged.nsi
_U branches/krb5-1-6/src/windows/ntsecapitest.c
_U branches/krb5-1-6/src/windows/ntsecapitest.pl
Modified: branches/krb5-1-6/src/windows/installer/nsis/kfw-fixed-tagged.nsi
===================================================================
--- branches/krb5-1-6/src/windows/installer/nsis/kfw-fixed-tagged.nsi 2009-07-23 17:34:35 UTC (rev 22449)
+++ branches/krb5-1-6/src/windows/installer/nsis/kfw-fixed-tagged.nsi 2009-07-23 17:55:04 UTC (rev 22450)
@@ -1,1890 +1,1890 @@
-;-----------------------------------------------------------------
-; KfW defines and functionality
-; Copyright (c) 2004,2005,2006,2007 Massachusetts Institute of Technology
-; Copyright (c) 2006,2007 Secure Endpoints Inc.
-
-!define KFW_VERSION "${KFW_MAJORVERSION}.${KFW_MINORVERSION}.${KFW_PATCHLEVEL}"
-
-!define PROGRAM_NAME "Kerberos for Windows"
-!ifdef RELEASE
-!ifndef DEBUG ; !DEBUG on v2.0b4
-Name "MIT ${PROGRAM_NAME} ${KFW_VERSION}"
-!else ; DEBUG on v2.0b4
-Name "MIT ${PROGRAM_NAME} ${KFW_VERSION} Checked/Debug"
-!endif ; End DEBUG/!DEBUG
-!else
-!ifdef BETA
-!ifndef DEBUG ; !DEBUG on v2.0b4
-Name "MIT ${PROGRAM_NAME} ${KFW_VERSION} Beta ${BETA}"
-!else ; DEBUG on v2.0b4
-Name "MIT ${PROGRAM_NAME} ${KFW_VERSION} Beta ${BETA} Checked/Debug"
-!endif ; End DEBUG/!DEBUG
-!else
-!ifndef DEBUG ; !DEBUG on v2.0b4
-Name "MIT ${PROGRAM_NAME} ${KFW_VERSION} ${__DATE__} ${__TIME__}"
-!else ; DEBUG on v2.0b4
-Name "MIT ${PROGRAM_NAME} ${KFW_VERSION} ${__DATE__} ${__TIME__} Checked/Debug"
-!endif ; End DEBUG/!DEBUG
-!endif
-!endif
-VIProductVersion "${KFW_MAJORVERSION}.${KFW_MINORVERSION}.${KFW_PATCHLEVEL}.00"
-VIAddVersionKey "ProductName" "${PROGRAM_NAME}"
-VIAddVersionKey "CompanyName" "Massachusetts Institute of Technology"
-VIAddVersionKey "FileVersion" ${VIProductVersion}
-VIAddVersionKey "ProductVersion" "${KFW_MAJORVERSION}.${KFW_MINORVERSION}.${KFW_PATCHLEVEL}.0"
-VIAddVersionKey "FileDescription" "MIT Kerberos for Windows Installer"
-VIAddVersionKey "LegalCopyright" "(C)2004,2005,2006,2007"
-!ifdef DEBUG
-VIAddVersionKey "PrivateBuild" "Checked/Debug"
-!endif ; End DEBUG
-
-
-;--------------------------------
-;Configuration
-
- ;General
- SetCompressor lzma
-!ifndef DEBUG
- OutFile "MITKerberosForWindows.exe"
-!else
- OutFile "MITKerberosForWindows-DEBUG.exe"
-!endif
- SilentInstall normal
- ShowInstDetails show
- XPStyle on
- !define MUI_ICON "kfw.ico"
- !define MUI_UNICON "kfw.ico"
- !define KFW_COMPANY_NAME "Massachusetts Institute of Technology"
- !define KFW_PRODUCT_NAME "${PROGRAM_NAME}"
- !define KFW_REGKEY_ROOT "Software\MIT\Kerberos\"
- !define NIM_REGKEY_ROOT "Software\MIT\NetIDMgr\"
- CRCCheck force
- !define REPLACEDLL_NOREGISTER
-
- ;Folder selection page
- InstallDir "$PROGRAMFILES\MIT\Kerberos" ; Install to shorter path
-
- ;Remember install folder
- InstallDirRegKey HKLM "${KFW_REGKEY_ROOT}" ""
-
- ;Remember the installer language
- !define MUI_LANGDLL_REGISTRY_ROOT "HKLM"
- !define MUI_LANGDLL_REGISTRY_KEY "${KFW_REGKEY_ROOT}"
- !define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language"
-
- ;Where are the files?
- !define KFW_BIN_DIR "${KFW_TARGETDIR}\bin\%cpu%"
- !define KFW_DOC_DIR "${KFW_TARGETDIR}\doc"
- !define KFW_INC_DIR "${KFW_TARGETDIR}\inc"
- !define KFW_LIB_DIR "${KFW_TARGETDIR}\lib\%cpu%"
- !define KFW_SAMPLE_DIR "${KFW_TARGETDIR}\sample"
- !define KFW_INSTALL_DIR "${KFW_TARGETDIR}\install"
- !define SYSTEMDIR "$%SystemRoot%\System32"
- !define SXSDIR1 "$%SystemRoot%\WinSxS\x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_5490cd9f"
- !define SXSLANG "c:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.MFCLOC"
- !ifdef X86
- !define SXSDIR2 "$%SystemRoot%\WinSxS\x86_Microsoft.VC80.DebugMFC_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_c8452471"
- !define SXSMAND "$%SystemRoot%\WinSxS\Manifests"
- !else
- !ifdef AMD64
- !define SXSDIR2 "$%SystemRoot%\WinSxS\amd64_Microsoft.VC80.DebugMFC_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_57812684"
- !endif
- !endif
-
- !define REDISTDIR "c:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\vcredist_x86"
-
-;--------------------------------
-;Modern UI Configuration
-
- !define MUI_LICENSEPAGE
- !define MUI_CUSTOMPAGECOMMANDS
- !define MUI_WELCOMEPAGE
- !define MUI_COMPONENTSPAGE
- !define MUI_COMPONENTSPAGE_SMALLDESC
- !define MUI_DIRECTORYPAGE
-
- !define MUI_ABORTWARNING
- !define MUI_FINISHPAGE
-
- !define MUI_UNINSTALLER
- !define MUI_UNCONFIRMPAGE
-
-
- !insertmacro MUI_PAGE_WELCOME
- !insertmacro MUI_PAGE_LICENSE "Licenses.rtf"
- !insertmacro MUI_PAGE_COMPONENTS
- !insertmacro MUI_PAGE_DIRECTORY
- Page custom KFWPageGetConfigFiles
- Page custom KFWPageGetStartupConfig
- !insertmacro MUI_PAGE_INSTFILES
- !insertmacro MUI_PAGE_FINISH
-
-;--------------------------------
-;Languages
-
- !insertmacro MUI_LANGUAGE "English"
-
-;--------------------------------
-;Language Strings
-
- ;Descriptions
- LangString DESC_SecCopyUI ${LANG_ENGLISH} "${PROGRAM_NAME}: English"
-
- LangString DESC_secClient ${LANG_ENGLISH} "Client: Allows you to utilize MIT Kerberos from your Windows PC."
-
- LangString DESC_secDebug ${LANG_ENGLISH} "Debug Symbols: Used for debugging problems with MIT Kerberos for Windows"
-
- LangString DESC_secSDK ${LANG_ENGLISH} "SDK: Allows you to build MIT Kerberos aware applications."
-
- LangString DESC_secDocs ${LANG_ENGLISH} "Documentation: Release Notes and User Manuals."
-
-; Popup error messages
- LangString RealmNameError ${LANG_ENGLISH} "You must specify a realm name for your client to use."
-
- LangString ConfigFileError ${LANG_ENGLISH} "You must specify a valid configuration file location from which files can be copied during the install"
-
- LangString URLError ${LANG_ENGLISH} "You must specify a URL if you choose the option to download the config files."
-
-; Upgrade/re-install strings
- LangString UPGRADE_CLIENT ${LANG_ENGLISH} "Upgrade Kerberos Client"
- LangString REINSTALL_CLIENT ${LANG_ENGLISH} "Re-install Kerberos Client"
- LangString DOWNGRADE_CLIENT ${LANG_ENGLISH} "Downgrade Kerberos Client"
-
- LangString UPGRADE_SDK ${LANG_ENGLISH} "Upgrade Kerberos SDK"
- LangString REINSTALL_SDK ${LANG_ENGLISH} "Re-install Kerberos SDK"
- LangString DOWNGRADE_SDK ${LANG_ENGLISH} "Downgrade Kerberos SDK"
-
- LangString UPGRADE_DOCS ${LANG_ENGLISH} "Upgrade Kerberos Documentation"
- LangString REINSTALL_DOCS ${LANG_ENGLISH} "Re-install Kerberos Documentation"
- LangString DOWNGRADE_DOCS ${LANG_ENGLISH} "Downgrade Kerberos Documentation"
-
- ReserveFile "${KFW_CONFIG_DIR}\sample\krb.con"
- ReserveFile "${KFW_CONFIG_DIR}\sample\krbrealm.con"
- ReserveFile "${KFW_CONFIG_DIR}\sample\krb5.ini"
- !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS ;InstallOptions plug-in
- !insertmacro MUI_RESERVEFILE_LANGDLL ;Language selection dialog
-
-;--------------------------------
-;Reserve Files
-
- ;Things that need to be extracted on first (keep these lines before any File command!)
- ;Only useful for BZIP2 compression
- !insertmacro MUI_RESERVEFILE_LANGDLL
-
-;--------------------------------
-; Load Macros
-!include "utils.nsi"
-
-;--------------------------------
-;Installer Sections
-
-;----------------------
-; Kerberos for Windows CLIENT
-Section "KfW Client" secClient
-
- SetShellVarContext all
- ; Stop any running services or we can't replace the files
- ; Stop the running processes
- GetTempFileName $R0
- File /oname=$R0 "Killer.exe"
- nsExec::Exec '$R0 netidmgr.exe'
- nsExec::Exec '$R0 leash32.exe'
- nsExec::Exec '$R0 krbcc%WL%s.exe'
- nsExec::Exec '$R0 k95.exe'
- nsExec::Exec '$R0 k95g.exe'
- nsExec::Exec '$R0 krb5.exe'
- nsExec::Exec '$R0 gss.exe'
- nsExec::Exec '$R0 afscreds.exe'
-
- RMDir /r "$INSTDIR\bin"
-
- ; Do client components
- SetOutPath "$INSTDIR\bin"
- !insertmacro ReplaceDLL "${KFW_BIN_DIR}\comerr%WL%.dll" "$INSTDIR\bin\comerr%WL%.dll" "$INSTDIR"
- !insertmacro ReplaceDLL "${KFW_BIN_DIR}\gss.exe" "$INSTDIR\bin\gss.exe" "$INSTDIR"
- !insertmacro ReplaceDLL "${KFW_BIN_DIR}\gss-client.exe" "$INSTDIR\bin\gss-client.exe" "$INSTDIR"
- !insertmacro ReplaceDLL "${KFW_BIN_DIR}\gss-server.exe" "$INSTDIR\bin\gss-server.exe" "$INSTDIR"
- !insertmacro ReplaceDLL "${KFW_BIN_DIR}\gssapi%WL%.dll" "$INSTDIR\bin\gssapi%WL%.dll" "$INSTDIR"
- ;!insertmacro ReplaceDLL "${KFW_BIN_DIR}\k524init.exe" "$INSTDIR\bin\k524init.exe" "$INSTDIR"
- !insertmacro ReplaceDLL "${KFW_BIN_DIR}\kdestroy.exe" "$INSTDIR\bin\kdestroy.exe" "$INSTDIR"
- !insertmacro ReplaceDLL "${KFW_BIN_DIR}\kinit.exe" "$INSTDIR\bin\kinit.exe" "$INSTDIR"
- !insertmacro ReplaceDLL "${KFW_BIN_DIR}\klist.exe" "$INSTDIR\bin\klist.exe" "$INSTDIR"
- !insertmacro ReplaceDLL "${KFW_BIN_DIR}\kpasswd.exe" "$INSTDIR\bin\kpasswd.exe" "$INSTDIR"
- !insertmacro ReplaceDLL "${KFW_BIN_DIR}\kvno.exe" "$INSTDIR\bin\kvno.exe" "$INSTDIR"
- !insertmacro ReplaceDLL "${KFW_BIN_DIR}\krb5_%WL%.dll" "$INSTDIR\bin\krb5_%WL%.dll" "$INSTDIR"
- !insertmacro ReplaceDLL "${KFW_BIN_DIR}\k5sprt%WL%.dll" "$INSTDIR\bin\k5sprt%WL%.dll" "$INSTDIR"
- ;!insertmacro ReplaceDLL "${KFW_BIN_DIR}\krb524.dll" "$INSTDIR\bin\krb524.dll" "$INSTDIR"
- !insertmacro ReplaceDLL "${KFW_BIN_DIR}\krbcc%WL%.dll" "$INSTDIR\bin\krbcc%WL%.dll" "$INSTDIR"
- !insertmacro ReplaceDLL "${KFW_BIN_DIR}\krbcc%WL%s.exe" "$INSTDIR\bin\krbcc%WL%s.exe" "$INSTDIR"
- !insertmacro ReplaceDLL "${KFW_BIN_DIR}\netidmgr.chm" "$INSTDIR\bin\netidmgr.chm" "$INSTDIR"
- !insertmacro ReplaceDLL "${KFW_BIN_DIR}\krb5cred.dll" "$INSTDIR\bin\krb5cred.dll" "$INSTDIR"
- !insertmacro ReplaceDLL "${KFW_BIN_DIR}\krb5cred_en_us.dll" "$INSTDIR\bin\krb5cred_en_us.dll" "$INSTDIR"
- !insertmacro ReplaceDLL "${KFW_BIN_DIR}\leashw%WL%.dll" "$INSTDIR\bin\leashw%WL%.dll" "$INSTDIR"
- !insertmacro ReplaceDLL "${KFW_BIN_DIR}\ms2mit.exe" "$INSTDIR\bin\ms2mit.exe" "$INSTDIR"
- !insertmacro ReplaceDLL "${KFW_BIN_DIR}\mit2ms.exe" "$INSTDIR\bin\mit2ms.exe" "$INSTDIR"
- !insertmacro ReplaceDLL "${KFW_BIN_DIR}\kcpytkt.exe" "$INSTDIR\bin\kcpytkt.exe" "$INSTDIR"
- !insertmacro ReplaceDLL "${KFW_BIN_DIR}\kdeltkt.exe" "$INSTDIR\bin\kdeltkt.exe" "$INSTDIR"
- !insertmacro ReplaceDLL "${KFW_BIN_DIR}\wshelp%WL%.dll" "$INSTDIR\bin\wshelp%WL%.dll" "$INSTDIR"
- !insertmacro ReplaceDLL "${KFW_BIN_DIR}\xpprof%WL%.dll" "$INSTDIR\bin\xpprof%WL%.dll" "$INSTDIR"
-
- Call GetWindowsVersion
- Pop $R0
- StrCmp $R0 "2000" nid_inst2000
- !insertmacro ReplaceDLL "${KFW_BIN_DIR}\netidmgr.exe" "$INSTDIR\bin\netidmgr.exe" "$INSTDIR"
- !insertmacro ReplaceDLL "${KFW_BIN_DIR}\nidmgr%WL%.dll" "$INSTDIR\bin\nidmgr%WL%.dll" "$INSTDIR"
- goto nid_done
-nid_inst2000:
- !insertmacro ReplaceDLL "${KFW_BIN_DIR}\W2K\netidmgr.exe" "$INSTDIR\bin\netidmgr.exe" "$INSTDIR"
- !insertmacro ReplaceDLL "${KFW_BIN_DIR}\W2K\nidmgr%WL%.dll" "$INSTDIR\bin\nidmgr%WL%.dll" "$INSTDIR"
-nid_done:
-
-!ifdef DEBUG
-!IFDEF CL_1400
- !insertmacro ReplaceDLL "${SXSDIR1}\msvcr80d.dll" "$INSTDIR\bin\msvcr80d.dll" "$INSTDIR"
- !insertmacro ReplaceDLL "${SXSDIR1}\msvcp80d.dll" "$INSTDIR\bin\msvcp80d.dll" "$INSTDIR"
- !insertmacro ReplaceDLL "${SXSDIR2}\mfc80d.dll" "$INSTDIR\bin\mfc80d.dll" "$INSTDIR"
- !insertmacro ReplaceDLL "${SXSLANG}\MFC80CHS.DLL" "$INSTDIR\bin\MFC80CHS.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SXSLANG}\MFC80CHT.DLL" "$INSTDIR\bin\MFC80CHT.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SXSLANG}\MFC80DEU.DLL" "$INSTDIR\bin\MFC80DEU.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SXSLANG}\MFC80ENU.DLL" "$INSTDIR\bin\MFC80ENU.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SXSLANG}\MFC80ESP.DLL" "$INSTDIR\bin\MFC80ESP.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SXSLANG}\MFC80FRA.DLL" "$INSTDIR\bin\MFC80FRA.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SXSLANG}\MFC80ITA.DLL" "$INSTDIR\bin\MFC80ITA.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SXSLANG}\MFC80JPN.DLL" "$INSTDIR\bin\MFC80JPN.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SXSLANG}\MFC80KOR.DLL" "$INSTDIR\bin\MFC80KOR.DLL" "$INSTDIR"
- !IFDEF X86
- !insertmacro ReplaceDLL "${SXSMAND}\x86_Microsoft.VC80.DebugMFC_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_257740a4.manifest" "$INSTDIR\bin\x86_Microsoft.VC80.DebugMFC_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_257740a4.manifest" "$INSTDIR"
- !ELSE
- !IFDEF AMD64
- !insertmacro ReplaceDLL "${SXSMAND}\AMD64_Microsoft.VC80.DebugMFC_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_257740a4.manifest" "$INSTDIR\bin\AMD64_Microsoft.VC80.DebugMFC_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_257740a4.manifest" "$INSTDIR"
- !ENDIF
- !ENDIF
-!ELSE
-!IFDEF CL_1310
- !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcr71d.dll" "$INSTDIR\bin\msvcr71d.dll" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcp71d.dll" "$INSTDIR\bin\msvcp71d.dll" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\mfc71d.dll" "$INSTDIR\bin\mfc71d.dll" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71CHS.DLL" "$INSTDIR\bin\MFC71CHS.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71CHT.DLL" "$INSTDIR\bin\MFC71CHT.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71DEU.DLL" "$INSTDIR\bin\MFC71DEU.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71ENU.DLL" "$INSTDIR\bin\MFC71ENU.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71ESP.DLL" "$INSTDIR\bin\MFC71ESP.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71FRA.DLL" "$INSTDIR\bin\MFC71FRA.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71ITA.DLL" "$INSTDIR\bin\MFC71ITA.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71JPN.DLL" "$INSTDIR\bin\MFC71JPN.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71KOR.DLL" "$INSTDIR\bin\MFC71KOR.DLL" "$INSTDIR"
-!ELSE
-!IFDEF CL_1300
- !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcr70d.dll" "$INSTDIR\bin\msvcr70d.dll" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcp70d.dll" "$INSTDIR\bin\msvcp70d.dll" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\mfc70d.dll" "$INSTDIR\bin\mfc70d.dll" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70CHS.DLL" "$INSTDIR\bin\MFC70CHS.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70CHT.DLL" "$INSTDIR\bin\MFC70CHT.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70DEU.DLL" "$INSTDIR\bin\MFC70DEU.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70ENU.DLL" "$INSTDIR\bin\MFC70ENU.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70ESP.DLL" "$INSTDIR\bin\MFC70ESP.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70FRA.DLL" "$INSTDIR\bin\MFC70FRA.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70ITA.DLL" "$INSTDIR\bin\MFC70ITA.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70JPN.DLL" "$INSTDIR\bin\MFC70JPN.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70KOR.DLL" "$INSTDIR\bin\MFC70KOR.DLL" "$INSTDIR"
-!ELSE
- !insertmacro ReplaceDLL "${SYSTEMDIR}\mfc42d.dll" "$INSTDIR\bin\mfc42d.dll" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcp60d.dll" "$INSTDIR\bin\msvcp60d.dll" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcrtd.dll" "$INSTDIR\bin\msvcrtd.dll" "$INSTDIR"
-!ENDIF
-!ENDIF
-!ENDIF
-!ELSE
-;!IFDEF CL_1400
-; GetTempFileName $R0
-; File /oname=$R0 '${REDISTDIR}\vcredist_x86.exe'
-; nsExec::Exec '$R0'
-;!ELSE
-!IFDEF CL_1310
- !insertmacro ReplaceDLL "${SYSTEMDIR}\mfc71.dll" "$INSTDIR\bin\mfc71.dll" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcr71.dll" "$INSTDIR\bin\msvcr71.dll" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcp71.dll" "$INSTDIR\bin\msvcp71.dll" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71CHS.DLL" "$INSTDIR\bin\MFC71CHS.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71CHT.DLL" "$INSTDIR\bin\MFC71CHT.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71DEU.DLL" "$INSTDIR\bin\MFC71DEU.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71ENU.DLL" "$INSTDIR\bin\MFC71ENU.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71ESP.DLL" "$INSTDIR\bin\MFC71ESP.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71FRA.DLL" "$INSTDIR\bin\MFC71FRA.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71ITA.DLL" "$INSTDIR\bin\MFC71ITA.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71JPN.DLL" "$INSTDIR\bin\MFC71JPN.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71KOR.DLL" "$INSTDIR\bin\MFC71KOR.DLL" "$INSTDIR"
-!ELSE
-!IFDEF CL_1300
- !insertmacro ReplaceDLL "${SYSTEMDIR}\mfc70.dll" "$INSTDIR\bin\mfc70.dll" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcr70.dll" "$INSTDIR\bin\msvcr70.dll" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcp70.dll" "$INSTDIR\bin\msvcp70.dll" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70CHS.DLL" "$INSTDIR\bin\MFC70CHS.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70CHT.DLL" "$INSTDIR\bin\MFC70CHT.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70DEU.DLL" "$INSTDIR\bin\MFC70DEU.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70ENU.DLL" "$INSTDIR\bin\MFC70ENU.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70ESP.DLL" "$INSTDIR\bin\MFC70ESP.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70FRA.DLL" "$INSTDIR\bin\MFC70FRA.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70ITA.DLL" "$INSTDIR\bin\MFC70ITA.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70JPN.DLL" "$INSTDIR\bin\MFC70JPN.DLL" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70KOR.DLL" "$INSTDIR\bin\MFC70KOR.DLL" "$INSTDIR"
-!ELSE
- !insertmacro ReplaceDLL "${SYSTEMDIR}\mfc42.dll" "$INSTDIR\bin\mfc42.dll" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcp60.dll" "$INSTDIR\bin\msvcp60.dll" "$INSTDIR"
- !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcrt.dll" "$INSTDIR\bin\msvcrt.dll" "$INSTDIR"
-!ENDIF
-!ENDIF
-;!ENDIF
-!ENDIF
- !insertmacro ReplaceDLL "${SYSTEMDIR}\psapi.dll" "$INSTDIR\bin\psapi.dll" "$INSTDIR"
-
- ; Do WINDOWSDIR components
- ;SetOutPath "$WINDOWSDIR"
-!ifdef DEBUG
-!endif
-
- ; Do Windows SYSDIR (Control panel)
- SetOutPath "$SYSDIR"
- !insertmacro ReplaceDLL "${KFW_BIN_DIR}\kfwlogon.dll" "$SYSDIR\kfwlogon.dll" "$INSTDIR"
- File "${KFW_BIN_DIR}\kfwcpcc.exe"
-
- ; Get Kerberos config files
- Call kfw.GetConfigFiles
-
- Call KFWCommon.Install
-
- ; KfW Reg entries
- DeleteRegKey HKLM "${KFW_REGKEY_ROOT}\Client\CurrentVersion"
- WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Client\CurrentVersion" "VersionString" ${KFW_VERSION}
- WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Client\CurrentVersion" "Title" "KfW"
- WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Client\CurrentVersion" "Description" "${PROGRAM_NAME}"
- WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Client\CurrentVersion" "PathName" "$INSTDIR"
- WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Client\CurrentVersion" "Software Type" "Authentication"
- WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\Client\CurrentVersion" "MajorVersion" ${KFW_MAJORVERSION}
- WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\Client\CurrentVersion" "MinorVersion" ${KFW_MINORVERSION}
- WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\Client\CurrentVersion" "PatchLevel" ${KFW_PATCHLEVEL}
-
- DeleteRegKey HKLM "${KFW_REGKEY_ROOT}\Client\${KFW_VERSION}"
- WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Client\${KFW_VERSION}" "VersionString" ${KFW_VERSION}
- WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Client\${KFW_VERSION}" "Title" "KfW"
- WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Client\${KFW_VERSION}" "Description" "${PROGRAM_NAME}"
- WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Client\${KFW_VERSION}" "PathName" "$INSTDIR"
- WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Client\${KFW_VERSION}" "Software Type" "Authentication"
- WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\Client\${KFW_VERSION}" "MajorVersion" ${KFW_MAJORVERSION}
- WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\Client\${KFW_VERSION}" "MinorVersion" ${KFW_MINORVERSION}
- WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\Client\${KFW_VERSION}" "PatchLevel" ${KFW_PATCHLEVEL}
-
- ; Daemon entries
- WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\MIT Kerberos" "" ""
- WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\MIT Kerberos\NetworkProvider" "ProviderPath" "$SYSDIR\kfwlogon.dll"
- WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\MIT Kerberos\NetworkProvider" "AuthentProviderPath" "$SYSDIR\kfwlogon.dll"
- WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\MIT Kerberos\NetworkProvider" "Class" 2
- WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\MIT Kerberos\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"
- WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\MIT Kerberos\NetworkProvider" "Name" "MIT Kerberos"
-
- ; WinLogon Event Notification
- WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\WinLogon\Notify\MIT_KFW" "Asynchronous" 0
- WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\WinLogon\Notify\MIT_KFW" "Impersonate" 0
- WriteRegStr HKLM "Software\Microsoft\Windows NT\CurrentVersion\WinLogon\Notify\MIT_KFW" "DLLName" "kfwlogon.dll"
- WriteRegStr HKLM "Software\Microsoft\Windows NT\CurrentVersion\WinLogon\Notify\MIT_KFW" "Logon" "KFW_Logon_Event"
-
- ; NetIdMgr Reg entries
- WriteRegStr HKLM "Software\MIT\NetIDMgr\PluginManager\Modules\MITKrb5" "ImagePath" "$INSTDIR\bin\krb5cred.dll"
- WriteRegStr HKLM "Software\MIT\NetIDMgr\PluginManager\Modules\MITKrb5" "PluginList" "Krb5Cred,Krb5Ident"
-
- WriteRegStr HKLM "Software\MIT\NetIDMgr\PluginManager\Plugins\Krb5Cred" "Module" "MITKrb5"
- WriteRegStr HKLM "Software\MIT\NetIDMgr\PluginManager\Plugins\Krb5Cred" "Description" "Kerberos v5 Credentials Provider"
- WriteRegDWORD HKLM "Software\MIT\NetIDMgr\PluginManager\Plugins\Krb5Cred" "Type" 1
- WriteRegDWORD HKLM "Software\MIT\NetIDMgr\PluginManager\Plugins\Krb5Cred" "Flags" 0
-
- WriteRegStr HKLM "Software\MIT\NetIDMgr\PluginManager\Plugins\Krb5Ident" "Module" "MITKrb5"
- WriteRegStr HKLM "Software\MIT\NetIDMgr\PluginManager\Plugins\Krb5Ident" "Description" "Kerberos v5 Identity Provider"
- WriteRegStr HKLM "Software\MIT\NetIDMgr\PluginManager\Plugins\Krb5Ident" "Dependencies" "Krb5Cred"
- WriteRegDWORD HKLM "Software\MIT\NetIDMgr\PluginManager\Plugins\Krb5Ident" "Type" 2
- WriteRegDWORD HKLM "Software\MIT\NetIDMgr\PluginManager\Plugins\Krb5Ident" "Flags" 0
-
- ;Write start menu entries
- CreateDirectory "$SMPROGRAMS\${PROGRAM_NAME}"
- SetOutPath "$INSTDIR\bin"
- CreateShortCut "$SMPROGRAMS\${PROGRAM_NAME}\Uninstall ${PROGRAM_NAME}.lnk" "$INSTDIR\Uninstall.exe"
-
- ReadINIStr $R0 $1 "Field 2" "State" ; startup
-
- CreateShortCut "$SMPROGRAMS\${PROGRAM_NAME}\Network Identity Manager.lnk" "$INSTDIR\bin\netidmgr.exe" "" "$INSTDIR\bin\netidmgr.exe"
-
-startshort:
- StrCmp $R0 "0" nostart
- CreateShortCut "$SMSTARTUP\Network Identity Manager.lnk" "$INSTDIR\bin\netidmgr.exe" "" "$INSTDIR\bin\netidmgr.exe" 0 SW_SHOWMINIMIZED
- goto checkconflicts
-
-nostart:
- Delete "$SMSTARTUP\Network Identity Manager.lnk"
-
-checkconflicts:
- Call GetSystemPath
- Push "krb5_%WL%.dll"
- Call SearchPath
- Pop $R0
- StrCmp $R0 "" addpath
-
- Push $R0
- Call GetParent
- Pop $R0
- StrCmp $R0 "$INSTDIR\bin" addpath
- MessageBox MB_OK|MB_ICONINFORMATION|MB_TOPMOST "A previous installation of MIT Kerberos for Windows binaries has been found in folder $R0. This may interfere with the use of the current installation."
-
-addpath:
- ; Add kfw bin to path
- Push "$INSTDIR\bin"
- Call AddToSystemPath
-
- Call GetWindowsVersion
- Pop $R0
- StrCmp $R0 "2003" addAllowTgtKey
- StrCmp $R0 "2000" addAllowTgtKey
- StrCmp $R0 "XP" addAllowTgtKey
- goto skipAllowTgtKey
-
-addAllowTgtKey:
- ReadRegDWORD $R0 HKLM "SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters" "AllowTGTSessionKey"
- WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\Client\${KFW_VERSION}" "AllowTGTSessionKeyBackup" $R0
- WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters" "AllowTGTSessionKey" "1"
- ReadRegDWORD $R0 HKLM "SYSTEM\CurrentControlSet\Control\Lsa\Kerberos" "AllowTGTSessionKey"
- WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\Client\${KFW_VERSION}" "AllowTGTSessionKeyBackup2" $R0
- WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Control\Lsa\Kerberos" "AllowTGTSessionKey" "1"
-skipAllowTgtKey:
-
- ; The following are keys added for Terminal Server compatibility
- ; http://support.microsoft.com/default.aspx?scid=kb;EN-US;186499
- WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\netidmgr" "Flags" 0x408
- WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\kinit" "Flags" 0x408
- WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\klist" "Flags" 0x408
- WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\kdestroy" "Flags" 0x408
- WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\gss" "Flags" 0x408
- WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\gss-client" "Flags" 0x408
- WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\gss-server" "Flags" 0x408
- ;WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\k524init" "Flags" 0x408
- WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\kpasswd" "Flags" 0x408
- WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\kvno" "Flags" 0x408
- WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\ms2mit" "Flags" 0x408
- WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\mit2ms" "Flags" 0x408
- WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\mit2ms" "Flags" 0x408
- WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\kcpytkt" "Flags" 0x408
- WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\kdeltkt" "Flags" 0x408
- WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\k95" "Flags" 0x408
- WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\k95g" "Flags" 0x408
-
-SectionEnd
-
-Section "Debug Symbols" secDebug
-
- SetOutPath "$INSTDIR\bin"
- File "${KFW_BIN_DIR}\comerr%WL%.pdb"
- File "${KFW_BIN_DIR}\gss.pdb"
- File "${KFW_BIN_DIR}\gss-client.pdb"
- File "${KFW_BIN_DIR}\gss-server.pdb"
- File "${KFW_BIN_DIR}\gssapi%WL%.pdb"
- ;File "${KFW_BIN_DIR}\k524init.pdb"
- File "${KFW_BIN_DIR}\kdestroy.pdb"
- File "${KFW_BIN_DIR}\kinit.pdb"
- File "${KFW_BIN_DIR}\klist.pdb"
- File "${KFW_BIN_DIR}\kpasswd.pdb"
- File "${KFW_BIN_DIR}\kvno.pdb"
- File "${KFW_BIN_DIR}\krb5_%WL%.pdb"
- File "${KFW_BIN_DIR}\k5sprt%WL%.pdb"
- ;File "${KFW_BIN_DIR}\krb524.pdb"
- File "${KFW_BIN_DIR}\krbcc%WL%.pdb"
- File "${KFW_BIN_DIR}\krbcc%WL%s.pdb"
- File "${KFW_BIN_DIR}\leashw%WL%.pdb"
- File "${KFW_BIN_DIR}\krb5cred.pdb"
- File "${KFW_BIN_DIR}\ms2mit.pdb"
- File "${KFW_BIN_DIR}\mit2ms.pdb"
- File "${KFW_BIN_DIR}\kcpytkt.pdb"
- File "${KFW_BIN_DIR}\kdeltkt.pdb"
- File "${KFW_BIN_DIR}\wshelp%WL%.pdb"
- File "${KFW_BIN_DIR}\xpprof%WL%.pdb"
-
- Call GetWindowsVersion
- Pop $R0
- StrCmp $R0 "2000" nidpdb_inst2000
- File "${KFW_BIN_DIR}\netidmgr.pdb"
- File "${KFW_BIN_DIR}\nidmgr%WL%.pdb"
- goto nidpdb_done
-nidpdb_inst2000:
- File "${KFW_BIN_DIR}\W2K\netidmgr.pdb"
- File "${KFW_BIN_DIR}\W2K\nidmgr%WL%.pdb"
-nidpdb_done:
-
-!IFDEF DEBUG
-!IFDEF CL_1400
-!IFDEF X86
- File "$%SystemRoot%\symbols\dll\msvcr80d.i386.pdb"
- File "$%SystemRoot%\symbols\dll\msvcp80d.i386.pdb"
- File "$%SystemRoot%\symbols\dll\mfc80d.i386.pdb"
-!ELSE
-!IFDEF AMD64
- File "$%SystemRoot%\symbols\dll\msvcr80d.AMD64.pdb"
- File "$%SystemRoot%\symbols\dll\msvcp80d.AMD64.pdb"
- File "$%SystemRoot%\symbols\dll\mfc80d.AMD64.pdb"
-!ENDIF ; AMD64
-!ENDIF ; X86
-!ELSE ; NOT CL_1400
-!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 ; DEBUG
-
- SetOutPath "$SYSDIR"
- File "${KFW_BIN_DIR}\kfwlogon.pdb"
- File "${KFW_BIN_DIR}\kfwcpcc.pdb"
-
-SectionEnd
-
-;----------------------
-; Kerberos for Windows SDK
-Section "KfW SDK" secSDK
-
- RMDir /r "$INSTDIR\inc"
- RMDir /r "$INSTDIR\lib"
- RMDir /r "$INSTDIR\install"
- RMDir /r "$INSTDIR\sample"
-
- SetOutPath "$INSTDIR\doc"
- File /r "${KFW_DOC_DIR}\netiddev.chm"
-
- SetOutPath "$INSTDIR\inc\krb5"
- File /r "${KFW_INC_DIR}\krb5\*"
-
- SetOutPath "$INSTDIR\inc\leash"
- File /r "${KFW_INC_DIR}\leash\*"
-
- SetOutPath "$INSTDIR\inc\loadfuncs"
- File /r "${KFW_INC_DIR}\loadfuncs\*"
-
- SetOutPath "$INSTDIR\inc\netidmgr"
- File /r "${KFW_INC_DIR}\netidmgr\*"
-
- SetOutPath "$INSTDIR\inc\wshelper"
- File /r "${KFW_INC_DIR}\wshelper\*"
-
- SetOutPath "$INSTDIR\lib\%cpu%"
- File /r "${KFW_LIB_DIR}\*"
-
- SetOutPath "$INSTDIR\install"
- File /r "${KFW_INSTALL_DIR}\*"
-
- SetOutPath "$INSTDIR\sample"
- File /r "${KFW_SAMPLE_DIR}\*"
-
- CreateShortCut "$SMPROGRAMS\${PROGRAM_NAME}\Network Identity Developer Documentation.lnk" "$INSTDIR\bin\netiddev.chm"
-
- Call KFWCommon.Install
-
- ; KfW Reg entries
- DeleteRegKey HKLM "${KFW_REGKEY_ROOT}\SDK\CurrentVersion"
- WriteRegStr HKLM "${KFW_REGKEY_ROOT}\SDK\CurrentVersion" "VersionString" ${KFW_VERSION}
- WriteRegStr HKLM "${KFW_REGKEY_ROOT}\SDK\CurrentVersion" "Title" "KfW"
- WriteRegStr HKLM "${KFW_REGKEY_ROOT}\SDK\CurrentVersion" "Description" "${PROGRAM_NAME}"
- WriteRegStr HKLM "${KFW_REGKEY_ROOT}\SDK\CurrentVersion" "PathName" "$INSTDIR"
- WriteRegStr HKLM "${KFW_REGKEY_ROOT}\SDK\CurrentVersion" "Software Type" "Authentication"
- WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\SDK\CurrentVersion" "MajorVersion" ${KFW_MAJORVERSION}
- WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\SDK\CurrentVersion" "MinorVersion" ${KFW_MINORVERSION}
- WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\SDK\CurrentVersion" "PatchLevel" ${KFW_PATCHLEVEL}
-
- DeleteRegKey HKLM "${KFW_REGKEY_ROOT}\SDK\${KFW_VERSION}"
- WriteRegStr HKLM "${KFW_REGKEY_ROOT}\SDK\${KFW_VERSION}" "VersionString" ${KFW_VERSION}
- WriteRegStr HKLM "${KFW_REGKEY_ROOT}\SDK\${KFW_VERSION}" "Title" "KfW"
- WriteRegStr HKLM "${KFW_REGKEY_ROOT}\SDK\${KFW_VERSION}" "Description" "${PROGRAM_NAME}"
- WriteRegStr HKLM "${KFW_REGKEY_ROOT}\SDK\${KFW_VERSION}" "PathName" "$INSTDIR"
- WriteRegStr HKLM "${KFW_REGKEY_ROOT}\SDK\${KFW_VERSION}" "Software Type" "Authentication"
- WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\SDK\${KFW_VERSION}" "MajorVersion" ${KFW_MAJORVERSION}
- WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\SDK\${KFW_VERSION}" "MinorVersion" ${KFW_MINORVERSION}
- WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\SDK\${KFW_VERSION}" "PatchLevel" ${KFW_PATCHLEVEL}
- WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\SDK\${KFW_VERSION}" "PatchLevel" ${KFW_PATCHLEVEL}
-
-SectionEnd
-
-;----------------------
-; Kerberos for Windows Documentation
-Section "KfW Documentation" secDocs
-
- RMDir /r "$INSTDIR\doc"
-
- SetOutPath "$INSTDIR\doc"
- File "${KFW_DOC_DIR}\relnotes.html"
- File "${KFW_DOC_DIR}\netidmgr_userdoc.pdf"
-
- Call KFWCommon.Install
-
- ; KfW Reg entries
- DeleteRegKey HKLM "${KFW_REGKEY_ROOT}\Documentation\CurrentVersion"
- WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Documentation\CurrentVersion" "VersionString" ${KFW_VERSION}
- WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Documentation\CurrentVersion" "Title" "KfW"
- WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Documentation\CurrentVersion" "Description" "${PROGRAM_NAME}"
- WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Documentation\CurrentVersion" "PathName" "$INSTDIR"
- WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Documentation\CurrentVersion" "Software Type" "Authentication"
- WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\Documentation\CurrentVersion" "MajorVersion" ${KFW_MAJORVERSION}
- WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\Documentation\CurrentVersion" "MinorVersion" ${KFW_MINORVERSION}
- WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\Documentation\CurrentVersion" "PatchLevel" ${KFW_PATCHLEVEL}
-
- DeleteRegKey HKLM "${KFW_REGKEY_ROOT}\Documentation\${KFW_VERSION}"
- WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Documentation\${KFW_VERSION}" "VersionString" ${KFW_VERSION}
- WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Documentation\${KFW_VERSION}" "Title" "KfW"
- WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Documentation\${KFW_VERSION}" "Description" "${PROGRAM_NAME}"
- WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Documentation\${KFW_VERSION}" "PathName" "$INSTDIR"
- WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Documentation\${KFW_VERSION}" "Software Type" "Authentication"
- WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\Documentation\${KFW_VERSION}" "MajorVersion" ${KFW_MAJORVERSION}
- WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\Documentation\${KFW_VERSION}" "MinorVersion" ${KFW_MINORVERSION}
- WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\Documentation\${KFW_VERSION}" "PatchLevel" ${KFW_PATCHLEVEL}
- WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\Documentation\${KFW_VERSION}" "PatchLevel" ${KFW_PATCHLEVEL}
-
- ;Write start menu entries
- CreateDirectory "$SMPROGRAMS\${PROGRAM_NAME}"
- SetOutPath "$INSTDIR\doc"
- CreateShortCut "$SMPROGRAMS\${PROGRAM_NAME}\Release Notes.lnk" "$INSTDIR\doc\relnotes.html"
- CreateShortCut "$SMPROGRAMS\${PROGRAM_NAME}\Network Identity Manager User Documentation.lnk" "$INSTDIR\doc\netidmgr_userdoc.pdf"
- CreateShortCut "$SMPROGRAMS\${PROGRAM_NAME}\Network Identity Manager Documentation.lnk" "$INSTDIR\bin\netidmgr.chm"
-SectionEnd
-
-;Display the Finish header
-;Insert this macro after the sections if you are not using a finish page
-;!insertmacro MUI_SECTIONS_FINISHHEADER
-
-;--------------------------------
-;Installer Functions
-
-Function .onInit
- !insertmacro MUI_LANGDLL_DISPLAY
-
- ; Set the default install options
- Push $0
-
- Call IsUserAdmin
- Pop $R0
- StrCmp $R0 "true" checkVer
-
- MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST "You must be an administrator of this machine to install this software."
- Abort
-
-checkVer:
- ; Check Version of Windows. Do not install onto Windows 95
- Call GetWindowsVersion
- Pop $R0
- StrCmp $R0 "95" wrongVersion
- StrCmp $R0 "98" wrongVersion
- StrCmp $R0 "ME" wrongVersion
- StrCmp $R0 "NT 4.0" wrongVersion
- goto checkIPHLPAPI
-
-wrongVersion:
- MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST "MIT ${PROGRAM_NAME} requires Microsoft Windows 2000 or higher."
- Abort
-
-checkIPHLPAPI:
- ClearErrors
- ReadEnvStr $R0 "WinDir"
- GetDLLVersion "$R0\System32\iphlpapi.dll" $R1 $R2
- IfErrors +1 +3
- GetDLLVersion "$R0\System\iphlpapi.dll" $R1 $R2
- IfErrors iphlperror
- IntOp $R3 $R2 / 0x00010000
- IntCmpU $R3 1952 iphlpwarning checkprevious checkprevious
-
-iphlperror:
- MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST "MIT ${PROGRAM_NAME} requires Internet Explorer version 5.01 or higher. IPHLPAPI.DLL is missing."
- Abort
-
-iphlpwarning:
- MessageBox MB_OK|MB_ICONINFORMATION|MB_TOPMOST "IPHLPAPI.DLL must be upgraded. Please install Internet Explorer 5.01 or higher."
-
-checkprevious:
- ClearErrors
- ReadRegStr $R0 HKLM \
- "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PROGRAM_NAME}" \
- "DisplayVersion"
- IfErrors testWIX
- StrCmp $R0 "${KFW_VERSION}" contInstall
-
- MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \
- "${PROGRAM_NAME} is already installed. $\n$\nClick `OK` to remove the \
- previous version or `Cancel` to cancel this upgrade or downgrade." \
- IDOK uninstNSIS
- Abort
-
-;Run the uninstaller
-uninstNSIS:
- ReadRegStr $R0 HKLM \
- "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PROGRAM_NAME}" \
- "UninstallString"
- ClearErrors
- ExecWait '$R0 _?=$INSTDIR' ;Do not copy the uninstaller to a temp file
-
- IfErrors no_remove_uninstaller
- ;You can either use Delete /REBOOTOK in the uninstaller or add some code
- ;here to remove the uninstaller. Use a registry key to check
- ;whether the user has chosen to uninstall. If you are using an uninstaller
- ;components page, make sure all sections are uninstalled.
-
- Push $R1
- Call RestartRequired
- Pop $R1
- StrCmp $R1 "1" Restart DoNotRestart
-
-testWIX:
- ClearErrors
- ReadRegStr $R0 HKLM \
- "Software\Microsoft\Windows\CurrentVersion\Uninstall\{FD5B1F41-81BB-4BBC-9F7E-4B971660AE1A}" \
- "DisplayVersion"
- IfErrors testSWRT
-
- MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \
- "${PROGRAM_NAME} is already installed. $\n$\nClick `OK` to remove the \
- previous version or `Cancel` to cancel this installation." \
- IDOK uninstMSI1
- Abort
-
-;Run the uninstaller
-uninstMSI1:
- Call GetWindowsVersion
- Pop $R0
- StrCmp $R0 "2000" uninstMSI1_2000
-
- ClearErrors
- ExecWait 'MSIEXEC /x{FD5B1F41-81BB-4BBC-9F7E-4B971660AE1A} /passive /promptrestart'
-
- IfErrors no_remove_uninstaller
- ;You can either use Delete /REBOOTOK in the uninstaller or add some code
- ;here to remove the uninstaller. Use a registry key to check
- ;whether the user has chosen to uninstall. If you are using an uninstaller
- ;components page, make sure all sections are uninstalled.
-
- Push $R1
- Call RestartRequired
- Pop $R1
- StrCmp $R1 "1" Restart DoNotRestart
-
-uninstMSI1_2000:
- ClearErrors
- ExecWait 'MSIEXEC /x{FD5B1F41-81BB-4BBC-9F7E-4B971660AE1A}'
-
- IfErrors no_remove_uninstaller
- ;You can either use Delete /REBOOTOK in the uninstaller or add some code
- ;here to remove the uninstaller. Use a registry key to check
- ;whether the user has chosen to uninstall. If you are using an uninstaller
- ;components page, make sure all sections are uninstalled.
-
- Push $R1
- Call RestartRequired
- Pop $R1
- StrCmp $R1 "1" Restart DoNotRestart
-
-testSWRT:
- ClearErrors
- ReadRegStr $R0 HKLM \
- "Software\Microsoft\Windows\CurrentVersion\Uninstall\{61211594-AAA1-4A98-A299-757326763CC7}" \
- "DisplayVersion"
- IfErrors testPismere
-
- MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \
- "${PROGRAM_NAME} is already installed. $\n$\nClick `OK` to remove the \
- previous version or `Cancel` to cancel this installation." \
- IDOK uninstMSI2
- Abort
-
-;Run the uninstaller
-uninstMSI2:
- Call GetWindowsVersion
- Pop $R0
- StrCmp $R0 "2000" uninstMSI2_2000
-
- ClearErrors
- ExecWait 'MSIEXEC /x{61211594-AAA1-4A98-A299-757326763CC7} /passive /promptrestart'
-
- IfErrors no_remove_uninstaller
- ;You can either use Delete /REBOOTOK in the uninstaller or add some code
- ;here to remove the uninstaller. Use a registry key to check
- ;whether the user has chosen to uninstall. If you are using an uninstaller
- ;components page, make sure all sections are uninstalled.
-
- Push $R1
- Call RestartRequired
- Pop $R1
- StrCmp $R1 "1" Restart DoNotRestart
-
-uninstMSI2_2000:
- ClearErrors
- ExecWait 'MSIEXEC /x{61211594-AAA1-4A98-A299-757326763CC7}'
-
- IfErrors no_remove_uninstaller
- ;You can either use Delete /REBOOTOK in the uninstaller or add some code
- ;here to remove the uninstaller. Use a registry key to check
- ;whether the user has chosen to uninstall. If you are using an uninstaller
- ;components page, make sure all sections are uninstalled.
-
- Push $R1
- Call RestartRequired
- Pop $R1
- StrCmp $R1 "1" Restart DoNotRestart
-
-testPismere:
- ClearErrors
- ReadRegStr $R0 HKLM \
- "Software\Microsoft\Windows\CurrentVersion\Uninstall\{83977767-388D-4DF8-BB08-3BF2401635BD}" \
- "DisplayVersion"
- IfErrors contInstall
-
- MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \
- "${PROGRAM_NAME} is already installed. $\n$\nClick `OK` to remove the \
- previous version or `Cancel` to cancel this installation." \
- IDOK uninstPismere
- Abort
-
-;Run the uninstaller
-uninstPismere:
- Call GetWindowsVersion
- Pop $R0
- StrCmp $R0 "2000" uninstPismere_2000
-
- ClearErrors
- ExecWait 'MSIEXEC /x{83977767-388D-4DF8-BB08-3BF2401635BD} /passive /promptrestart'
-
- IfErrors no_remove_uninstaller
- ;You can either use Delete /REBOOTOK in the uninstaller or add some code
- ;here to remove the uninstaller. Use a registry key to check
- ;whether the user has chosen to uninstall. If you are using an uninstaller
- ;components page, make sure all sections are uninstalled.
-
- Push $R1
- Call RestartRequired
- Pop $R1
- StrCmp $R1 "1" Restart DoNotRestart
-
-uninstPismere_2000:
- ClearErrors
- ExecWait 'MSIEXEC /x{83977767-388D-4DF8-BB08-3BF2401635BD}'
-
- IfErrors no_remove_uninstaller
- ;You can either use Delete /REBOOTOK in the uninstaller or add some code
- ;here to remove the uninstaller. Use a registry key to check
- ;whether the user has chosen to uninstall. If you are using an uninstaller
- ;components page, make sure all sections are uninstalled.
-
- Push $R1
- Call RestartRequired
- Pop $R1
- StrCmp $R1 "1" Restart DoNotRestart
-
-
-Restart:
- MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST "Please reboot and then restart the installer."
- Abort
- MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST "Abort failed"
-
-DoNotRestart:
-no_remove_uninstaller:
-
-contInstall:
- ; 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 KfW components are installed, we do a clean install with default options. (Client/Docs)
- ; 2) If existing modules are installed, we keep them selected
- ; 3) If it is an upgrade, we set the text accordingly, else we mark it as a re-install
- ; TODO: Downgrade?
- Call IsAnyKfWInstalled
- Pop $R0
- StrCmp $R0 "0" DefaultOptions
-
- Call ShouldClientInstall
- Pop $R2
-
- StrCmp $R2 "0" NoClient
- StrCmp $R2 "1" ReinstallClient
- StrCmp $R2 "2" UpgradeClient
- StrCmp $R2 "3" DowngradeClient
-
- SectionGetFlags ${secClient} $0
- IntOp $0 $0 | ${SF_SELECTED}
- SectionSetFlags ${secClient} $0
- ;# !insertmacro SelectSection ${secClient}
- goto skipClient
-NoClient:
- ;StrCpy $1 ${secClient} ; Gotta remember which section we are at now...
- SectionGetFlags ${secClient} $0
- IntOp $0 $0 & ${SECTION_OFF}
- SectionSetFlags ${secClient} $0
- goto skipClient
-UpgradeClient:
- SectionGetFlags ${secClient} $0
- IntOp $0 $0 | ${SF_SELECTED}
- SectionSetFlags ${secClient} $0
- SectionSetText ${secClient} $(UPGRADE_CLIENT)
- goto skipClient
-ReinstallClient:
- SectionGetFlags ${secClient} $0
- IntOp $0 $0 | ${SF_SELECTED}
- SectionSetFlags ${secClient} $0
- SectionSetText ${secClient} $(REINSTALL_CLIENT)
- goto skipClient
-DowngradeClient:
- SectionGetFlags ${secClient} $0
- IntOp $0 $0 | ${SF_SELECTED}
- SectionSetFlags ${secClient} $0
- SectionSetText ${secClient} $(DOWNGRADE_CLIENT)
- goto skipClient
-
-
-skipClient:
-
- Call ShouldSDKInstall
- Pop $R2
- StrCmp $R2 "0" NoSDK
- StrCmp $R2 "1" ReinstallSDK
- StrCmp $R2 "2" UpgradeSDK
- StrCmp $R2 "3" DowngradeSDK
-
- SectionGetFlags ${secSDK} $0
- IntOp $0 $0 | ${SF_SELECTED}
- SectionSetFlags ${secSDK} $0
- ;# !insertmacro UnselectSection ${secSDK}
- goto skipSDK
-
-UpgradeSDK:
- SectionGetFlags ${secSDK} $0
- IntOp $0 $0 | ${SF_SELECTED}
- SectionSetFlags ${secSDK} $0
- SectionSetText ${secSDK} $(UPGRADE_SDK)
- goto skipSDK
-
-ReinstallSDK:
- SectionGetFlags ${secSDK} $0
- IntOp $0 $0 | ${SF_SELECTED}
- SectionSetFlags ${secSDK} $0
- SectionSetText ${secSDK} $(REINSTALL_SDK)
- goto skipSDK
-
-DowngradeSDK:
- SectionGetFlags ${secSDK} $0
- IntOp $0 $0 | ${SF_SELECTED}
- SectionSetFlags ${secSDK} $0
- SectionSetText ${secSDK} $(DOWNGRADE_SDK)
- goto skipSDK
-
-NoSDK:
- SectionGetFlags ${secSDK} $0
- IntOp $0 $0 & ${SECTION_OFF}
- SectionSetFlags ${secSDK} $0
- ;# !insertmacro UnselectSection ${secSDK}
- goto skipSDK
-
-skipSDK:
-
- Call ShouldDocumentationInstall
- Pop $R2
- StrCmp $R2 "0" NoDocumentation
- StrCmp $R2 "1" ReinstallDocumentation
- StrCmp $R2 "2" UpgradeDocumentation
- StrCmp $R2 "3" DowngradeDocumentation
-
- SectionGetFlags ${secDocs} $0
- IntOp $0 $0 | ${SF_SELECTED}
- SectionSetFlags ${secDocs} $0
- ;# !insertmacro UnselectSection ${secDocs}
- goto skipDocumentation
-
-UpgradeDocumentation:
- SectionGetFlags ${secDocs} $0
- IntOp $0 $0 | ${SF_SELECTED}
- SectionSetFlags ${secDocs} $0
- SectionSetText ${secDocs} $(UPGRADE_DOCS)
- goto skipDocumentation
-
-ReinstallDocumentation:
- SectionGetFlags ${secDocs} $0
- IntOp $0 $0 | ${SF_SELECTED}
- SectionSetFlags ${secDocs} $0
- SectionSetText ${secDocs} $(REINSTALL_DOCS)
- goto skipDocumentation
-
-DowngradeDocumentation:
- SectionGetFlags ${secDocs} $0
- IntOp $0 $0 | ${SF_SELECTED}
- SectionSetFlags ${secDocs} $0
- SectionSetText ${secDocs} $(DOWNGRADE_DOCS)
- goto skipDocumentation
-
-NoDocumentation:
- SectionGetFlags ${secDocs} $0
- IntOp $0 $0 & ${SECTION_OFF}
- SectionSetFlags ${secDocs} $0
- ;# !insertmacro UnselectSection ${secDocs}
- goto skipDocumentation
-
-skipDocumentation:
- goto end
-
-DefaultOptions:
- ; Client Selected
- SectionGetFlags ${secClient} $0
- IntOp $0 $0 | ${SF_SELECTED}
- SectionSetFlags ${secClient} $0
-
- ; SDK NOT selected
- SectionGetFlags ${secSDK} $0
- IntOp $0 $0 & ${SECTION_OFF}
- SectionSetFlags ${secSDK} $0
-
- ; Documentation selected
- SectionGetFlags ${secDocs} $0
- IntOp $0 $0 | ${SF_SELECTED}
- SectionSetFlags ${secDocs} $0
- goto end
-
-end:
- Pop $0
-
- Push $R0
-
- ; See if we can set a default installation path...
- ReadRegStr $R0 HKLM "${KFW_REGKEY_ROOT}\Client\CurrentVersion" "PathName"
- StrCmp $R0 "" TrySDK
- StrCpy $INSTDIR $R0
- goto Nope
-
-TrySDK:
- ReadRegStr $R0 HKLM "${KFW_REGKEY_ROOT}\SDK\CurrentVersion" "PathName"
- StrCmp $R0 "" TryDocs
- StrCpy $INSTDIR $R0
- goto Nope
-
-TryDocs:
- ReadRegStr $R0 HKLM "${KFW_REGKEY_ROOT}\Documentation\CurrentVersion" "PathName"
- StrCmp $R0 "" TryRoot
- StrCpy $INSTDIR $R0
- goto Nope
-
-TryRoot:
- ReadRegStr $R0 HKLM "${KFW_REGKEY_ROOT}" "InstallDir"
- StrCmp $R0 "" Nope
- StrCpy $INSTDIR $R0
-
-Nope:
- Pop $R0
-
- GetTempFilename $0
- File /oname=$0 KfWConfigPage.ini
- GetTempFilename $1
- File /oname=$1 KfWConfigPage2.ini
-
-FunctionEnd
-
-
-;--------------------------------
-; These are our cleanup functions
-Function .onInstFailed
-Delete $0
-Delete $1
-FunctionEnd
-
-Function .onInstSuccess
-Delete $0
-Delete $1
-FunctionEnd
-
-
-;--------------------------------
-;Descriptions
-
- !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
- !insertmacro MUI_DESCRIPTION_TEXT ${secClient} $(DESC_secClient)
- !insertmacro MUI_DESCRIPTION_TEXT ${secSDK} $(DESC_secSDK)
- !insertmacro MUI_DESCRIPTION_TEXT ${secDocs} $(DESC_secDocs)
- !insertmacro MUI_DESCRIPTION_TEXT ${secDebug} $(DESC_secDebug)
- !insertmacro MUI_FUNCTION_DESCRIPTION_END
-
-;--------------------------------
-;Uninstaller Section
-
-Section "Uninstall"
- ; Make sure the user REALLY wants to do this, unless they did a silent uninstall, in which case...let them!
- IfSilent StartRemove ; New in v2.0b4
- MessageBox MB_YESNO "Are you sure you want to remove MIT ${PROGRAM_NAME} from this machine?" IDYES StartRemove
- abort
-
-StartRemove:
-
- SetShellVarContext all
- ; Stop the running processes
- GetTempFileName $R0
- File /oname=$R0 "Killer.exe"
- nsExec::Exec '$R0 netidmgr.exe'
- nsExec::Exec '$R0 krbcc%WL%s.exe'
-
- Push "$INSTDIR\bin"
- Call un.RemoveFromSystemPath
-
- ; Delete documentation
- Delete "$INSTDIR\doc\relnotes.html"
- Delete "$INSTDIR\doc\netidmgr_userdoc.pdf"
- Delete "$INSTDIR\doc\netiddev.chm"
-
- Delete /REBOOTOK "$INSTDIR\bin\comerr%WL%.dll"
- Delete /REBOOTOK "$INSTDIR\bin\gss.exe"
- Delete /REBOOTOK "$INSTDIR\bin\gss-client.exe"
- Delete /REBOOTOK "$INSTDIR\bin\gss-server.exe"
- Delete /REBOOTOK "$INSTDIR\bin\gssapi32.dll"
- ;Delete /REBOOTOK "$INSTDIR\bin\k524init.exe"
- Delete /REBOOTOK "$INSTDIR\bin\kdestroy.exe"
- Delete /REBOOTOK "$INSTDIR\bin\kinit.exe"
- Delete /REBOOTOK "$INSTDIR\bin\klist.exe"
- Delete /REBOOTOK "$INSTDIR\bin\kpasswd.exe"
- Delete /REBOOTOK "$INSTDIR\bin\kvno.exe"
- Delete /REBOOTOK "$INSTDIR\bin\krb5_%WL%.dll"
- Delete /REBOOTOK "$INSTDIR\bin\k5sprt%WL%.dll"
- ;Delete /REBOOTOK "$INSTDIR\bin\krb524.dll"
- Delete /REBOOTOK "$INSTDIR\bin\krbcc%WL%.dll"
- Delete /REBOOTOK "$INSTDIR\bin\krbcc%WL%s.exe"
- Delete /REBOOTOK "$INSTDIR\bin\netidmgr.exe"
- Delete /REBOOTOK "$INSTDIR\bin\netidmgr.chm"
- Delete /REBOOTOK "$INSTDIR\bin\nidmgr%WL%.dll"
- Delete /REBOOTOK "$INSTDIR\bin\krb5cred.dll"
- Delete /REBOOTOK "$INSTDIR\bin\krb5cred_en_us.dll"
- Delete /REBOOTOK "$INSTDIR\bin\leashw%WL%.dll"
- Delete /REBOOTOK "$INSTDIR\bin\ms2mit.exe"
- Delete /REBOOTOK "$INSTDIR\bin\mit2ms.exe"
- Delete /REBOOTOK "$INSTDIR\bin\kcpytkt.exe"
- Delete /REBOOTOK "$INSTDIR\bin\kdeltkt.exe"
- Delete /REBOOTOK "$INSTDIR\bin\wshelp%WL%.dll"
- Delete /REBOOTOK "$INSTDIR\bin\xpprof%WL%.dll"
- Delete /REBOOTOK "$SYSDIR\bin\kfwlogon.dll"
- Delete /REBOOTOK "$SYSDIR\bin\kfwcpcc.exe"
-
- Delete /REBOOTOK "$INSTDIR\bin\comerr%WL%.pdb"
- Delete /REBOOTOK "$INSTDIR\bin\gss.pdb"
- Delete /REBOOTOK "$INSTDIR\bin\gss-client.pdb"
- Delete /REBOOTOK "$INSTDIR\bin\gss-server.pdb"
- Delete /REBOOTOK "$INSTDIR\bin\gssapi32.pdb"
- ;Delete /REBOOTOK "$INSTDIR\bin\k524init.pdb"
- Delete /REBOOTOK "$INSTDIR\bin\kdestroy.pdb"
- Delete /REBOOTOK "$INSTDIR\bin\kinit.pdb"
- Delete /REBOOTOK "$INSTDIR\bin\klist.pdb"
- Delete /REBOOTOK "$INSTDIR\bin\kpasswd.pdb"
- Delete /REBOOTOK "$INSTDIR\bin\kvno.pdb"
- Delete /REBOOTOK "$INSTDIR\bin\krb5_32.pdb"
- Delete /REBOOTOK "$INSTDIR\bin\k5sprt%WL%.pdb"
- ;Delete /REBOOTOK "$INSTDIR\bin\krb524.pdb"
- Delete /REBOOTOK "$INSTDIR\bin\krbcc%WL%.pdb"
- Delete /REBOOTOK "$INSTDIR\bin\krbcc%WL%s.pdb"
- Delete /REBOOTOK "$INSTDIR\bin\netidmgr.pdb"
- Delete /REBOOTOK "$INSTDIR\bin\nidmgr%WL%.pdb"
- Delete /REBOOTOK "$INSTDIR\bin\krb5cred.pdb"
- Delete /REBOOTOK "$INSTDIR\bin\leashw%WL%.pdb"
- Delete /REBOOTOK "$INSTDIR\bin\ms2mit.pdb"
- Delete /REBOOTOK "$INSTDIR\bin\mit2ms.pdb"
- Delete /REBOOTOK "$INSTDIR\bin\kcpytkt.pdb"
- Delete /REBOOTOK "$INSTDIR\bin\kdeltkt.pdb"
- Delete /REBOOTOK "$INSTDIR\bin\wshelp%WL%.pdb"
- Delete /REBOOTOK "$INSTDIR\bin\xpprof%WL%.pdb"
- Delete /REBOOTOK "$SYSDIR\bin\kfwlogon.pdb"
- Delete /REBOOTOK "$SYSDIR\bin\kfwcpcc.pdb"
-
-!IFDEF DEBUG
-!IFDEF CL_1400
- Delete /REBOOTOK "$INSTDIR\bin\msvcr80d.dll"
- Delete /REBOOTOK "$INSTDIR\bin\msvcr80d.pdb"
- Delete /REBOOTOK "$INSTDIR\bin\msvcp80d.dll"
- Delete /REBOOTOK "$INSTDIR\bin\msvcp80d.pdb"
- Delete /REBOOTOK "$INSTDIR\bin\mfc80d.dll"
- Delete /REBOOTOK "$INSTDIR\bin\mfc80d.pdb"
-!ELSE
-!IFDEF CL_1310
- Delete /REBOOTOK "$INSTDIR\bin\msvcr71d.dll"
- Delete /REBOOTOK "$INSTDIR\bin\msvcr71d.pdb"
- Delete /REBOOTOK "$INSTDIR\bin\msvcp71d.dll"
- Delete /REBOOTOK "$INSTDIR\bin\msvcp71d.pdb"
- Delete /REBOOTOK "$INSTDIR\bin\mfc71d.dll"
- Delete /REBOOTOK "$INSTDIR\bin\mfc71d.pdb"
-!ELSE
-!IFDEF CL_1300
- Delete /REBOOTOK "$INSTDIR\bin\msvcr70d.dll"
- Delete /REBOOTOK "$INSTDIR\bin\msvcr70d.pdb"
- Delete /REBOOTOK "$INSTDIR\bin\msvcp70d.dll"
- Delete /REBOOTOK "$INSTDIR\bin\msvcp70d.pdb"
- Delete /REBOOTOK "$INSTDIR\bin\mfc70d.dll"
- Delete /REBOOTOK "$INSTDIR\bin\mfc70d.pdb"
-!ELSE
- Delete /REBOOTOK "$INSTDIR\bin\mfc42d.dll"
- Delete /REBOOTOK "$INSTDIR\bin\mfc42d.pdb"
- Delete /REBOOTOK "$INSTDIR\bin\msvcp60d.dll"
- Delete /REBOOTOK "$INSTDIR\bin\msvcp60d.pdb"
- Delete /REBOOTOK "$INSTDIR\bin\msvcrtd.dll"
- Delete /REBOOTOK "$INSTDIR\bin\msvcrtd.pdb"
-!ENDIF
-!ENDIF
-!ENDIF
-!ELSE
-!IFDEF CL_1400
- Delete /REBOOTOK "$INSTDIR\bin\mfc80.dll"
- Delete /REBOOTOK "$INSTDIR\bin\msvcr80.dll"
- Delete /REBOOTOK "$INSTDIR\bin\msvcp80.dll"
- Delete /REBOOTOK "$INSTDIR\bin\MFC80CHS.DLL"
- Delete /REBOOTOK "$INSTDIR\bin\MFC80CHT.DLL"
- Delete /REBOOTOK "$INSTDIR\bin\MFC80DEU.DLL"
- Delete /REBOOTOK "$INSTDIR\bin\MFC80ENU.DLL"
- Delete /REBOOTOK "$INSTDIR\bin\MFC80ESP.DLL"
- Delete /REBOOTOK "$INSTDIR\bin\MFC80FRA.DLL"
- Delete /REBOOTOK "$INSTDIR\bin\MFC80ITA.DLL"
- Delete /REBOOTOK "$INSTDIR\bin\MFC80JPN.DLL"
- Delete /REBOOTOK "$INSTDIR\bin\MFC80KOR.DLL"
-!ELSE
-!IFDEF CL_1310
- Delete /REBOOTOK "$INSTDIR\bin\mfc71.dll"
- Delete /REBOOTOK "$INSTDIR\bin\msvcr71.dll"
- Delete /REBOOTOK "$INSTDIR\bin\msvcp71.dll"
- Delete /REBOOTOK "$INSTDIR\bin\MFC71CHS.DLL"
- Delete /REBOOTOK "$INSTDIR\bin\MFC71CHT.DLL"
- Delete /REBOOTOK "$INSTDIR\bin\MFC71DEU.DLL"
- Delete /REBOOTOK "$INSTDIR\bin\MFC71ENU.DLL"
- Delete /REBOOTOK "$INSTDIR\bin\MFC71ESP.DLL"
- Delete /REBOOTOK "$INSTDIR\bin\MFC71FRA.DLL"
- Delete /REBOOTOK "$INSTDIR\bin\MFC71ITA.DLL"
- Delete /REBOOTOK "$INSTDIR\bin\MFC71JPN.DLL"
- Delete /REBOOTOK "$INSTDIR\bin\MFC71KOR.DLL"
-!ELSE
-!IFDEF CL_1300
- Delete /REBOOTOK "$INSTDIR\bin\mfc70.dll"
- Delete /REBOOTOK "$INSTDIR\bin\msvcr70.dll"
- Delete /REBOOTOK "$INSTDIR\bin\msvcp70.dll"
- Delete /REBOOTOK "$INSTDIR\bin\MFC70CHS.DLL"
- Delete /REBOOTOK "$INSTDIR\bin\MFC70CHT.DLL"
- Delete /REBOOTOK "$INSTDIR\bin\MFC70DEU.DLL"
- Delete /REBOOTOK "$INSTDIR\bin\MFC70ENU.DLL"
- Delete /REBOOTOK "$INSTDIR\bin\MFC70ESP.DLL"
- Delete /REBOOTOK "$INSTDIR\bin\MFC70FRA.DLL"
- Delete /REBOOTOK "$INSTDIR\bin\MFC70ITA.DLL"
- Delete /REBOOTOK "$INSTDIR\bin\MFC70JPN.DLL"
- Delete /REBOOTOK "$INSTDIR\bin\MFC70KOR.DLL"
-!ELSE
- Delete /REBOOTOK "$INSTDIR\bin\mfc42.dll"
- Delete /REBOOTOK "$INSTDIR\bin\msvcp60.dll"
- Delete /REBOOTOK "$INSTDIR\bin\msvcrt.dll"
-!ENDIF
-!ENDIF
-!ENDIF
-!ENDIF
- Delete /REBOOTOK "$INSTDIR\bin\psapi.dll"
-
- RMDir "$INSTDIR\bin"
- RmDir "$INSTDIR\doc"
- RmDir "$INSTDIR\lib"
- RmDir "$INSTDIR\inc"
- RmDir "$INSTDIR\install"
- RMDir "$INSTDIR"
-
- Delete "$SMPROGRAMS\${PROGRAM_NAME}\Uninstall ${PROGRAM_NAME}.lnk"
- Delete "$SMPROGRAMS\${PROGRAM_NAME}\Network Identity Manager.lnk"
- Delete "$SMPROGRAMS\${PROGRAM_NAME}\Release Notes.lnk"
- Delete "$SMPROGRAMS\${PROGRAM_NAME}\Network Identity Manager User Documentation.lnk"
- Delete "$SMPROGRAMS\${PROGRAM_NAME}\Network Identity Developer Documentation.lnk"
- RmDir "$SMPROGRAMS\${PROGRAM_NAME}"
- Delete "$SMSTARTUP\Network Identity Manager.lnk"
-
- IfSilent SkipAsk
-; IfFileExists "$WINDIR\krb5.ini" CellExists SkipDelAsk
-; RealmExists:
- MessageBox MB_YESNO "Would you like to keep your configuration files?" IDYES SkipDel
- SkipAsk:
- Delete "$WINDIR\krb5.ini"
- Delete "$WINDIR\krb.con"
- Delete "$WINDIR\krbrealm.con"
-
- SkipDel:
- Delete "$INSTDIR\Uninstall.exe"
-
- ; Restore previous value of AllowTGTSessionKey
- ReadRegDWORD $R0 HKLM "${KFW_REGKEY_ROOT}\Client\${KFW_VERSION}" "AllowTGTSessionKeyBackup"
- WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters" "AllowTGTSessionKey" $R0
- ReadRegDWORD $R0 HKLM "${KFW_REGKEY_ROOT}\Client\${KFW_VERSION}" "AllowTGTSessionKeyBackup2"
- WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Control\Lsa\Kerberos" "AllowTGTSessionKey" $R0
-
- ; The following are keys added for Terminal Server compatibility
- DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\netidmgr"
- DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\kinit"
- DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\klist"
- DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\kdestroy"
- DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\gss"
- DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\gss-client"
- DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\gss-server"
- ;DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\k524init"
- DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\kpasswd"
- DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\kvno"
- DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\ms2mit"
- DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\mit2ms"
- DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\kcpytkt"
- DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\kdeltkt"
- DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\k95"
- DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\k95g"
-
- DeleteRegKey HKLM "${KFW_REGKEY_ROOT}\Client\CurrentVersion"
- DeleteRegKey HKLM "${KFW_REGKEY_ROOT}\Client"
- DeleteRegKey HKLM "${KFW_REGKEY_ROOT}\Documentation\CurrentVersion"
- DeleteRegKey HKLM "${KFW_REGKEY_ROOT}\Documentation"
- DeleteRegKey HKLM "${KFW_REGKEY_ROOT}\SDK\CurrentVersion"
- DeleteRegKey HKLM "${KFW_REGKEY_ROOT}\SDK"
- DeleteRegKey /ifempty HKLM "${KFW_REGKEY_ROOT}"
- DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PROGRAM_NAME}"
-
- ; NIM Registry Keys
- DeleteRegKey HKLM "${NIM_REGKEY_ROOT}\PluginManager\Modules\MITKrb5"
- DeleteRegKey HKLM "${NIM_REGKEY_ROOT}\PluginManager\Plugins\Krb5Cred"
- DeleteRegKey HKLM "${NIM_REGKEY_ROOT}\PluginManager\Plugins\Krb5Ident"
- DeleteRegKey /ifempty HKLM "${NIM_REGKEY_ROOT}\PluginManager\Modules"
- DeleteRegKey /ifempty HKLM "${NIM_REGKEY_ROOT}\PluginManager\Plugins"
- DeleteRegKey /ifempty HKLM "${NIM_REGKEY_ROOT}\PluginManager"
- DeleteRegKey /ifempty HKLM "${NIM_REGKEY_ROOT}"
-
- ; WinLogon Event Notification
- DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\MIT_KFW"
- DeleteRegKey HKLM "SYSTEM\CurrentControlSet\Services\MIT Kerberos"
-
- RMDir "$INSTDIR"
-
-SectionEnd
-
-;--------------------------------
-;Uninstaller Functions
-
-Function un.onInit
-
- ;Get language from registry
- ReadRegStr $LANGUAGE ${MUI_LANGDLL_REGISTRY_ROOT} "${MUI_LANGDLL_REGISTRY_KEY}" "${MUI_LANGDLL_REGISTRY_VALUENAME}"
-
-FunctionEnd
-
-Function un.onUninstSuccess
-
- MessageBox MB_OK "Please reboot your machine to complete uninstallation of the software"
-
-FunctionEnd
-
-;------------------------------
-; Get the Configurations files from the Internet
-
-Function kfw.GetConfigFiles
-
-;Check if we should download Config Files
-ReadINIStr $R0 $0 "Field 4" "State"
-StrCmp $R0 "1" DoDownload
-
-;Do nothing if we're keeping the existing file
-ReadINIStr $R0 $0 "Field 2" "State"
-StrCmp $R0 "1" done
-
-ReadINIStr $R0 $0 "Field 3" "State"
-StrCmp $R0 "1" UsePackaged
-
-; If none of these, grab file from other location
-goto CheckOther
-
-DoDownload:
- ReadINIStr $R0 $0 "Field 5" "State"
- NSISdl::download "$R0/krb5.ini" "$WINDIR\krb5.ini"
- NSISdl::download "$R0/krb.con" "$WINDIR\krb.con"
- NSISdl::download "$R0/krbrealm.con" "$WINDIR\krbrealm.con"
- Pop $R0 ;Get the return value
- StrCmp $R0 "success" done
- MessageBox MB_OK|MB_ICONSTOP "Download failed: $R0"
- goto done
-
-UsePackaged:
- SetOutPath "$WINDIR"
- File "${KFW_CONFIG_DIR}\sample\krb5.ini"
- File "${KFW_CONFIG_DIR}\sample\krb.con"
- File "${KFW_CONFIG_DIR}\sample\krbrealm.con"
- goto done
-
-CheckOther:
- ReadINIStr $R0 $0 "Field 7" "State"
- StrCmp $R0 "" done
- CopyFiles "$R0\krb5.ini" "$WINDIR\krb5.ini"
- CopyFiles "$R0\krb.con" "$WINDIR\krb.con"
- CopyFiles "$R0\krbrealm.con" "$WINDIR\krbrealm.con"
-
-done:
-
-FunctionEnd
-
-
-
-;-------------------------------
-;Do the page to get the Config files
-
-Function KFWPageGetConfigFiles
- ; Skip this page if we are not installing the client
- SectionGetFlags ${secClient} $R0
- IntOp $R0 $R0 & ${SF_SELECTED}
- StrCmp $R0 "0" Skip
-
- ; Set the install options here
-
-startOver:
- WriteINIStr $0 "Field 2" "Flags" "DISABLED"
- WriteINIStr $0 "Field 3" "State" "1"
- WriteINIStr $0 "Field 4" "State" "0"
- WriteINIStr $0 "Field 6" "State" "0"
- WriteINIStr $0 "Field 3" "Text" "Use packaged configuration files for the ${SAMPLE_CONFIG_REALM} realm."
- WriteINIStr $0 "Field 5" "State" "${HTTP_CONFIG_URL}"
-
- ; If there is an existing krb5.ini file, allow the user to choose it and make it default
- IfFileExists "$WINDIR\krb5.ini" +1 notpresent
- WriteINIStr $0 "Field 2" "Flags" "ENABLED"
- WriteINIStr $0 "Field 2" "State" "1"
- WriteINIStr $0 "Field 3" "State" "0"
-
- notpresent:
-
- !insertmacro MUI_HEADER_TEXT "Kerberos Configuration" "Please choose a method for installing the Kerberos Configuration files:"
- InstallOptions::dialog $0
- Pop $R1
- StrCmp $R1 "cancel" exit
- StrCmp $R1 "back" done
- StrCmp $R1 "success" done
-exit: Quit
-done:
-
- ; Check that if a file is set, a valid filename is entered...
- ReadINIStr $R0 $0 "Field 6" "State"
- StrCmp $R0 "1" CheckFileName
-
- ;Check if a URL is specified, one *IS* specified
- ReadINIStr $R0 $0 "Field 4" "State"
- StrCmp $R0 "1" CheckURL Skip
-
- CheckURL:
- ReadINIStr $R0 $0 "Field 5" "State"
- StrCmp $R0 "" +1 Skip
- MessageBox MB_OK|MB_ICONSTOP $(URLError)
- WriteINIStr $0 "Field 4" "State" "0"
- goto startOver
-
- CheckFileName:
- ReadINIStr $R0 $0 "Field 7" "State"
- IfFileExists "$R0\krb5.ini" Skip
-
- MessageBox MB_OK|MB_ICONSTOP $(ConfigFileError)
- WriteINIStr $0 "Field 6" "State" "0"
- goto startOver
-
- Skip:
-
-FunctionEnd
-
-
-;-------------------------------
-;Do the page to get the Startup Configuration
-
-Function KFWPageGetStartupConfig
- ; Skip this page if we are not installing the client
- SectionGetFlags ${secClient} $R0
- IntOp $R0 $R0 & ${SF_SELECTED}
- StrCmp $R0 "0" Skip
-
- ; Set the install options here
-
- !insertmacro MUI_HEADER_TEXT "Network Identity Manager Setup" "Please select Network Identity ticket manager setup options:"
- InstallOptions::dialog $1
- Pop $R1
- StrCmp $R1 "cancel" exit
- StrCmp $R1 "back" done
- StrCmp $R1 "success" done
-exit:
- Quit
-done:
-skip:
-
-FunctionEnd
-
-
-;-------------
-; Common install routines for each module
-Function KFWCommon.Install
-
- WriteRegStr HKLM "${KFW_REGKEY_ROOT}" "InstallDir" $INSTDIR
-
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PROGRAM_NAME}" "DisplayName" "${PROGRAM_NAME}"
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PROGRAM_NAME}" "UninstallString" "$INSTDIR\uninstall.exe"
-!ifndef DEBUG
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PROGRAM_NAME}" "DisplayVersion" "${KFW_VERSION}"
-!else
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PROGRAM_NAME}" "DisplayVersion" "${KFW_VERSION} Checked/Debug"
-!endif
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PROGRAM_NAME}" "URLInfoAbout" "http://web.mit.edu/kerberos/"
-
-!ifdef DEBUG
- WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\CurrentVersion" "Debug" 1
- WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\${KFW_VERSION}" "Debug" 1
-!else
- ; Delete the DEBUG string
- DeleteRegValue HKLM "${KFW_REGKEY_ROOT}\CurrentVersion" "Debug"
- DeleteRegValue HKLM "${KFW_REGKEY_ROOT}\${KFW_VERSION}" "Debug"
-!endif
-
- WriteUninstaller "$INSTDIR\Uninstall.exe"
-FunctionEnd
-
-
-;-------------------------------
-; Check if the client should be checked for default install
-Function ShouldClientInstall
- Push $R0
- StrCpy $R2 "Client"
- Call GetInstalledVersion
- Pop $R0
-
- StrCmp $R0 "" NotInstalled
- ; Now we see if it's an older or newer version
-
- Call GetInstalledVersionMajor
- Pop $R0
- IntCmpU $R0 ${KFW_MAJORVERSION} +1 Upgrade Downgrade
-
- Call GetInstalledVersionMinor
- Pop $R0
- IntCmpU $R0 ${KFW_MINORVERSION} +1 Upgrade Downgrade
-
- Call GetInstalledVersionPatch
- Pop $R0
- IntCmpU $R0 ${KFW_PATCHLEVEL} Reinstall Upgrade Downgrade
-
-Reinstall:
- StrCpy $R0 "1"
- Exch $R0
- goto end
-
-Upgrade:
- StrCpy $R0 "2"
- Exch $R0
- goto end
-
-Downgrade:
- StrCpy $R0 "3"
- Exch $R0
- goto end
-
-NotInstalled:
- StrCpy $R0 "0"
- Exch $R0
-end:
-FunctionEnd
-
-;-------------------------------
-; Check how the Documentation options should be set
-Function ShouldDocumentationInstall
- Push $R0
- StrCpy $R2 "Documentation"
- Call GetInstalledVersion
- Pop $R0
-
- StrCmp $R0 "" NotInstalled
- ; Now we see if it's an older or newer version
-
- Call GetInstalledVersionMajor
- Pop $R0
- IntCmpU $R0 ${KFW_MAJORVERSION} +1 Upgrade Downgrade
-
- Call GetInstalledVersionMinor
- Pop $R0
- IntCmpU $R0 ${KFW_MINORVERSION} +1 Upgrade Downgrade
-
- Call GetInstalledVersionPatch
- Pop $R0
- IntCmpU $R0 ${KFW_PATCHLEVEL} Reinstall Upgrade Downgrade
-
-Reinstall:
- StrCpy $R0 "1"
- Exch $R0
- goto end
-
-Upgrade:
- StrCpy $R0 "2"
- Exch $R0
- goto end
-
-Downgrade:
- StrCpy $R0 "3"
- Exch $R0
- goto end
-
-
-NotInstalled:
- StrCpy $R0 "0"
- Exch $R0
-end:
-FunctionEnd
-
-
-;-------------------------------
-; Check how the SDK options should be set
-Function ShouldSDKInstall
- Push $R0
- StrCpy $R2 "SDK"
- Call GetInstalledVersion
- Pop $R0
-
- StrCmp $R0 "" NotInstalled
- ; Now we see if it's an older or newer version
-
- Call GetInstalledVersionMajor
- Pop $R0
- IntCmpU $R0 ${KFW_MAJORVERSION} +1 Upgrade Downgrade
-
- Call GetInstalledVersionMinor
- Pop $R0
- IntCmpU $R0 ${KFW_MINORVERSION} +1 Upgrade Downgrade
-
- Call GetInstalledVersionPatch
- Pop $R0
- IntCmpU $R0 ${KFW_PATCHLEVEL} Reinstall Upgrade Downgrade
-
-Reinstall:
- StrCpy $R0 "1"
- Exch $R0
- goto end
-
-Upgrade:
- StrCpy $R0 "2"
- Exch $R0
- goto end
-
-Downgrade:
- StrCpy $R0 "3"
- Exch $R0
- goto end
-
-
-NotInstalled:
- StrCpy $R0 "0"
- Exch $R0
-end:
-FunctionEnd
-
-; See if KfW SDK is installed
-; Returns: "1" if it is, 0 if it is not (on the stack)
-Function IsSDKInstalled
- Push $R0
- StrCpy $R2 "SDK"
- Call GetInstalledVersion
- Pop $R0
-
- StrCmp $R0 "" NotInstalled
-
- StrCpy $R0 "1"
- Exch $R0
- goto end
-
-NotInstalled:
- StrCpy $R0 "0"
- Exch $R0
-end:
-FunctionEnd
-
-
-; See if KfW Client is installed
-; Returns: "1" if it is, 0 if it is not (on the stack)
-Function IsClientInstalled
- Push $R0
- StrCpy $R2 "Client"
- Call GetInstalledVersion
- Pop $R0
-
- StrCmp $R0 "" NotInstalled
-
- StrCpy $R0 "1"
- Exch $R0
- goto end
-
-NotInstalled:
- StrCpy $R0 "0"
- Exch $R0
-end:
-FunctionEnd
-
-
-
-; See if KfW Documentation is installed
-; Returns: "1" if it is, 0 if it is not (on the stack)
-Function IsDocumentationInstalled
- Push $R0
- StrCpy $R2 "Documentation"
- Call GetInstalledVersion
- Pop $R0
-
- StrCmp $R0 "" NotInstalled
-
- StrCpy $R0 "1"
- Exch $R0
- goto end
-
-NotInstalled:
- StrCpy $R0 "0"
- Exch $R0
-end:
-FunctionEnd
-
-
-
-;Check to see if any KfW component is installed
-;Returns: Value on stack: "1" if it is, "0" if it is not
-Function IsAnyKfWInstalled
- Push $R0
- Push $R1
- Push $R2
- Call IsClientInstalled
- Pop $R0
- Call IsSDKInstalled
- Pop $R1
- Call IsDocumentationInstalled
- Pop $R2
- ; Now we must see if ANY of the $Rn values are 1
- StrCmp $R0 "1" SomethingInstalled
- StrCmp $R1 "1" SomethingInstalled
- StrCmp $R2 "1" SomethingInstalled
- ;Nothing installed
- StrCpy $R0 "0"
- goto end
-SomethingInstalled:
- StrCpy $R0 "1"
-end:
- Pop $R2
- Pop $R1
- Exch $R0
-FunctionEnd
-
-;--------------------------------
-;Handle what must and what must not be installed
-Function .onSelChange
- ; If they install the SDK, they MUST install the client
- SectionGetFlags ${secSDK} $R0
- IntOp $R0 $R0 & ${SF_SELECTED}
- StrCmp $R0 "1" MakeClientSelected
- goto end
-
-MakeClientSelected:
- SectionGetFlags ${secClient} $R0
- IntOp $R0 $R0 | ${SF_SELECTED}
- SectionSetFlags ${secClient} $R0
-
-end:
-FunctionEnd
-
-Function AddProvider
- Push $R0
- Push $R1
- ReadRegStr $R0 HKLM "SYSTEM\CurrentControlSet\Control\NetworkProvider\HWOrder" "ProviderOrder"
- Push $R0
- StrCpy $R0 "MIT Kerberos"
- Push $R0
- Call StrStr
- Pop $R0
- StrCmp $R0 "" DoOther +1
- ReadRegStr $R1 HKLM "SYSTEM\CurrentControlSet\Control\NetworkProvider\HWOrder" "ProviderOrder"
- StrCpy $R0 "$R1,MIT Kerberos"
- WriteRegStr HKLM "SYSTEM\CurrentControlSet\Control\NetworkProvider\HWOrder" "ProviderOrder" $R0
-DoOther:
- ReadRegStr $R0 HKLM "SYSTEM\CurrentControlSet\Control\NetworkProvider\Order" "ProviderOrder"
- Push $R0
- StrCpy $R0 "MIT Kerberos"
- Push $R0
- Call StrStr
- Pop $R0
- StrCmp $R0 "" +1 End
- ReadRegStr $R1 HKLM "SYSTEM\CurrentControlSet\Control\NetworkProvider\Order" "ProviderOrder"
- StrCpy $R0 "$R1,MIT Kerberos"
- WriteRegStr HKLM "SYSTEM\CurrentControlSet\Control\NetworkProvider\Order" "ProviderOrder" $R0
-End:
- Pop $R1
- Pop $R0
-FunctionEnd
-
-Function un.RemoveProvider
- Push $R0
- StrCpy $R0 "MIT Kerberos"
- Push $R0
- StrCpy $R0 "SYSTEM\CurrentControlSet\Control\NetworkProvider\HWOrder"
- Call un.RemoveFromProvider
- StrCpy $R0 "MIT Kerberos"
- 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
+;-----------------------------------------------------------------
+; KfW defines and functionality
+; Copyright (c) 2004,2005,2006,2007 Massachusetts Institute of Technology
+; Copyright (c) 2006,2007 Secure Endpoints Inc.
+
+!define KFW_VERSION "${KFW_MAJORVERSION}.${KFW_MINORVERSION}.${KFW_PATCHLEVEL}"
+
+!define PROGRAM_NAME "Kerberos for Windows"
+!ifdef RELEASE
+!ifndef DEBUG ; !DEBUG on v2.0b4
+Name "MIT ${PROGRAM_NAME} ${KFW_VERSION}"
+!else ; DEBUG on v2.0b4
+Name "MIT ${PROGRAM_NAME} ${KFW_VERSION} Checked/Debug"
+!endif ; End DEBUG/!DEBUG
+!else
+!ifdef BETA
+!ifndef DEBUG ; !DEBUG on v2.0b4
+Name "MIT ${PROGRAM_NAME} ${KFW_VERSION} Beta ${BETA}"
+!else ; DEBUG on v2.0b4
+Name "MIT ${PROGRAM_NAME} ${KFW_VERSION} Beta ${BETA} Checked/Debug"
+!endif ; End DEBUG/!DEBUG
+!else
+!ifndef DEBUG ; !DEBUG on v2.0b4
+Name "MIT ${PROGRAM_NAME} ${KFW_VERSION} ${__DATE__} ${__TIME__}"
+!else ; DEBUG on v2.0b4
+Name "MIT ${PROGRAM_NAME} ${KFW_VERSION} ${__DATE__} ${__TIME__} Checked/Debug"
+!endif ; End DEBUG/!DEBUG
+!endif
+!endif
+VIProductVersion "${KFW_MAJORVERSION}.${KFW_MINORVERSION}.${KFW_PATCHLEVEL}.00"
+VIAddVersionKey "ProductName" "${PROGRAM_NAME}"
+VIAddVersionKey "CompanyName" "Massachusetts Institute of Technology"
+VIAddVersionKey "FileVersion" ${VIProductVersion}
+VIAddVersionKey "ProductVersion" "${KFW_MAJORVERSION}.${KFW_MINORVERSION}.${KFW_PATCHLEVEL}.0"
+VIAddVersionKey "FileDescription" "MIT Kerberos for Windows Installer"
+VIAddVersionKey "LegalCopyright" "(C)2004,2005,2006,2007"
+!ifdef DEBUG
+VIAddVersionKey "PrivateBuild" "Checked/Debug"
+!endif ; End DEBUG
+
+
+;--------------------------------
+;Configuration
+
+ ;General
+ SetCompressor lzma
+!ifndef DEBUG
+ OutFile "MITKerberosForWindows.exe"
+!else
+ OutFile "MITKerberosForWindows-DEBUG.exe"
+!endif
+ SilentInstall normal
+ ShowInstDetails show
+ XPStyle on
+ !define MUI_ICON "kfw.ico"
+ !define MUI_UNICON "kfw.ico"
+ !define KFW_COMPANY_NAME "Massachusetts Institute of Technology"
+ !define KFW_PRODUCT_NAME "${PROGRAM_NAME}"
+ !define KFW_REGKEY_ROOT "Software\MIT\Kerberos\"
+ !define NIM_REGKEY_ROOT "Software\MIT\NetIDMgr\"
+ CRCCheck force
+ !define REPLACEDLL_NOREGISTER
+
+ ;Folder selection page
+ InstallDir "$PROGRAMFILES\MIT\Kerberos" ; Install to shorter path
+
+ ;Remember install folder
+ InstallDirRegKey HKLM "${KFW_REGKEY_ROOT}" ""
+
+ ;Remember the installer language
+ !define MUI_LANGDLL_REGISTRY_ROOT "HKLM"
+ !define MUI_LANGDLL_REGISTRY_KEY "${KFW_REGKEY_ROOT}"
+ !define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language"
+
+ ;Where are the files?
+ !define KFW_BIN_DIR "${KFW_TARGETDIR}\bin\%cpu%"
+ !define KFW_DOC_DIR "${KFW_TARGETDIR}\doc"
+ !define KFW_INC_DIR "${KFW_TARGETDIR}\inc"
+ !define KFW_LIB_DIR "${KFW_TARGETDIR}\lib\%cpu%"
+ !define KFW_SAMPLE_DIR "${KFW_TARGETDIR}\sample"
+ !define KFW_INSTALL_DIR "${KFW_TARGETDIR}\install"
+ !define SYSTEMDIR "$%SystemRoot%\System32"
+ !define SXSDIR1 "$%SystemRoot%\WinSxS\x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_5490cd9f"
+ !define SXSLANG "c:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.MFCLOC"
+ !ifdef X86
+ !define SXSDIR2 "$%SystemRoot%\WinSxS\x86_Microsoft.VC80.DebugMFC_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_c8452471"
+ !define SXSMAND "$%SystemRoot%\WinSxS\Manifests"
+ !else
+ !ifdef AMD64
+ !define SXSDIR2 "$%SystemRoot%\WinSxS\amd64_Microsoft.VC80.DebugMFC_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_57812684"
+ !endif
+ !endif
+
+ !define REDISTDIR "c:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\vcredist_x86"
+
+;--------------------------------
+;Modern UI Configuration
+
+ !define MUI_LICENSEPAGE
+ !define MUI_CUSTOMPAGECOMMANDS
+ !define MUI_WELCOMEPAGE
+ !define MUI_COMPONENTSPAGE
+ !define MUI_COMPONENTSPAGE_SMALLDESC
+ !define MUI_DIRECTORYPAGE
+
+ !define MUI_ABORTWARNING
+ !define MUI_FINISHPAGE
+
+ !define MUI_UNINSTALLER
+ !define MUI_UNCONFIRMPAGE
+
+
+ !insertmacro MUI_PAGE_WELCOME
+ !insertmacro MUI_PAGE_LICENSE "Licenses.rtf"
+ !insertmacro MUI_PAGE_COMPONENTS
+ !insertmacro MUI_PAGE_DIRECTORY
+ Page custom KFWPageGetConfigFiles
+ Page custom KFWPageGetStartupConfig
+ !insertmacro MUI_PAGE_INSTFILES
+ !insertmacro MUI_PAGE_FINISH
+
+;--------------------------------
+;Languages
+
+ !insertmacro MUI_LANGUAGE "English"
+
+;--------------------------------
+;Language Strings
+
+ ;Descriptions
+ LangString DESC_SecCopyUI ${LANG_ENGLISH} "${PROGRAM_NAME}: English"
+
+ LangString DESC_secClient ${LANG_ENGLISH} "Client: Allows you to utilize MIT Kerberos from your Windows PC."
+
+ LangString DESC_secDebug ${LANG_ENGLISH} "Debug Symbols: Used for debugging problems with MIT Kerberos for Windows"
+
+ LangString DESC_secSDK ${LANG_ENGLISH} "SDK: Allows you to build MIT Kerberos aware applications."
+
+ LangString DESC_secDocs ${LANG_ENGLISH} "Documentation: Release Notes and User Manuals."
+
+; Popup error messages
+ LangString RealmNameError ${LANG_ENGLISH} "You must specify a realm name for your client to use."
+
+ LangString ConfigFileError ${LANG_ENGLISH} "You must specify a valid configuration file location from which files can be copied during the install"
+
+ LangString URLError ${LANG_ENGLISH} "You must specify a URL if you choose the option to download the config files."
+
+; Upgrade/re-install strings
+ LangString UPGRADE_CLIENT ${LANG_ENGLISH} "Upgrade Kerberos Client"
+ LangString REINSTALL_CLIENT ${LANG_ENGLISH} "Re-install Kerberos Client"
+ LangString DOWNGRADE_CLIENT ${LANG_ENGLISH} "Downgrade Kerberos Client"
+
+ LangString UPGRADE_SDK ${LANG_ENGLISH} "Upgrade Kerberos SDK"
+ LangString REINSTALL_SDK ${LANG_ENGLISH} "Re-install Kerberos SDK"
+ LangString DOWNGRADE_SDK ${LANG_ENGLISH} "Downgrade Kerberos SDK"
+
+ LangString UPGRADE_DOCS ${LANG_ENGLISH} "Upgrade Kerberos Documentation"
+ LangString REINSTALL_DOCS ${LANG_ENGLISH} "Re-install Kerberos Documentation"
+ LangString DOWNGRADE_DOCS ${LANG_ENGLISH} "Downgrade Kerberos Documentation"
+
+ ReserveFile "${KFW_CONFIG_DIR}\sample\krb.con"
+ ReserveFile "${KFW_CONFIG_DIR}\sample\krbrealm.con"
+ ReserveFile "${KFW_CONFIG_DIR}\sample\krb5.ini"
+ !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS ;InstallOptions plug-in
+ !insertmacro MUI_RESERVEFILE_LANGDLL ;Language selection dialog
+
+;--------------------------------
+;Reserve Files
+
+ ;Things that need to be extracted on first (keep these lines before any File command!)
+ ;Only useful for BZIP2 compression
+ !insertmacro MUI_RESERVEFILE_LANGDLL
+
+;--------------------------------
+; Load Macros
+!include "utils.nsi"
+
+;--------------------------------
+;Installer Sections
+
+;----------------------
+; Kerberos for Windows CLIENT
+Section "KfW Client" secClient
+
+ SetShellVarContext all
+ ; Stop any running services or we can't replace the files
+ ; Stop the running processes
+ GetTempFileName $R0
+ File /oname=$R0 "Killer.exe"
+ nsExec::Exec '$R0 netidmgr.exe'
+ nsExec::Exec '$R0 leash32.exe'
+ nsExec::Exec '$R0 krbcc%WL%s.exe'
+ nsExec::Exec '$R0 k95.exe'
+ nsExec::Exec '$R0 k95g.exe'
+ nsExec::Exec '$R0 krb5.exe'
+ nsExec::Exec '$R0 gss.exe'
+ nsExec::Exec '$R0 afscreds.exe'
+
+ RMDir /r "$INSTDIR\bin"
+
+ ; Do client components
+ SetOutPath "$INSTDIR\bin"
+ !insertmacro ReplaceDLL "${KFW_BIN_DIR}\comerr%WL%.dll" "$INSTDIR\bin\comerr%WL%.dll" "$INSTDIR"
+ !insertmacro ReplaceDLL "${KFW_BIN_DIR}\gss.exe" "$INSTDIR\bin\gss.exe" "$INSTDIR"
+ !insertmacro ReplaceDLL "${KFW_BIN_DIR}\gss-client.exe" "$INSTDIR\bin\gss-client.exe" "$INSTDIR"
+ !insertmacro ReplaceDLL "${KFW_BIN_DIR}\gss-server.exe" "$INSTDIR\bin\gss-server.exe" "$INSTDIR"
+ !insertmacro ReplaceDLL "${KFW_BIN_DIR}\gssapi%WL%.dll" "$INSTDIR\bin\gssapi%WL%.dll" "$INSTDIR"
+ ;!insertmacro ReplaceDLL "${KFW_BIN_DIR}\k524init.exe" "$INSTDIR\bin\k524init.exe" "$INSTDIR"
+ !insertmacro ReplaceDLL "${KFW_BIN_DIR}\kdestroy.exe" "$INSTDIR\bin\kdestroy.exe" "$INSTDIR"
+ !insertmacro ReplaceDLL "${KFW_BIN_DIR}\kinit.exe" "$INSTDIR\bin\kinit.exe" "$INSTDIR"
+ !insertmacro ReplaceDLL "${KFW_BIN_DIR}\klist.exe" "$INSTDIR\bin\klist.exe" "$INSTDIR"
+ !insertmacro ReplaceDLL "${KFW_BIN_DIR}\kpasswd.exe" "$INSTDIR\bin\kpasswd.exe" "$INSTDIR"
+ !insertmacro ReplaceDLL "${KFW_BIN_DIR}\kvno.exe" "$INSTDIR\bin\kvno.exe" "$INSTDIR"
+ !insertmacro ReplaceDLL "${KFW_BIN_DIR}\krb5_%WL%.dll" "$INSTDIR\bin\krb5_%WL%.dll" "$INSTDIR"
+ !insertmacro ReplaceDLL "${KFW_BIN_DIR}\k5sprt%WL%.dll" "$INSTDIR\bin\k5sprt%WL%.dll" "$INSTDIR"
+ ;!insertmacro ReplaceDLL "${KFW_BIN_DIR}\krb524.dll" "$INSTDIR\bin\krb524.dll" "$INSTDIR"
+ !insertmacro ReplaceDLL "${KFW_BIN_DIR}\krbcc%WL%.dll" "$INSTDIR\bin\krbcc%WL%.dll" "$INSTDIR"
+ !insertmacro ReplaceDLL "${KFW_BIN_DIR}\krbcc%WL%s.exe" "$INSTDIR\bin\krbcc%WL%s.exe" "$INSTDIR"
+ !insertmacro ReplaceDLL "${KFW_BIN_DIR}\netidmgr.chm" "$INSTDIR\bin\netidmgr.chm" "$INSTDIR"
+ !insertmacro ReplaceDLL "${KFW_BIN_DIR}\krb5cred.dll" "$INSTDIR\bin\krb5cred.dll" "$INSTDIR"
+ !insertmacro ReplaceDLL "${KFW_BIN_DIR}\krb5cred_en_us.dll" "$INSTDIR\bin\krb5cred_en_us.dll" "$INSTDIR"
+ !insertmacro ReplaceDLL "${KFW_BIN_DIR}\leashw%WL%.dll" "$INSTDIR\bin\leashw%WL%.dll" "$INSTDIR"
+ !insertmacro ReplaceDLL "${KFW_BIN_DIR}\ms2mit.exe" "$INSTDIR\bin\ms2mit.exe" "$INSTDIR"
+ !insertmacro ReplaceDLL "${KFW_BIN_DIR}\mit2ms.exe" "$INSTDIR\bin\mit2ms.exe" "$INSTDIR"
+ !insertmacro ReplaceDLL "${KFW_BIN_DIR}\kcpytkt.exe" "$INSTDIR\bin\kcpytkt.exe" "$INSTDIR"
+ !insertmacro ReplaceDLL "${KFW_BIN_DIR}\kdeltkt.exe" "$INSTDIR\bin\kdeltkt.exe" "$INSTDIR"
+ !insertmacro ReplaceDLL "${KFW_BIN_DIR}\wshelp%WL%.dll" "$INSTDIR\bin\wshelp%WL%.dll" "$INSTDIR"
+ !insertmacro ReplaceDLL "${KFW_BIN_DIR}\xpprof%WL%.dll" "$INSTDIR\bin\xpprof%WL%.dll" "$INSTDIR"
+
+ Call GetWindowsVersion
+ Pop $R0
+ StrCmp $R0 "2000" nid_inst2000
+ !insertmacro ReplaceDLL "${KFW_BIN_DIR}\netidmgr.exe" "$INSTDIR\bin\netidmgr.exe" "$INSTDIR"
+ !insertmacro ReplaceDLL "${KFW_BIN_DIR}\nidmgr%WL%.dll" "$INSTDIR\bin\nidmgr%WL%.dll" "$INSTDIR"
+ goto nid_done
+nid_inst2000:
+ !insertmacro ReplaceDLL "${KFW_BIN_DIR}\W2K\netidmgr.exe" "$INSTDIR\bin\netidmgr.exe" "$INSTDIR"
+ !insertmacro ReplaceDLL "${KFW_BIN_DIR}\W2K\nidmgr%WL%.dll" "$INSTDIR\bin\nidmgr%WL%.dll" "$INSTDIR"
+nid_done:
+
+!ifdef DEBUG
+!IFDEF CL_1400
+ !insertmacro ReplaceDLL "${SXSDIR1}\msvcr80d.dll" "$INSTDIR\bin\msvcr80d.dll" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SXSDIR1}\msvcp80d.dll" "$INSTDIR\bin\msvcp80d.dll" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SXSDIR2}\mfc80d.dll" "$INSTDIR\bin\mfc80d.dll" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SXSLANG}\MFC80CHS.DLL" "$INSTDIR\bin\MFC80CHS.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SXSLANG}\MFC80CHT.DLL" "$INSTDIR\bin\MFC80CHT.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SXSLANG}\MFC80DEU.DLL" "$INSTDIR\bin\MFC80DEU.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SXSLANG}\MFC80ENU.DLL" "$INSTDIR\bin\MFC80ENU.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SXSLANG}\MFC80ESP.DLL" "$INSTDIR\bin\MFC80ESP.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SXSLANG}\MFC80FRA.DLL" "$INSTDIR\bin\MFC80FRA.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SXSLANG}\MFC80ITA.DLL" "$INSTDIR\bin\MFC80ITA.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SXSLANG}\MFC80JPN.DLL" "$INSTDIR\bin\MFC80JPN.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SXSLANG}\MFC80KOR.DLL" "$INSTDIR\bin\MFC80KOR.DLL" "$INSTDIR"
+ !IFDEF X86
+ !insertmacro ReplaceDLL "${SXSMAND}\x86_Microsoft.VC80.DebugMFC_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_257740a4.manifest" "$INSTDIR\bin\x86_Microsoft.VC80.DebugMFC_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_257740a4.manifest" "$INSTDIR"
+ !ELSE
+ !IFDEF AMD64
+ !insertmacro ReplaceDLL "${SXSMAND}\AMD64_Microsoft.VC80.DebugMFC_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_257740a4.manifest" "$INSTDIR\bin\AMD64_Microsoft.VC80.DebugMFC_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_257740a4.manifest" "$INSTDIR"
+ !ENDIF
+ !ENDIF
+!ELSE
+!IFDEF CL_1310
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcr71d.dll" "$INSTDIR\bin\msvcr71d.dll" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcp71d.dll" "$INSTDIR\bin\msvcp71d.dll" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\mfc71d.dll" "$INSTDIR\bin\mfc71d.dll" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71CHS.DLL" "$INSTDIR\bin\MFC71CHS.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71CHT.DLL" "$INSTDIR\bin\MFC71CHT.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71DEU.DLL" "$INSTDIR\bin\MFC71DEU.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71ENU.DLL" "$INSTDIR\bin\MFC71ENU.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71ESP.DLL" "$INSTDIR\bin\MFC71ESP.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71FRA.DLL" "$INSTDIR\bin\MFC71FRA.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71ITA.DLL" "$INSTDIR\bin\MFC71ITA.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71JPN.DLL" "$INSTDIR\bin\MFC71JPN.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71KOR.DLL" "$INSTDIR\bin\MFC71KOR.DLL" "$INSTDIR"
+!ELSE
+!IFDEF CL_1300
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcr70d.dll" "$INSTDIR\bin\msvcr70d.dll" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcp70d.dll" "$INSTDIR\bin\msvcp70d.dll" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\mfc70d.dll" "$INSTDIR\bin\mfc70d.dll" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70CHS.DLL" "$INSTDIR\bin\MFC70CHS.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70CHT.DLL" "$INSTDIR\bin\MFC70CHT.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70DEU.DLL" "$INSTDIR\bin\MFC70DEU.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70ENU.DLL" "$INSTDIR\bin\MFC70ENU.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70ESP.DLL" "$INSTDIR\bin\MFC70ESP.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70FRA.DLL" "$INSTDIR\bin\MFC70FRA.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70ITA.DLL" "$INSTDIR\bin\MFC70ITA.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70JPN.DLL" "$INSTDIR\bin\MFC70JPN.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70KOR.DLL" "$INSTDIR\bin\MFC70KOR.DLL" "$INSTDIR"
+!ELSE
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\mfc42d.dll" "$INSTDIR\bin\mfc42d.dll" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcp60d.dll" "$INSTDIR\bin\msvcp60d.dll" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcrtd.dll" "$INSTDIR\bin\msvcrtd.dll" "$INSTDIR"
+!ENDIF
+!ENDIF
+!ENDIF
+!ELSE
+;!IFDEF CL_1400
+; GetTempFileName $R0
+; File /oname=$R0 '${REDISTDIR}\vcredist_x86.exe'
+; nsExec::Exec '$R0'
+;!ELSE
+!IFDEF CL_1310
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\mfc71.dll" "$INSTDIR\bin\mfc71.dll" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcr71.dll" "$INSTDIR\bin\msvcr71.dll" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcp71.dll" "$INSTDIR\bin\msvcp71.dll" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71CHS.DLL" "$INSTDIR\bin\MFC71CHS.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71CHT.DLL" "$INSTDIR\bin\MFC71CHT.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71DEU.DLL" "$INSTDIR\bin\MFC71DEU.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71ENU.DLL" "$INSTDIR\bin\MFC71ENU.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71ESP.DLL" "$INSTDIR\bin\MFC71ESP.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71FRA.DLL" "$INSTDIR\bin\MFC71FRA.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71ITA.DLL" "$INSTDIR\bin\MFC71ITA.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71JPN.DLL" "$INSTDIR\bin\MFC71JPN.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC71KOR.DLL" "$INSTDIR\bin\MFC71KOR.DLL" "$INSTDIR"
+!ELSE
+!IFDEF CL_1300
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\mfc70.dll" "$INSTDIR\bin\mfc70.dll" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcr70.dll" "$INSTDIR\bin\msvcr70.dll" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcp70.dll" "$INSTDIR\bin\msvcp70.dll" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70CHS.DLL" "$INSTDIR\bin\MFC70CHS.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70CHT.DLL" "$INSTDIR\bin\MFC70CHT.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70DEU.DLL" "$INSTDIR\bin\MFC70DEU.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70ENU.DLL" "$INSTDIR\bin\MFC70ENU.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70ESP.DLL" "$INSTDIR\bin\MFC70ESP.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70FRA.DLL" "$INSTDIR\bin\MFC70FRA.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70ITA.DLL" "$INSTDIR\bin\MFC70ITA.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70JPN.DLL" "$INSTDIR\bin\MFC70JPN.DLL" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\MFC70KOR.DLL" "$INSTDIR\bin\MFC70KOR.DLL" "$INSTDIR"
+!ELSE
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\mfc42.dll" "$INSTDIR\bin\mfc42.dll" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcp60.dll" "$INSTDIR\bin\msvcp60.dll" "$INSTDIR"
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\msvcrt.dll" "$INSTDIR\bin\msvcrt.dll" "$INSTDIR"
+!ENDIF
+!ENDIF
+;!ENDIF
+!ENDIF
+ !insertmacro ReplaceDLL "${SYSTEMDIR}\psapi.dll" "$INSTDIR\bin\psapi.dll" "$INSTDIR"
+
+ ; Do WINDOWSDIR components
+ ;SetOutPath "$WINDOWSDIR"
+!ifdef DEBUG
+!endif
+
+ ; Do Windows SYSDIR (Control panel)
+ SetOutPath "$SYSDIR"
+ !insertmacro ReplaceDLL "${KFW_BIN_DIR}\kfwlogon.dll" "$SYSDIR\kfwlogon.dll" "$INSTDIR"
+ File "${KFW_BIN_DIR}\kfwcpcc.exe"
+
+ ; Get Kerberos config files
+ Call kfw.GetConfigFiles
+
+ Call KFWCommon.Install
+
+ ; KfW Reg entries
+ DeleteRegKey HKLM "${KFW_REGKEY_ROOT}\Client\CurrentVersion"
+ WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Client\CurrentVersion" "VersionString" ${KFW_VERSION}
+ WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Client\CurrentVersion" "Title" "KfW"
+ WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Client\CurrentVersion" "Description" "${PROGRAM_NAME}"
+ WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Client\CurrentVersion" "PathName" "$INSTDIR"
+ WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Client\CurrentVersion" "Software Type" "Authentication"
+ WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\Client\CurrentVersion" "MajorVersion" ${KFW_MAJORVERSION}
+ WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\Client\CurrentVersion" "MinorVersion" ${KFW_MINORVERSION}
+ WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\Client\CurrentVersion" "PatchLevel" ${KFW_PATCHLEVEL}
+
+ DeleteRegKey HKLM "${KFW_REGKEY_ROOT}\Client\${KFW_VERSION}"
+ WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Client\${KFW_VERSION}" "VersionString" ${KFW_VERSION}
+ WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Client\${KFW_VERSION}" "Title" "KfW"
+ WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Client\${KFW_VERSION}" "Description" "${PROGRAM_NAME}"
+ WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Client\${KFW_VERSION}" "PathName" "$INSTDIR"
+ WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Client\${KFW_VERSION}" "Software Type" "Authentication"
+ WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\Client\${KFW_VERSION}" "MajorVersion" ${KFW_MAJORVERSION}
+ WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\Client\${KFW_VERSION}" "MinorVersion" ${KFW_MINORVERSION}
+ WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\Client\${KFW_VERSION}" "PatchLevel" ${KFW_PATCHLEVEL}
+
+ ; Daemon entries
+ WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\MIT Kerberos" "" ""
+ WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\MIT Kerberos\NetworkProvider" "ProviderPath" "$SYSDIR\kfwlogon.dll"
+ WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\MIT Kerberos\NetworkProvider" "AuthentProviderPath" "$SYSDIR\kfwlogon.dll"
+ WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\MIT Kerberos\NetworkProvider" "Class" 2
+ WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\MIT Kerberos\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"
+ WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\MIT Kerberos\NetworkProvider" "Name" "MIT Kerberos"
+
+ ; WinLogon Event Notification
+ WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\WinLogon\Notify\MIT_KFW" "Asynchronous" 0
+ WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\WinLogon\Notify\MIT_KFW" "Impersonate" 0
+ WriteRegStr HKLM "Software\Microsoft\Windows NT\CurrentVersion\WinLogon\Notify\MIT_KFW" "DLLName" "kfwlogon.dll"
+ WriteRegStr HKLM "Software\Microsoft\Windows NT\CurrentVersion\WinLogon\Notify\MIT_KFW" "Logon" "KFW_Logon_Event"
+
+ ; NetIdMgr Reg entries
+ WriteRegStr HKLM "Software\MIT\NetIDMgr\PluginManager\Modules\MITKrb5" "ImagePath" "$INSTDIR\bin\krb5cred.dll"
+ WriteRegStr HKLM "Software\MIT\NetIDMgr\PluginManager\Modules\MITKrb5" "PluginList" "Krb5Cred,Krb5Ident"
+
+ WriteRegStr HKLM "Software\MIT\NetIDMgr\PluginManager\Plugins\Krb5Cred" "Module" "MITKrb5"
+ WriteRegStr HKLM "Software\MIT\NetIDMgr\PluginManager\Plugins\Krb5Cred" "Description" "Kerberos v5 Credentials Provider"
+ WriteRegDWORD HKLM "Software\MIT\NetIDMgr\PluginManager\Plugins\Krb5Cred" "Type" 1
+ WriteRegDWORD HKLM "Software\MIT\NetIDMgr\PluginManager\Plugins\Krb5Cred" "Flags" 0
+
+ WriteRegStr HKLM "Software\MIT\NetIDMgr\PluginManager\Plugins\Krb5Ident" "Module" "MITKrb5"
+ WriteRegStr HKLM "Software\MIT\NetIDMgr\PluginManager\Plugins\Krb5Ident" "Description" "Kerberos v5 Identity Provider"
+ WriteRegStr HKLM "Software\MIT\NetIDMgr\PluginManager\Plugins\Krb5Ident" "Dependencies" "Krb5Cred"
+ WriteRegDWORD HKLM "Software\MIT\NetIDMgr\PluginManager\Plugins\Krb5Ident" "Type" 2
+ WriteRegDWORD HKLM "Software\MIT\NetIDMgr\PluginManager\Plugins\Krb5Ident" "Flags" 0
+
+ ;Write start menu entries
+ CreateDirectory "$SMPROGRAMS\${PROGRAM_NAME}"
+ SetOutPath "$INSTDIR\bin"
+ CreateShortCut "$SMPROGRAMS\${PROGRAM_NAME}\Uninstall ${PROGRAM_NAME}.lnk" "$INSTDIR\Uninstall.exe"
+
+ ReadINIStr $R0 $1 "Field 2" "State" ; startup
+
+ CreateShortCut "$SMPROGRAMS\${PROGRAM_NAME}\Network Identity Manager.lnk" "$INSTDIR\bin\netidmgr.exe" "" "$INSTDIR\bin\netidmgr.exe"
+
+startshort:
+ StrCmp $R0 "0" nostart
+ CreateShortCut "$SMSTARTUP\Network Identity Manager.lnk" "$INSTDIR\bin\netidmgr.exe" "" "$INSTDIR\bin\netidmgr.exe" 0 SW_SHOWMINIMIZED
+ goto checkconflicts
+
+nostart:
+ Delete "$SMSTARTUP\Network Identity Manager.lnk"
+
+checkconflicts:
+ Call GetSystemPath
+ Push "krb5_%WL%.dll"
+ Call SearchPath
+ Pop $R0
+ StrCmp $R0 "" addpath
+
+ Push $R0
+ Call GetParent
+ Pop $R0
+ StrCmp $R0 "$INSTDIR\bin" addpath
+ MessageBox MB_OK|MB_ICONINFORMATION|MB_TOPMOST "A previous installation of MIT Kerberos for Windows binaries has been found in folder $R0. This may interfere with the use of the current installation."
+
+addpath:
+ ; Add kfw bin to path
+ Push "$INSTDIR\bin"
+ Call AddToSystemPath
+
+ Call GetWindowsVersion
+ Pop $R0
+ StrCmp $R0 "2003" addAllowTgtKey
+ StrCmp $R0 "2000" addAllowTgtKey
+ StrCmp $R0 "XP" addAllowTgtKey
+ goto skipAllowTgtKey
+
+addAllowTgtKey:
+ ReadRegDWORD $R0 HKLM "SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters" "AllowTGTSessionKey"
+ WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\Client\${KFW_VERSION}" "AllowTGTSessionKeyBackup" $R0
+ WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters" "AllowTGTSessionKey" "1"
+ ReadRegDWORD $R0 HKLM "SYSTEM\CurrentControlSet\Control\Lsa\Kerberos" "AllowTGTSessionKey"
+ WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\Client\${KFW_VERSION}" "AllowTGTSessionKeyBackup2" $R0
+ WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Control\Lsa\Kerberos" "AllowTGTSessionKey" "1"
+skipAllowTgtKey:
+
+ ; The following are keys added for Terminal Server compatibility
+ ; http://support.microsoft.com/default.aspx?scid=kb;EN-US;186499
+ WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\netidmgr" "Flags" 0x408
+ WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\kinit" "Flags" 0x408
+ WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\klist" "Flags" 0x408
+ WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\kdestroy" "Flags" 0x408
+ WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\gss" "Flags" 0x408
+ WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\gss-client" "Flags" 0x408
+ WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\gss-server" "Flags" 0x408
+ ;WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\k524init" "Flags" 0x408
+ WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\kpasswd" "Flags" 0x408
+ WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\kvno" "Flags" 0x408
+ WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\ms2mit" "Flags" 0x408
+ WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\mit2ms" "Flags" 0x408
+ WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\mit2ms" "Flags" 0x408
+ WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\kcpytkt" "Flags" 0x408
+ WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\kdeltkt" "Flags" 0x408
+ WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\k95" "Flags" 0x408
+ WriteRegDWORD HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\k95g" "Flags" 0x408
+
+SectionEnd
+
+Section "Debug Symbols" secDebug
+
+ SetOutPath "$INSTDIR\bin"
+ File "${KFW_BIN_DIR}\comerr%WL%.pdb"
+ File "${KFW_BIN_DIR}\gss.pdb"
+ File "${KFW_BIN_DIR}\gss-client.pdb"
+ File "${KFW_BIN_DIR}\gss-server.pdb"
+ File "${KFW_BIN_DIR}\gssapi%WL%.pdb"
+ ;File "${KFW_BIN_DIR}\k524init.pdb"
+ File "${KFW_BIN_DIR}\kdestroy.pdb"
+ File "${KFW_BIN_DIR}\kinit.pdb"
+ File "${KFW_BIN_DIR}\klist.pdb"
+ File "${KFW_BIN_DIR}\kpasswd.pdb"
+ File "${KFW_BIN_DIR}\kvno.pdb"
+ File "${KFW_BIN_DIR}\krb5_%WL%.pdb"
+ File "${KFW_BIN_DIR}\k5sprt%WL%.pdb"
+ ;File "${KFW_BIN_DIR}\krb524.pdb"
+ File "${KFW_BIN_DIR}\krbcc%WL%.pdb"
+ File "${KFW_BIN_DIR}\krbcc%WL%s.pdb"
+ File "${KFW_BIN_DIR}\leashw%WL%.pdb"
+ File "${KFW_BIN_DIR}\krb5cred.pdb"
+ File "${KFW_BIN_DIR}\ms2mit.pdb"
+ File "${KFW_BIN_DIR}\mit2ms.pdb"
+ File "${KFW_BIN_DIR}\kcpytkt.pdb"
+ File "${KFW_BIN_DIR}\kdeltkt.pdb"
+ File "${KFW_BIN_DIR}\wshelp%WL%.pdb"
+ File "${KFW_BIN_DIR}\xpprof%WL%.pdb"
+
+ Call GetWindowsVersion
+ Pop $R0
+ StrCmp $R0 "2000" nidpdb_inst2000
+ File "${KFW_BIN_DIR}\netidmgr.pdb"
+ File "${KFW_BIN_DIR}\nidmgr%WL%.pdb"
+ goto nidpdb_done
+nidpdb_inst2000:
+ File "${KFW_BIN_DIR}\W2K\netidmgr.pdb"
+ File "${KFW_BIN_DIR}\W2K\nidmgr%WL%.pdb"
+nidpdb_done:
+
+!IFDEF DEBUG
+!IFDEF CL_1400
+!IFDEF X86
+ File "$%SystemRoot%\symbols\dll\msvcr80d.i386.pdb"
+ File "$%SystemRoot%\symbols\dll\msvcp80d.i386.pdb"
+ File "$%SystemRoot%\symbols\dll\mfc80d.i386.pdb"
+!ELSE
+!IFDEF AMD64
+ File "$%SystemRoot%\symbols\dll\msvcr80d.AMD64.pdb"
+ File "$%SystemRoot%\symbols\dll\msvcp80d.AMD64.pdb"
+ File "$%SystemRoot%\symbols\dll\mfc80d.AMD64.pdb"
+!ENDIF ; AMD64
+!ENDIF ; X86
+!ELSE ; NOT CL_1400
+!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 ; DEBUG
+
+ SetOutPath "$SYSDIR"
+ File "${KFW_BIN_DIR}\kfwlogon.pdb"
+ File "${KFW_BIN_DIR}\kfwcpcc.pdb"
+
+SectionEnd
+
+;----------------------
+; Kerberos for Windows SDK
+Section "KfW SDK" secSDK
+
+ RMDir /r "$INSTDIR\inc"
+ RMDir /r "$INSTDIR\lib"
+ RMDir /r "$INSTDIR\install"
+ RMDir /r "$INSTDIR\sample"
+
+ SetOutPath "$INSTDIR\doc"
+ File /r "${KFW_DOC_DIR}\netiddev.chm"
+
+ SetOutPath "$INSTDIR\inc\krb5"
+ File /r "${KFW_INC_DIR}\krb5\*"
+
+ SetOutPath "$INSTDIR\inc\leash"
+ File /r "${KFW_INC_DIR}\leash\*"
+
+ SetOutPath "$INSTDIR\inc\loadfuncs"
+ File /r "${KFW_INC_DIR}\loadfuncs\*"
+
+ SetOutPath "$INSTDIR\inc\netidmgr"
+ File /r "${KFW_INC_DIR}\netidmgr\*"
+
+ SetOutPath "$INSTDIR\inc\wshelper"
+ File /r "${KFW_INC_DIR}\wshelper\*"
+
+ SetOutPath "$INSTDIR\lib\%cpu%"
+ File /r "${KFW_LIB_DIR}\*"
+
+ SetOutPath "$INSTDIR\install"
+ File /r "${KFW_INSTALL_DIR}\*"
+
+ SetOutPath "$INSTDIR\sample"
+ File /r "${KFW_SAMPLE_DIR}\*"
+
+ CreateShortCut "$SMPROGRAMS\${PROGRAM_NAME}\Network Identity Developer Documentation.lnk" "$INSTDIR\bin\netiddev.chm"
+
+ Call KFWCommon.Install
+
+ ; KfW Reg entries
+ DeleteRegKey HKLM "${KFW_REGKEY_ROOT}\SDK\CurrentVersion"
+ WriteRegStr HKLM "${KFW_REGKEY_ROOT}\SDK\CurrentVersion" "VersionString" ${KFW_VERSION}
+ WriteRegStr HKLM "${KFW_REGKEY_ROOT}\SDK\CurrentVersion" "Title" "KfW"
+ WriteRegStr HKLM "${KFW_REGKEY_ROOT}\SDK\CurrentVersion" "Description" "${PROGRAM_NAME}"
+ WriteRegStr HKLM "${KFW_REGKEY_ROOT}\SDK\CurrentVersion" "PathName" "$INSTDIR"
+ WriteRegStr HKLM "${KFW_REGKEY_ROOT}\SDK\CurrentVersion" "Software Type" "Authentication"
+ WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\SDK\CurrentVersion" "MajorVersion" ${KFW_MAJORVERSION}
+ WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\SDK\CurrentVersion" "MinorVersion" ${KFW_MINORVERSION}
+ WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\SDK\CurrentVersion" "PatchLevel" ${KFW_PATCHLEVEL}
+
+ DeleteRegKey HKLM "${KFW_REGKEY_ROOT}\SDK\${KFW_VERSION}"
+ WriteRegStr HKLM "${KFW_REGKEY_ROOT}\SDK\${KFW_VERSION}" "VersionString" ${KFW_VERSION}
+ WriteRegStr HKLM "${KFW_REGKEY_ROOT}\SDK\${KFW_VERSION}" "Title" "KfW"
+ WriteRegStr HKLM "${KFW_REGKEY_ROOT}\SDK\${KFW_VERSION}" "Description" "${PROGRAM_NAME}"
+ WriteRegStr HKLM "${KFW_REGKEY_ROOT}\SDK\${KFW_VERSION}" "PathName" "$INSTDIR"
+ WriteRegStr HKLM "${KFW_REGKEY_ROOT}\SDK\${KFW_VERSION}" "Software Type" "Authentication"
+ WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\SDK\${KFW_VERSION}" "MajorVersion" ${KFW_MAJORVERSION}
+ WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\SDK\${KFW_VERSION}" "MinorVersion" ${KFW_MINORVERSION}
+ WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\SDK\${KFW_VERSION}" "PatchLevel" ${KFW_PATCHLEVEL}
+ WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\SDK\${KFW_VERSION}" "PatchLevel" ${KFW_PATCHLEVEL}
+
+SectionEnd
+
+;----------------------
+; Kerberos for Windows Documentation
+Section "KfW Documentation" secDocs
+
+ RMDir /r "$INSTDIR\doc"
+
+ SetOutPath "$INSTDIR\doc"
+ File "${KFW_DOC_DIR}\relnotes.html"
+ File "${KFW_DOC_DIR}\netidmgr_userdoc.pdf"
+
+ Call KFWCommon.Install
+
+ ; KfW Reg entries
+ DeleteRegKey HKLM "${KFW_REGKEY_ROOT}\Documentation\CurrentVersion"
+ WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Documentation\CurrentVersion" "VersionString" ${KFW_VERSION}
+ WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Documentation\CurrentVersion" "Title" "KfW"
+ WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Documentation\CurrentVersion" "Description" "${PROGRAM_NAME}"
+ WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Documentation\CurrentVersion" "PathName" "$INSTDIR"
+ WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Documentation\CurrentVersion" "Software Type" "Authentication"
+ WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\Documentation\CurrentVersion" "MajorVersion" ${KFW_MAJORVERSION}
+ WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\Documentation\CurrentVersion" "MinorVersion" ${KFW_MINORVERSION}
+ WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\Documentation\CurrentVersion" "PatchLevel" ${KFW_PATCHLEVEL}
+
+ DeleteRegKey HKLM "${KFW_REGKEY_ROOT}\Documentation\${KFW_VERSION}"
+ WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Documentation\${KFW_VERSION}" "VersionString" ${KFW_VERSION}
+ WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Documentation\${KFW_VERSION}" "Title" "KfW"
+ WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Documentation\${KFW_VERSION}" "Description" "${PROGRAM_NAME}"
+ WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Documentation\${KFW_VERSION}" "PathName" "$INSTDIR"
+ WriteRegStr HKLM "${KFW_REGKEY_ROOT}\Documentation\${KFW_VERSION}" "Software Type" "Authentication"
+ WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\Documentation\${KFW_VERSION}" "MajorVersion" ${KFW_MAJORVERSION}
+ WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\Documentation\${KFW_VERSION}" "MinorVersion" ${KFW_MINORVERSION}
+ WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\Documentation\${KFW_VERSION}" "PatchLevel" ${KFW_PATCHLEVEL}
+ WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\Documentation\${KFW_VERSION}" "PatchLevel" ${KFW_PATCHLEVEL}
+
+ ;Write start menu entries
+ CreateDirectory "$SMPROGRAMS\${PROGRAM_NAME}"
+ SetOutPath "$INSTDIR\doc"
+ CreateShortCut "$SMPROGRAMS\${PROGRAM_NAME}\Release Notes.lnk" "$INSTDIR\doc\relnotes.html"
+ CreateShortCut "$SMPROGRAMS\${PROGRAM_NAME}\Network Identity Manager User Documentation.lnk" "$INSTDIR\doc\netidmgr_userdoc.pdf"
+ CreateShortCut "$SMPROGRAMS\${PROGRAM_NAME}\Network Identity Manager Documentation.lnk" "$INSTDIR\bin\netidmgr.chm"
+SectionEnd
+
+;Display the Finish header
+;Insert this macro after the sections if you are not using a finish page
+;!insertmacro MUI_SECTIONS_FINISHHEADER
+
+;--------------------------------
+;Installer Functions
+
+Function .onInit
+ !insertmacro MUI_LANGDLL_DISPLAY
+
+ ; Set the default install options
+ Push $0
+
+ Call IsUserAdmin
+ Pop $R0
+ StrCmp $R0 "true" checkVer
+
+ MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST "You must be an administrator of this machine to install this software."
+ Abort
+
+checkVer:
+ ; Check Version of Windows. Do not install onto Windows 95
+ Call GetWindowsVersion
+ Pop $R0
+ StrCmp $R0 "95" wrongVersion
+ StrCmp $R0 "98" wrongVersion
+ StrCmp $R0 "ME" wrongVersion
+ StrCmp $R0 "NT 4.0" wrongVersion
+ goto checkIPHLPAPI
+
+wrongVersion:
+ MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST "MIT ${PROGRAM_NAME} requires Microsoft Windows 2000 or higher."
+ Abort
+
+checkIPHLPAPI:
+ ClearErrors
+ ReadEnvStr $R0 "WinDir"
+ GetDLLVersion "$R0\System32\iphlpapi.dll" $R1 $R2
+ IfErrors +1 +3
+ GetDLLVersion "$R0\System\iphlpapi.dll" $R1 $R2
+ IfErrors iphlperror
+ IntOp $R3 $R2 / 0x00010000
+ IntCmpU $R3 1952 iphlpwarning checkprevious checkprevious
+
+iphlperror:
+ MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST "MIT ${PROGRAM_NAME} requires Internet Explorer version 5.01 or higher. IPHLPAPI.DLL is missing."
+ Abort
+
+iphlpwarning:
+ MessageBox MB_OK|MB_ICONINFORMATION|MB_TOPMOST "IPHLPAPI.DLL must be upgraded. Please install Internet Explorer 5.01 or higher."
+
+checkprevious:
+ ClearErrors
+ ReadRegStr $R0 HKLM \
+ "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PROGRAM_NAME}" \
+ "DisplayVersion"
+ IfErrors testWIX
+ StrCmp $R0 "${KFW_VERSION}" contInstall
+
+ MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \
+ "${PROGRAM_NAME} is already installed. $\n$\nClick `OK` to remove the \
+ previous version or `Cancel` to cancel this upgrade or downgrade." \
+ IDOK uninstNSIS
+ Abort
+
+;Run the uninstaller
+uninstNSIS:
+ ReadRegStr $R0 HKLM \
+ "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PROGRAM_NAME}" \
+ "UninstallString"
+ ClearErrors
+ ExecWait '$R0 _?=$INSTDIR' ;Do not copy the uninstaller to a temp file
+
+ IfErrors no_remove_uninstaller
+ ;You can either use Delete /REBOOTOK in the uninstaller or add some code
+ ;here to remove the uninstaller. Use a registry key to check
+ ;whether the user has chosen to uninstall. If you are using an uninstaller
+ ;components page, make sure all sections are uninstalled.
+
+ Push $R1
+ Call RestartRequired
+ Pop $R1
+ StrCmp $R1 "1" Restart DoNotRestart
+
+testWIX:
+ ClearErrors
+ ReadRegStr $R0 HKLM \
+ "Software\Microsoft\Windows\CurrentVersion\Uninstall\{FD5B1F41-81BB-4BBC-9F7E-4B971660AE1A}" \
+ "DisplayVersion"
+ IfErrors testSWRT
+
+ MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \
+ "${PROGRAM_NAME} is already installed. $\n$\nClick `OK` to remove the \
+ previous version or `Cancel` to cancel this installation." \
+ IDOK uninstMSI1
+ Abort
+
+;Run the uninstaller
+uninstMSI1:
+ Call GetWindowsVersion
+ Pop $R0
+ StrCmp $R0 "2000" uninstMSI1_2000
+
+ ClearErrors
+ ExecWait 'MSIEXEC /x{FD5B1F41-81BB-4BBC-9F7E-4B971660AE1A} /passive /promptrestart'
+
+ IfErrors no_remove_uninstaller
+ ;You can either use Delete /REBOOTOK in the uninstaller or add some code
+ ;here to remove the uninstaller. Use a registry key to check
+ ;whether the user has chosen to uninstall. If you are using an uninstaller
+ ;components page, make sure all sections are uninstalled.
+
+ Push $R1
+ Call RestartRequired
+ Pop $R1
+ StrCmp $R1 "1" Restart DoNotRestart
+
+uninstMSI1_2000:
+ ClearErrors
+ ExecWait 'MSIEXEC /x{FD5B1F41-81BB-4BBC-9F7E-4B971660AE1A}'
+
+ IfErrors no_remove_uninstaller
+ ;You can either use Delete /REBOOTOK in the uninstaller or add some code
+ ;here to remove the uninstaller. Use a registry key to check
+ ;whether the user has chosen to uninstall. If you are using an uninstaller
+ ;components page, make sure all sections are uninstalled.
+
+ Push $R1
+ Call RestartRequired
+ Pop $R1
+ StrCmp $R1 "1" Restart DoNotRestart
+
+testSWRT:
+ ClearErrors
+ ReadRegStr $R0 HKLM \
+ "Software\Microsoft\Windows\CurrentVersion\Uninstall\{61211594-AAA1-4A98-A299-757326763CC7}" \
+ "DisplayVersion"
+ IfErrors testPismere
+
+ MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \
+ "${PROGRAM_NAME} is already installed. $\n$\nClick `OK` to remove the \
+ previous version or `Cancel` to cancel this installation." \
+ IDOK uninstMSI2
+ Abort
+
+;Run the uninstaller
+uninstMSI2:
+ Call GetWindowsVersion
+ Pop $R0
+ StrCmp $R0 "2000" uninstMSI2_2000
+
+ ClearErrors
+ ExecWait 'MSIEXEC /x{61211594-AAA1-4A98-A299-757326763CC7} /passive /promptrestart'
+
+ IfErrors no_remove_uninstaller
+ ;You can either use Delete /REBOOTOK in the uninstaller or add some code
+ ;here to remove the uninstaller. Use a registry key to check
+ ;whether the user has chosen to uninstall. If you are using an uninstaller
+ ;components page, make sure all sections are uninstalled.
+
+ Push $R1
+ Call RestartRequired
+ Pop $R1
+ StrCmp $R1 "1" Restart DoNotRestart
+
+uninstMSI2_2000:
+ ClearErrors
+ ExecWait 'MSIEXEC /x{61211594-AAA1-4A98-A299-757326763CC7}'
+
+ IfErrors no_remove_uninstaller
+ ;You can either use Delete /REBOOTOK in the uninstaller or add some code
+ ;here to remove the uninstaller. Use a registry key to check
+ ;whether the user has chosen to uninstall. If you are using an uninstaller
+ ;components page, make sure all sections are uninstalled.
+
+ Push $R1
+ Call RestartRequired
+ Pop $R1
+ StrCmp $R1 "1" Restart DoNotRestart
+
+testPismere:
+ ClearErrors
+ ReadRegStr $R0 HKLM \
+ "Software\Microsoft\Windows\CurrentVersion\Uninstall\{83977767-388D-4DF8-BB08-3BF2401635BD}" \
+ "DisplayVersion"
+ IfErrors contInstall
+
+ MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \
+ "${PROGRAM_NAME} is already installed. $\n$\nClick `OK` to remove the \
+ previous version or `Cancel` to cancel this installation." \
+ IDOK uninstPismere
+ Abort
+
+;Run the uninstaller
+uninstPismere:
+ Call GetWindowsVersion
+ Pop $R0
+ StrCmp $R0 "2000" uninstPismere_2000
+
+ ClearErrors
+ ExecWait 'MSIEXEC /x{83977767-388D-4DF8-BB08-3BF2401635BD} /passive /promptrestart'
+
+ IfErrors no_remove_uninstaller
+ ;You can either use Delete /REBOOTOK in the uninstaller or add some code
+ ;here to remove the uninstaller. Use a registry key to check
+ ;whether the user has chosen to uninstall. If you are using an uninstaller
+ ;components page, make sure all sections are uninstalled.
+
+ Push $R1
+ Call RestartRequired
+ Pop $R1
+ StrCmp $R1 "1" Restart DoNotRestart
+
+uninstPismere_2000:
+ ClearErrors
+ ExecWait 'MSIEXEC /x{83977767-388D-4DF8-BB08-3BF2401635BD}'
+
+ IfErrors no_remove_uninstaller
+ ;You can either use Delete /REBOOTOK in the uninstaller or add some code
+ ;here to remove the uninstaller. Use a registry key to check
+ ;whether the user has chosen to uninstall. If you are using an uninstaller
+ ;components page, make sure all sections are uninstalled.
+
+ Push $R1
+ Call RestartRequired
+ Pop $R1
+ StrCmp $R1 "1" Restart DoNotRestart
+
+
+Restart:
+ MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST "Please reboot and then restart the installer."
+ Abort
+ MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST "Abort failed"
+
+DoNotRestart:
+no_remove_uninstaller:
+
+contInstall:
+ ; 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 KfW components are installed, we do a clean install with default options. (Client/Docs)
+ ; 2) If existing modules are installed, we keep them selected
+ ; 3) If it is an upgrade, we set the text accordingly, else we mark it as a re-install
+ ; TODO: Downgrade?
+ Call IsAnyKfWInstalled
+ Pop $R0
+ StrCmp $R0 "0" DefaultOptions
+
+ Call ShouldClientInstall
+ Pop $R2
+
+ StrCmp $R2 "0" NoClient
+ StrCmp $R2 "1" ReinstallClient
+ StrCmp $R2 "2" UpgradeClient
+ StrCmp $R2 "3" DowngradeClient
+
+ SectionGetFlags ${secClient} $0
+ IntOp $0 $0 | ${SF_SELECTED}
+ SectionSetFlags ${secClient} $0
+ ;# !insertmacro SelectSection ${secClient}
+ goto skipClient
+NoClient:
+ ;StrCpy $1 ${secClient} ; Gotta remember which section we are at now...
+ SectionGetFlags ${secClient} $0
+ IntOp $0 $0 & ${SECTION_OFF}
+ SectionSetFlags ${secClient} $0
+ goto skipClient
+UpgradeClient:
+ SectionGetFlags ${secClient} $0
+ IntOp $0 $0 | ${SF_SELECTED}
+ SectionSetFlags ${secClient} $0
+ SectionSetText ${secClient} $(UPGRADE_CLIENT)
+ goto skipClient
+ReinstallClient:
+ SectionGetFlags ${secClient} $0
+ IntOp $0 $0 | ${SF_SELECTED}
+ SectionSetFlags ${secClient} $0
+ SectionSetText ${secClient} $(REINSTALL_CLIENT)
+ goto skipClient
+DowngradeClient:
+ SectionGetFlags ${secClient} $0
+ IntOp $0 $0 | ${SF_SELECTED}
+ SectionSetFlags ${secClient} $0
+ SectionSetText ${secClient} $(DOWNGRADE_CLIENT)
+ goto skipClient
+
+
+skipClient:
+
+ Call ShouldSDKInstall
+ Pop $R2
+ StrCmp $R2 "0" NoSDK
+ StrCmp $R2 "1" ReinstallSDK
+ StrCmp $R2 "2" UpgradeSDK
+ StrCmp $R2 "3" DowngradeSDK
+
+ SectionGetFlags ${secSDK} $0
+ IntOp $0 $0 | ${SF_SELECTED}
+ SectionSetFlags ${secSDK} $0
+ ;# !insertmacro UnselectSection ${secSDK}
+ goto skipSDK
+
+UpgradeSDK:
+ SectionGetFlags ${secSDK} $0
+ IntOp $0 $0 | ${SF_SELECTED}
+ SectionSetFlags ${secSDK} $0
+ SectionSetText ${secSDK} $(UPGRADE_SDK)
+ goto skipSDK
+
+ReinstallSDK:
+ SectionGetFlags ${secSDK} $0
+ IntOp $0 $0 | ${SF_SELECTED}
+ SectionSetFlags ${secSDK} $0
+ SectionSetText ${secSDK} $(REINSTALL_SDK)
+ goto skipSDK
+
+DowngradeSDK:
+ SectionGetFlags ${secSDK} $0
+ IntOp $0 $0 | ${SF_SELECTED}
+ SectionSetFlags ${secSDK} $0
+ SectionSetText ${secSDK} $(DOWNGRADE_SDK)
+ goto skipSDK
+
+NoSDK:
+ SectionGetFlags ${secSDK} $0
+ IntOp $0 $0 & ${SECTION_OFF}
+ SectionSetFlags ${secSDK} $0
+ ;# !insertmacro UnselectSection ${secSDK}
+ goto skipSDK
+
+skipSDK:
+
+ Call ShouldDocumentationInstall
+ Pop $R2
+ StrCmp $R2 "0" NoDocumentation
+ StrCmp $R2 "1" ReinstallDocumentation
+ StrCmp $R2 "2" UpgradeDocumentation
+ StrCmp $R2 "3" DowngradeDocumentation
+
+ SectionGetFlags ${secDocs} $0
+ IntOp $0 $0 | ${SF_SELECTED}
+ SectionSetFlags ${secDocs} $0
+ ;# !insertmacro UnselectSection ${secDocs}
+ goto skipDocumentation
+
+UpgradeDocumentation:
+ SectionGetFlags ${secDocs} $0
+ IntOp $0 $0 | ${SF_SELECTED}
+ SectionSetFlags ${secDocs} $0
+ SectionSetText ${secDocs} $(UPGRADE_DOCS)
+ goto skipDocumentation
+
+ReinstallDocumentation:
+ SectionGetFlags ${secDocs} $0
+ IntOp $0 $0 | ${SF_SELECTED}
+ SectionSetFlags ${secDocs} $0
+ SectionSetText ${secDocs} $(REINSTALL_DOCS)
+ goto skipDocumentation
+
+DowngradeDocumentation:
+ SectionGetFlags ${secDocs} $0
+ IntOp $0 $0 | ${SF_SELECTED}
+ SectionSetFlags ${secDocs} $0
+ SectionSetText ${secDocs} $(DOWNGRADE_DOCS)
+ goto skipDocumentation
+
+NoDocumentation:
+ SectionGetFlags ${secDocs} $0
+ IntOp $0 $0 & ${SECTION_OFF}
+ SectionSetFlags ${secDocs} $0
+ ;# !insertmacro UnselectSection ${secDocs}
+ goto skipDocumentation
+
+skipDocumentation:
+ goto end
+
+DefaultOptions:
+ ; Client Selected
+ SectionGetFlags ${secClient} $0
+ IntOp $0 $0 | ${SF_SELECTED}
+ SectionSetFlags ${secClient} $0
+
+ ; SDK NOT selected
+ SectionGetFlags ${secSDK} $0
+ IntOp $0 $0 & ${SECTION_OFF}
+ SectionSetFlags ${secSDK} $0
+
+ ; Documentation selected
+ SectionGetFlags ${secDocs} $0
+ IntOp $0 $0 | ${SF_SELECTED}
+ SectionSetFlags ${secDocs} $0
+ goto end
+
+end:
+ Pop $0
+
+ Push $R0
+
+ ; See if we can set a default installation path...
+ ReadRegStr $R0 HKLM "${KFW_REGKEY_ROOT}\Client\CurrentVersion" "PathName"
+ StrCmp $R0 "" TrySDK
+ StrCpy $INSTDIR $R0
+ goto Nope
+
+TrySDK:
+ ReadRegStr $R0 HKLM "${KFW_REGKEY_ROOT}\SDK\CurrentVersion" "PathName"
+ StrCmp $R0 "" TryDocs
+ StrCpy $INSTDIR $R0
+ goto Nope
+
+TryDocs:
+ ReadRegStr $R0 HKLM "${KFW_REGKEY_ROOT}\Documentation\CurrentVersion" "PathName"
+ StrCmp $R0 "" TryRoot
+ StrCpy $INSTDIR $R0
+ goto Nope
+
+TryRoot:
+ ReadRegStr $R0 HKLM "${KFW_REGKEY_ROOT}" "InstallDir"
+ StrCmp $R0 "" Nope
+ StrCpy $INSTDIR $R0
+
+Nope:
+ Pop $R0
+
+ GetTempFilename $0
+ File /oname=$0 KfWConfigPage.ini
+ GetTempFilename $1
+ File /oname=$1 KfWConfigPage2.ini
+
+FunctionEnd
+
+
+;--------------------------------
+; These are our cleanup functions
+Function .onInstFailed
+Delete $0
+Delete $1
+FunctionEnd
+
+Function .onInstSuccess
+Delete $0
+Delete $1
+FunctionEnd
+
+
+;--------------------------------
+;Descriptions
+
+ !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
+ !insertmacro MUI_DESCRIPTION_TEXT ${secClient} $(DESC_secClient)
+ !insertmacro MUI_DESCRIPTION_TEXT ${secSDK} $(DESC_secSDK)
+ !insertmacro MUI_DESCRIPTION_TEXT ${secDocs} $(DESC_secDocs)
+ !insertmacro MUI_DESCRIPTION_TEXT ${secDebug} $(DESC_secDebug)
+ !insertmacro MUI_FUNCTION_DESCRIPTION_END
+
+;--------------------------------
+;Uninstaller Section
+
+Section "Uninstall"
+ ; Make sure the user REALLY wants to do this, unless they did a silent uninstall, in which case...let them!
+ IfSilent StartRemove ; New in v2.0b4
+ MessageBox MB_YESNO "Are you sure you want to remove MIT ${PROGRAM_NAME} from this machine?" IDYES StartRemove
+ abort
+
+StartRemove:
+
+ SetShellVarContext all
+ ; Stop the running processes
+ GetTempFileName $R0
+ File /oname=$R0 "Killer.exe"
+ nsExec::Exec '$R0 netidmgr.exe'
+ nsExec::Exec '$R0 krbcc%WL%s.exe'
+
+ Push "$INSTDIR\bin"
+ Call un.RemoveFromSystemPath
+
+ ; Delete documentation
+ Delete "$INSTDIR\doc\relnotes.html"
+ Delete "$INSTDIR\doc\netidmgr_userdoc.pdf"
+ Delete "$INSTDIR\doc\netiddev.chm"
+
+ Delete /REBOOTOK "$INSTDIR\bin\comerr%WL%.dll"
+ Delete /REBOOTOK "$INSTDIR\bin\gss.exe"
+ Delete /REBOOTOK "$INSTDIR\bin\gss-client.exe"
+ Delete /REBOOTOK "$INSTDIR\bin\gss-server.exe"
+ Delete /REBOOTOK "$INSTDIR\bin\gssapi32.dll"
+ ;Delete /REBOOTOK "$INSTDIR\bin\k524init.exe"
+ Delete /REBOOTOK "$INSTDIR\bin\kdestroy.exe"
+ Delete /REBOOTOK "$INSTDIR\bin\kinit.exe"
+ Delete /REBOOTOK "$INSTDIR\bin\klist.exe"
+ Delete /REBOOTOK "$INSTDIR\bin\kpasswd.exe"
+ Delete /REBOOTOK "$INSTDIR\bin\kvno.exe"
+ Delete /REBOOTOK "$INSTDIR\bin\krb5_%WL%.dll"
+ Delete /REBOOTOK "$INSTDIR\bin\k5sprt%WL%.dll"
+ ;Delete /REBOOTOK "$INSTDIR\bin\krb524.dll"
+ Delete /REBOOTOK "$INSTDIR\bin\krbcc%WL%.dll"
+ Delete /REBOOTOK "$INSTDIR\bin\krbcc%WL%s.exe"
+ Delete /REBOOTOK "$INSTDIR\bin\netidmgr.exe"
+ Delete /REBOOTOK "$INSTDIR\bin\netidmgr.chm"
+ Delete /REBOOTOK "$INSTDIR\bin\nidmgr%WL%.dll"
+ Delete /REBOOTOK "$INSTDIR\bin\krb5cred.dll"
+ Delete /REBOOTOK "$INSTDIR\bin\krb5cred_en_us.dll"
+ Delete /REBOOTOK "$INSTDIR\bin\leashw%WL%.dll"
+ Delete /REBOOTOK "$INSTDIR\bin\ms2mit.exe"
+ Delete /REBOOTOK "$INSTDIR\bin\mit2ms.exe"
+ Delete /REBOOTOK "$INSTDIR\bin\kcpytkt.exe"
+ Delete /REBOOTOK "$INSTDIR\bin\kdeltkt.exe"
+ Delete /REBOOTOK "$INSTDIR\bin\wshelp%WL%.dll"
+ Delete /REBOOTOK "$INSTDIR\bin\xpprof%WL%.dll"
+ Delete /REBOOTOK "$SYSDIR\bin\kfwlogon.dll"
+ Delete /REBOOTOK "$SYSDIR\bin\kfwcpcc.exe"
+
+ Delete /REBOOTOK "$INSTDIR\bin\comerr%WL%.pdb"
+ Delete /REBOOTOK "$INSTDIR\bin\gss.pdb"
+ Delete /REBOOTOK "$INSTDIR\bin\gss-client.pdb"
+ Delete /REBOOTOK "$INSTDIR\bin\gss-server.pdb"
+ Delete /REBOOTOK "$INSTDIR\bin\gssapi32.pdb"
+ ;Delete /REBOOTOK "$INSTDIR\bin\k524init.pdb"
+ Delete /REBOOTOK "$INSTDIR\bin\kdestroy.pdb"
+ Delete /REBOOTOK "$INSTDIR\bin\kinit.pdb"
+ Delete /REBOOTOK "$INSTDIR\bin\klist.pdb"
+ Delete /REBOOTOK "$INSTDIR\bin\kpasswd.pdb"
+ Delete /REBOOTOK "$INSTDIR\bin\kvno.pdb"
+ Delete /REBOOTOK "$INSTDIR\bin\krb5_32.pdb"
+ Delete /REBOOTOK "$INSTDIR\bin\k5sprt%WL%.pdb"
+ ;Delete /REBOOTOK "$INSTDIR\bin\krb524.pdb"
+ Delete /REBOOTOK "$INSTDIR\bin\krbcc%WL%.pdb"
+ Delete /REBOOTOK "$INSTDIR\bin\krbcc%WL%s.pdb"
+ Delete /REBOOTOK "$INSTDIR\bin\netidmgr.pdb"
+ Delete /REBOOTOK "$INSTDIR\bin\nidmgr%WL%.pdb"
+ Delete /REBOOTOK "$INSTDIR\bin\krb5cred.pdb"
+ Delete /REBOOTOK "$INSTDIR\bin\leashw%WL%.pdb"
+ Delete /REBOOTOK "$INSTDIR\bin\ms2mit.pdb"
+ Delete /REBOOTOK "$INSTDIR\bin\mit2ms.pdb"
+ Delete /REBOOTOK "$INSTDIR\bin\kcpytkt.pdb"
+ Delete /REBOOTOK "$INSTDIR\bin\kdeltkt.pdb"
+ Delete /REBOOTOK "$INSTDIR\bin\wshelp%WL%.pdb"
+ Delete /REBOOTOK "$INSTDIR\bin\xpprof%WL%.pdb"
+ Delete /REBOOTOK "$SYSDIR\bin\kfwlogon.pdb"
+ Delete /REBOOTOK "$SYSDIR\bin\kfwcpcc.pdb"
+
+!IFDEF DEBUG
+!IFDEF CL_1400
+ Delete /REBOOTOK "$INSTDIR\bin\msvcr80d.dll"
+ Delete /REBOOTOK "$INSTDIR\bin\msvcr80d.pdb"
+ Delete /REBOOTOK "$INSTDIR\bin\msvcp80d.dll"
+ Delete /REBOOTOK "$INSTDIR\bin\msvcp80d.pdb"
+ Delete /REBOOTOK "$INSTDIR\bin\mfc80d.dll"
+ Delete /REBOOTOK "$INSTDIR\bin\mfc80d.pdb"
+!ELSE
+!IFDEF CL_1310
+ Delete /REBOOTOK "$INSTDIR\bin\msvcr71d.dll"
+ Delete /REBOOTOK "$INSTDIR\bin\msvcr71d.pdb"
+ Delete /REBOOTOK "$INSTDIR\bin\msvcp71d.dll"
+ Delete /REBOOTOK "$INSTDIR\bin\msvcp71d.pdb"
+ Delete /REBOOTOK "$INSTDIR\bin\mfc71d.dll"
+ Delete /REBOOTOK "$INSTDIR\bin\mfc71d.pdb"
+!ELSE
+!IFDEF CL_1300
+ Delete /REBOOTOK "$INSTDIR\bin\msvcr70d.dll"
+ Delete /REBOOTOK "$INSTDIR\bin\msvcr70d.pdb"
+ Delete /REBOOTOK "$INSTDIR\bin\msvcp70d.dll"
+ Delete /REBOOTOK "$INSTDIR\bin\msvcp70d.pdb"
+ Delete /REBOOTOK "$INSTDIR\bin\mfc70d.dll"
+ Delete /REBOOTOK "$INSTDIR\bin\mfc70d.pdb"
+!ELSE
+ Delete /REBOOTOK "$INSTDIR\bin\mfc42d.dll"
+ Delete /REBOOTOK "$INSTDIR\bin\mfc42d.pdb"
+ Delete /REBOOTOK "$INSTDIR\bin\msvcp60d.dll"
+ Delete /REBOOTOK "$INSTDIR\bin\msvcp60d.pdb"
+ Delete /REBOOTOK "$INSTDIR\bin\msvcrtd.dll"
+ Delete /REBOOTOK "$INSTDIR\bin\msvcrtd.pdb"
+!ENDIF
+!ENDIF
+!ENDIF
+!ELSE
+!IFDEF CL_1400
+ Delete /REBOOTOK "$INSTDIR\bin\mfc80.dll"
+ Delete /REBOOTOK "$INSTDIR\bin\msvcr80.dll"
+ Delete /REBOOTOK "$INSTDIR\bin\msvcp80.dll"
+ Delete /REBOOTOK "$INSTDIR\bin\MFC80CHS.DLL"
+ Delete /REBOOTOK "$INSTDIR\bin\MFC80CHT.DLL"
+ Delete /REBOOTOK "$INSTDIR\bin\MFC80DEU.DLL"
+ Delete /REBOOTOK "$INSTDIR\bin\MFC80ENU.DLL"
+ Delete /REBOOTOK "$INSTDIR\bin\MFC80ESP.DLL"
+ Delete /REBOOTOK "$INSTDIR\bin\MFC80FRA.DLL"
+ Delete /REBOOTOK "$INSTDIR\bin\MFC80ITA.DLL"
+ Delete /REBOOTOK "$INSTDIR\bin\MFC80JPN.DLL"
+ Delete /REBOOTOK "$INSTDIR\bin\MFC80KOR.DLL"
+!ELSE
+!IFDEF CL_1310
+ Delete /REBOOTOK "$INSTDIR\bin\mfc71.dll"
+ Delete /REBOOTOK "$INSTDIR\bin\msvcr71.dll"
+ Delete /REBOOTOK "$INSTDIR\bin\msvcp71.dll"
+ Delete /REBOOTOK "$INSTDIR\bin\MFC71CHS.DLL"
+ Delete /REBOOTOK "$INSTDIR\bin\MFC71CHT.DLL"
+ Delete /REBOOTOK "$INSTDIR\bin\MFC71DEU.DLL"
+ Delete /REBOOTOK "$INSTDIR\bin\MFC71ENU.DLL"
+ Delete /REBOOTOK "$INSTDIR\bin\MFC71ESP.DLL"
+ Delete /REBOOTOK "$INSTDIR\bin\MFC71FRA.DLL"
+ Delete /REBOOTOK "$INSTDIR\bin\MFC71ITA.DLL"
+ Delete /REBOOTOK "$INSTDIR\bin\MFC71JPN.DLL"
+ Delete /REBOOTOK "$INSTDIR\bin\MFC71KOR.DLL"
+!ELSE
+!IFDEF CL_1300
+ Delete /REBOOTOK "$INSTDIR\bin\mfc70.dll"
+ Delete /REBOOTOK "$INSTDIR\bin\msvcr70.dll"
+ Delete /REBOOTOK "$INSTDIR\bin\msvcp70.dll"
+ Delete /REBOOTOK "$INSTDIR\bin\MFC70CHS.DLL"
+ Delete /REBOOTOK "$INSTDIR\bin\MFC70CHT.DLL"
+ Delete /REBOOTOK "$INSTDIR\bin\MFC70DEU.DLL"
+ Delete /REBOOTOK "$INSTDIR\bin\MFC70ENU.DLL"
+ Delete /REBOOTOK "$INSTDIR\bin\MFC70ESP.DLL"
+ Delete /REBOOTOK "$INSTDIR\bin\MFC70FRA.DLL"
+ Delete /REBOOTOK "$INSTDIR\bin\MFC70ITA.DLL"
+ Delete /REBOOTOK "$INSTDIR\bin\MFC70JPN.DLL"
+ Delete /REBOOTOK "$INSTDIR\bin\MFC70KOR.DLL"
+!ELSE
+ Delete /REBOOTOK "$INSTDIR\bin\mfc42.dll"
+ Delete /REBOOTOK "$INSTDIR\bin\msvcp60.dll"
+ Delete /REBOOTOK "$INSTDIR\bin\msvcrt.dll"
+!ENDIF
+!ENDIF
+!ENDIF
+!ENDIF
+ Delete /REBOOTOK "$INSTDIR\bin\psapi.dll"
+
+ RMDir "$INSTDIR\bin"
+ RmDir "$INSTDIR\doc"
+ RmDir "$INSTDIR\lib"
+ RmDir "$INSTDIR\inc"
+ RmDir "$INSTDIR\install"
+ RMDir "$INSTDIR"
+
+ Delete "$SMPROGRAMS\${PROGRAM_NAME}\Uninstall ${PROGRAM_NAME}.lnk"
+ Delete "$SMPROGRAMS\${PROGRAM_NAME}\Network Identity Manager.lnk"
+ Delete "$SMPROGRAMS\${PROGRAM_NAME}\Release Notes.lnk"
+ Delete "$SMPROGRAMS\${PROGRAM_NAME}\Network Identity Manager User Documentation.lnk"
+ Delete "$SMPROGRAMS\${PROGRAM_NAME}\Network Identity Developer Documentation.lnk"
+ RmDir "$SMPROGRAMS\${PROGRAM_NAME}"
+ Delete "$SMSTARTUP\Network Identity Manager.lnk"
+
+ IfSilent SkipAsk
+; IfFileExists "$WINDIR\krb5.ini" CellExists SkipDelAsk
+; RealmExists:
+ MessageBox MB_YESNO "Would you like to keep your configuration files?" IDYES SkipDel
+ SkipAsk:
+ Delete "$WINDIR\krb5.ini"
+ Delete "$WINDIR\krb.con"
+ Delete "$WINDIR\krbrealm.con"
+
+ SkipDel:
+ Delete "$INSTDIR\Uninstall.exe"
+
+ ; Restore previous value of AllowTGTSessionKey
+ ReadRegDWORD $R0 HKLM "${KFW_REGKEY_ROOT}\Client\${KFW_VERSION}" "AllowTGTSessionKeyBackup"
+ WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters" "AllowTGTSessionKey" $R0
+ ReadRegDWORD $R0 HKLM "${KFW_REGKEY_ROOT}\Client\${KFW_VERSION}" "AllowTGTSessionKeyBackup2"
+ WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Control\Lsa\Kerberos" "AllowTGTSessionKey" $R0
+
+ ; The following are keys added for Terminal Server compatibility
+ DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\netidmgr"
+ DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\kinit"
+ DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\klist"
+ DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\kdestroy"
+ DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\gss"
+ DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\gss-client"
+ DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\gss-server"
+ ;DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\k524init"
+ DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\kpasswd"
+ DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\kvno"
+ DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\ms2mit"
+ DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\mit2ms"
+ DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\kcpytkt"
+ DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\kdeltkt"
+ DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\k95"
+ DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\Applications\k95g"
+
+ DeleteRegKey HKLM "${KFW_REGKEY_ROOT}\Client\CurrentVersion"
+ DeleteRegKey HKLM "${KFW_REGKEY_ROOT}\Client"
+ DeleteRegKey HKLM "${KFW_REGKEY_ROOT}\Documentation\CurrentVersion"
+ DeleteRegKey HKLM "${KFW_REGKEY_ROOT}\Documentation"
+ DeleteRegKey HKLM "${KFW_REGKEY_ROOT}\SDK\CurrentVersion"
+ DeleteRegKey HKLM "${KFW_REGKEY_ROOT}\SDK"
+ DeleteRegKey /ifempty HKLM "${KFW_REGKEY_ROOT}"
+ DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PROGRAM_NAME}"
+
+ ; NIM Registry Keys
+ DeleteRegKey HKLM "${NIM_REGKEY_ROOT}\PluginManager\Modules\MITKrb5"
+ DeleteRegKey HKLM "${NIM_REGKEY_ROOT}\PluginManager\Plugins\Krb5Cred"
+ DeleteRegKey HKLM "${NIM_REGKEY_ROOT}\PluginManager\Plugins\Krb5Ident"
+ DeleteRegKey /ifempty HKLM "${NIM_REGKEY_ROOT}\PluginManager\Modules"
+ DeleteRegKey /ifempty HKLM "${NIM_REGKEY_ROOT}\PluginManager\Plugins"
+ DeleteRegKey /ifempty HKLM "${NIM_REGKEY_ROOT}\PluginManager"
+ DeleteRegKey /ifempty HKLM "${NIM_REGKEY_ROOT}"
+
+ ; WinLogon Event Notification
+ DeleteRegKey HKLM "Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\MIT_KFW"
+ DeleteRegKey HKLM "SYSTEM\CurrentControlSet\Services\MIT Kerberos"
+
+ RMDir "$INSTDIR"
+
+SectionEnd
+
+;--------------------------------
+;Uninstaller Functions
+
+Function un.onInit
+
+ ;Get language from registry
+ ReadRegStr $LANGUAGE ${MUI_LANGDLL_REGISTRY_ROOT} "${MUI_LANGDLL_REGISTRY_KEY}" "${MUI_LANGDLL_REGISTRY_VALUENAME}"
+
+FunctionEnd
+
+Function un.onUninstSuccess
+
+ MessageBox MB_OK "Please reboot your machine to complete uninstallation of the software"
+
+FunctionEnd
+
+;------------------------------
+; Get the Configurations files from the Internet
+
+Function kfw.GetConfigFiles
+
+;Check if we should download Config Files
+ReadINIStr $R0 $0 "Field 4" "State"
+StrCmp $R0 "1" DoDownload
+
+;Do nothing if we're keeping the existing file
+ReadINIStr $R0 $0 "Field 2" "State"
+StrCmp $R0 "1" done
+
+ReadINIStr $R0 $0 "Field 3" "State"
+StrCmp $R0 "1" UsePackaged
+
+; If none of these, grab file from other location
+goto CheckOther
+
+DoDownload:
+ ReadINIStr $R0 $0 "Field 5" "State"
+ NSISdl::download "$R0/krb5.ini" "$WINDIR\krb5.ini"
+ NSISdl::download "$R0/krb.con" "$WINDIR\krb.con"
+ NSISdl::download "$R0/krbrealm.con" "$WINDIR\krbrealm.con"
+ Pop $R0 ;Get the return value
+ StrCmp $R0 "success" done
+ MessageBox MB_OK|MB_ICONSTOP "Download failed: $R0"
+ goto done
+
+UsePackaged:
+ SetOutPath "$WINDIR"
+ File "${KFW_CONFIG_DIR}\sample\krb5.ini"
+ File "${KFW_CONFIG_DIR}\sample\krb.con"
+ File "${KFW_CONFIG_DIR}\sample\krbrealm.con"
+ goto done
+
+CheckOther:
+ ReadINIStr $R0 $0 "Field 7" "State"
+ StrCmp $R0 "" done
+ CopyFiles "$R0\krb5.ini" "$WINDIR\krb5.ini"
+ CopyFiles "$R0\krb.con" "$WINDIR\krb.con"
+ CopyFiles "$R0\krbrealm.con" "$WINDIR\krbrealm.con"
+
+done:
+
+FunctionEnd
+
+
+
+;-------------------------------
+;Do the page to get the Config files
+
+Function KFWPageGetConfigFiles
+ ; Skip this page if we are not installing the client
+ SectionGetFlags ${secClient} $R0
+ IntOp $R0 $R0 & ${SF_SELECTED}
+ StrCmp $R0 "0" Skip
+
+ ; Set the install options here
+
+startOver:
+ WriteINIStr $0 "Field 2" "Flags" "DISABLED"
+ WriteINIStr $0 "Field 3" "State" "1"
+ WriteINIStr $0 "Field 4" "State" "0"
+ WriteINIStr $0 "Field 6" "State" "0"
+ WriteINIStr $0 "Field 3" "Text" "Use packaged configuration files for the ${SAMPLE_CONFIG_REALM} realm."
+ WriteINIStr $0 "Field 5" "State" "${HTTP_CONFIG_URL}"
+
+ ; If there is an existing krb5.ini file, allow the user to choose it and make it default
+ IfFileExists "$WINDIR\krb5.ini" +1 notpresent
+ WriteINIStr $0 "Field 2" "Flags" "ENABLED"
+ WriteINIStr $0 "Field 2" "State" "1"
+ WriteINIStr $0 "Field 3" "State" "0"
+
+ notpresent:
+
+ !insertmacro MUI_HEADER_TEXT "Kerberos Configuration" "Please choose a method for installing the Kerberos Configuration files:"
+ InstallOptions::dialog $0
+ Pop $R1
+ StrCmp $R1 "cancel" exit
+ StrCmp $R1 "back" done
+ StrCmp $R1 "success" done
+exit: Quit
+done:
+
+ ; Check that if a file is set, a valid filename is entered...
+ ReadINIStr $R0 $0 "Field 6" "State"
+ StrCmp $R0 "1" CheckFileName
+
+ ;Check if a URL is specified, one *IS* specified
+ ReadINIStr $R0 $0 "Field 4" "State"
+ StrCmp $R0 "1" CheckURL Skip
+
+ CheckURL:
+ ReadINIStr $R0 $0 "Field 5" "State"
+ StrCmp $R0 "" +1 Skip
+ MessageBox MB_OK|MB_ICONSTOP $(URLError)
+ WriteINIStr $0 "Field 4" "State" "0"
+ goto startOver
+
+ CheckFileName:
+ ReadINIStr $R0 $0 "Field 7" "State"
+ IfFileExists "$R0\krb5.ini" Skip
+
+ MessageBox MB_OK|MB_ICONSTOP $(ConfigFileError)
+ WriteINIStr $0 "Field 6" "State" "0"
+ goto startOver
+
+ Skip:
+
+FunctionEnd
+
+
+;-------------------------------
+;Do the page to get the Startup Configuration
+
+Function KFWPageGetStartupConfig
+ ; Skip this page if we are not installing the client
+ SectionGetFlags ${secClient} $R0
+ IntOp $R0 $R0 & ${SF_SELECTED}
+ StrCmp $R0 "0" Skip
+
+ ; Set the install options here
+
+ !insertmacro MUI_HEADER_TEXT "Network Identity Manager Setup" "Please select Network Identity ticket manager setup options:"
+ InstallOptions::dialog $1
+ Pop $R1
+ StrCmp $R1 "cancel" exit
+ StrCmp $R1 "back" done
+ StrCmp $R1 "success" done
+exit:
+ Quit
+done:
+skip:
+
+FunctionEnd
+
+
+;-------------
+; Common install routines for each module
+Function KFWCommon.Install
+
+ WriteRegStr HKLM "${KFW_REGKEY_ROOT}" "InstallDir" $INSTDIR
+
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PROGRAM_NAME}" "DisplayName" "${PROGRAM_NAME}"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PROGRAM_NAME}" "UninstallString" "$INSTDIR\uninstall.exe"
+!ifndef DEBUG
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PROGRAM_NAME}" "DisplayVersion" "${KFW_VERSION}"
+!else
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PROGRAM_NAME}" "DisplayVersion" "${KFW_VERSION} Checked/Debug"
+!endif
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PROGRAM_NAME}" "URLInfoAbout" "http://web.mit.edu/kerberos/"
+
+!ifdef DEBUG
+ WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\CurrentVersion" "Debug" 1
+ WriteRegDWORD HKLM "${KFW_REGKEY_ROOT}\${KFW_VERSION}" "Debug" 1
+!else
+ ; Delete the DEBUG string
+ DeleteRegValue HKLM "${KFW_REGKEY_ROOT}\CurrentVersion" "Debug"
+ DeleteRegValue HKLM "${KFW_REGKEY_ROOT}\${KFW_VERSION}" "Debug"
+!endif
+
+ WriteUninstaller "$INSTDIR\Uninstall.exe"
+FunctionEnd
+
+
+;-------------------------------
+; Check if the client should be checked for default install
+Function ShouldClientInstall
+ Push $R0
+ StrCpy $R2 "Client"
+ Call GetInstalledVersion
+ Pop $R0
+
+ StrCmp $R0 "" NotInstalled
+ ; Now we see if it's an older or newer version
+
+ Call GetInstalledVersionMajor
+ Pop $R0
+ IntCmpU $R0 ${KFW_MAJORVERSION} +1 Upgrade Downgrade
+
+ Call GetInstalledVersionMinor
+ Pop $R0
+ IntCmpU $R0 ${KFW_MINORVERSION} +1 Upgrade Downgrade
+
+ Call GetInstalledVersionPatch
+ Pop $R0
+ IntCmpU $R0 ${KFW_PATCHLEVEL} Reinstall Upgrade Downgrade
+
+Reinstall:
+ StrCpy $R0 "1"
+ Exch $R0
+ goto end
+
+Upgrade:
+ StrCpy $R0 "2"
+ Exch $R0
+ goto end
+
+Downgrade:
+ StrCpy $R0 "3"
+ Exch $R0
+ goto end
+
+NotInstalled:
+ StrCpy $R0 "0"
+ Exch $R0
+end:
+FunctionEnd
+
+;-------------------------------
+; Check how the Documentation options should be set
+Function ShouldDocumentationInstall
+ Push $R0
+ StrCpy $R2 "Documentation"
+ Call GetInstalledVersion
+ Pop $R0
+
+ StrCmp $R0 "" NotInstalled
+ ; Now we see if it's an older or newer version
+
+ Call GetInstalledVersionMajor
+ Pop $R0
+ IntCmpU $R0 ${KFW_MAJORVERSION} +1 Upgrade Downgrade
+
+ Call GetInstalledVersionMinor
+ Pop $R0
+ IntCmpU $R0 ${KFW_MINORVERSION} +1 Upgrade Downgrade
+
+ Call GetInstalledVersionPatch
+ Pop $R0
+ IntCmpU $R0 ${KFW_PATCHLEVEL} Reinstall Upgrade Downgrade
+
+Reinstall:
+ StrCpy $R0 "1"
+ Exch $R0
+ goto end
+
+Upgrade:
+ StrCpy $R0 "2"
+ Exch $R0
+ goto end
+
+Downgrade:
+ StrCpy $R0 "3"
+ Exch $R0
+ goto end
+
+
+NotInstalled:
+ StrCpy $R0 "0"
+ Exch $R0
+end:
+FunctionEnd
+
+
+;-------------------------------
+; Check how the SDK options should be set
+Function ShouldSDKInstall
+ Push $R0
+ StrCpy $R2 "SDK"
+ Call GetInstalledVersion
+ Pop $R0
+
+ StrCmp $R0 "" NotInstalled
+ ; Now we see if it's an older or newer version
+
+ Call GetInstalledVersionMajor
+ Pop $R0
+ IntCmpU $R0 ${KFW_MAJORVERSION} +1 Upgrade Downgrade
+
+ Call GetInstalledVersionMinor
+ Pop $R0
+ IntCmpU $R0 ${KFW_MINORVERSION} +1 Upgrade Downgrade
+
+ Call GetInstalledVersionPatch
+ Pop $R0
+ IntCmpU $R0 ${KFW_PATCHLEVEL} Reinstall Upgrade Downgrade
+
+Reinstall:
+ StrCpy $R0 "1"
+ Exch $R0
+ goto end
+
+Upgrade:
+ StrCpy $R0 "2"
+ Exch $R0
+ goto end
+
+Downgrade:
+ StrCpy $R0 "3"
+ Exch $R0
+ goto end
+
+
+NotInstalled:
+ StrCpy $R0 "0"
+ Exch $R0
+end:
+FunctionEnd
+
+; See if KfW SDK is installed
+; Returns: "1" if it is, 0 if it is not (on the stack)
+Function IsSDKInstalled
+ Push $R0
+ StrCpy $R2 "SDK"
+ Call GetInstalledVersion
+ Pop $R0
+
+ StrCmp $R0 "" NotInstalled
+
+ StrCpy $R0 "1"
+ Exch $R0
+ goto end
+
+NotInstalled:
+ StrCpy $R0 "0"
+ Exch $R0
+end:
+FunctionEnd
+
+
+; See if KfW Client is installed
+; Returns: "1" if it is, 0 if it is not (on the stack)
+Function IsClientInstalled
+ Push $R0
+ StrCpy $R2 "Client"
+ Call GetInstalledVersion
+ Pop $R0
+
+ StrCmp $R0 "" NotInstalled
+
+ StrCpy $R0 "1"
+ Exch $R0
+ goto end
+
+NotInstalled:
+ StrCpy $R0 "0"
+ Exch $R0
+end:
+FunctionEnd
+
+
+
+; See if KfW Documentation is installed
+; Returns: "1" if it is, 0 if it is not (on the stack)
+Function IsDocumentationInstalled
+ Push $R0
+ StrCpy $R2 "Documentation"
+ Call GetInstalledVersion
+ Pop $R0
+
+ StrCmp $R0 "" NotInstalled
+
+ StrCpy $R0 "1"
+ Exch $R0
+ goto end
+
+NotInstalled:
+ StrCpy $R0 "0"
+ Exch $R0
+end:
+FunctionEnd
+
+
+
+;Check to see if any KfW component is installed
+;Returns: Value on stack: "1" if it is, "0" if it is not
+Function IsAnyKfWInstalled
+ Push $R0
+ Push $R1
+ Push $R2
+ Call IsClientInstalled
+ Pop $R0
+ Call IsSDKInstalled
+ Pop $R1
+ Call IsDocumentationInstalled
+ Pop $R2
+ ; Now we must see if ANY of the $Rn values are 1
+ StrCmp $R0 "1" SomethingInstalled
+ StrCmp $R1 "1" SomethingInstalled
+ StrCmp $R2 "1" SomethingInstalled
+ ;Nothing installed
+ StrCpy $R0 "0"
+ goto end
+SomethingInstalled:
+ StrCpy $R0 "1"
+end:
+ Pop $R2
+ Pop $R1
+ Exch $R0
+FunctionEnd
+
+;--------------------------------
+;Handle what must and what must not be installed
+Function .onSelChange
+ ; If they install the SDK, they MUST install the client
+ SectionGetFlags ${secSDK} $R0
+ IntOp $R0 $R0 & ${SF_SELECTED}
+ StrCmp $R0 "1" MakeClientSelected
+ goto end
+
+MakeClientSelected:
+ SectionGetFlags ${secClient} $R0
+ IntOp $R0 $R0 | ${SF_SELECTED}
+ SectionSetFlags ${secClient} $R0
+
+end:
+FunctionEnd
+
+Function AddProvider
+ Push $R0
+ Push $R1
+ ReadRegStr $R0 HKLM "SYSTEM\CurrentControlSet\Control\NetworkProvider\HWOrder" "ProviderOrder"
+ Push $R0
+ StrCpy $R0 "MIT Kerberos"
+ Push $R0
+ Call StrStr
+ Pop $R0
+ StrCmp $R0 "" DoOther +1
+ ReadRegStr $R1 HKLM "SYSTEM\CurrentControlSet\Control\NetworkProvider\HWOrder" "ProviderOrder"
+ StrCpy $R0 "$R1,MIT Kerberos"
+ WriteRegStr HKLM "SYSTEM\CurrentControlSet\Control\NetworkProvider\HWOrder" "ProviderOrder" $R0
+DoOther:
+ ReadRegStr $R0 HKLM "SYSTEM\CurrentControlSet\Control\NetworkProvider\Order" "ProviderOrder"
+ Push $R0
+ StrCpy $R0 "MIT Kerberos"
+ Push $R0
+ Call StrStr
+ Pop $R0
+ StrCmp $R0 "" +1 End
+ ReadRegStr $R1 HKLM "SYSTEM\CurrentControlSet\Control\NetworkProvider\Order" "ProviderOrder"
+ StrCpy $R0 "$R1,MIT Kerberos"
+ WriteRegStr HKLM "SYSTEM\CurrentControlSet\Control\NetworkProvider\Order" "ProviderOrder" $R0
+End:
+ Pop $R1
+ Pop $R0
+FunctionEnd
+
+Function un.RemoveProvider
+ Push $R0
+ StrCpy $R0 "MIT Kerberos"
+ Push $R0
+ StrCpy $R0 "SYSTEM\CurrentControlSet\Control\NetworkProvider\HWOrder"
+ Call un.RemoveFromProvider
+ StrCpy $R0 "MIT Kerberos"
+ 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
Property changes on: branches/krb5-1-6/src/windows/installer/nsis/kfw-fixed-tagged.nsi
___________________________________________________________________
Name: svn:eol-style
+ native
Property changes on: branches/krb5-1-6/src/windows/ntsecapitest.c
___________________________________________________________________
Name: svn:eol-style
+ native
Property changes on: branches/krb5-1-6/src/windows/ntsecapitest.pl
___________________________________________________________________
Name: svn:eol-style
+ native
More information about the cvs-krb5
mailing list