diff --git a/src/WINNT/install/wix/NTMakefile b/src/WINNT/install/wix/NTMakefile
index bf00a0ad71..014cc8ac45 100644
--- a/src/WINNT/install/wix/NTMakefile
+++ b/src/WINNT/install/wix/NTMakefile
@@ -122,7 +122,8 @@ $(BINWIXOBJ): oafwbins.wxs $(WIXINCLUDES)
!ENDIF
-v0 \
-w0 \
- $(WIXCYGOPT) $(AFSDEV_AUXWIXDEFINES) oafwbins.wxs
+ -sw1044 \
+ $(AFSDEV_AUXWIXDEFINES) oafwbins.wxs
$(BINMSIFILE): $(BINWIXOBJ)
light -nologo -out $(BINMSIFILE) \
diff --git a/src/WINNT/install/wix/custom/NTMakefile b/src/WINNT/install/wix/custom/NTMakefile
index 01038bdf24..19874bf5db 100644
--- a/src/WINNT/install/wix/custom/NTMakefile
+++ b/src/WINNT/install/wix/custom/NTMakefile
@@ -13,6 +13,8 @@ DLLRES = $(OUT)\afscustom.res
DLLEXPORTS=\
-EXPORT:InstallNetProvider \
-EXPORT:UninstallNetProvider \
+ -EXPORT:InstallRedirNetProvider \
+ -EXPORT:UninstallRedirNetProvider \
-EXPORT:ConfigureClientService \
-EXPORT:ConfigureServerService \
-EXPORT:AbortMsiImmediate \
@@ -24,7 +26,7 @@ DLLEXPORTS=\
-EXPORT:DetectSavedConfiguration
DLLLIBFILES=\
- msi.lib advapi32.lib netapi32.lib
+ msi.lib advapi32.lib netapi32.lib setupapi.lib
LINK=link
diff --git a/src/WINNT/install/wix/custom/afscustom.cpp b/src/WINNT/install/wix/custom/afscustom.cpp
index 714e8531f2..9adbadf5da 100644
--- a/src/WINNT/install/wix/custom/afscustom.cpp
+++ b/src/WINNT/install/wix/custom/afscustom.cpp
@@ -172,14 +172,22 @@ _cleanup:
provider */
MSIDLLEXPORT InstallNetProvider( MSIHANDLE hInstall ) {
- return InstNetProvider( hInstall, 1 );
+ return InstNetProvider( hInstall, STR_SERVICE, 1 );
}
MSIDLLEXPORT UninstallNetProvider( MSIHANDLE hInstall) {
- return InstNetProvider( hInstall, 0 );
+ return InstNetProvider( hInstall, STR_SERVICE, 0 );
}
-DWORD InstNetProvider(MSIHANDLE hInstall, int bInst) {
+MSIDLLEXPORT InstallRedirNetProvider( MSIHANDLE hInstall ) {
+ return InstNetProvider( hInstall, STR_RDRSVC, 1, STR_LANMAN );
+}
+
+MSIDLLEXPORT UninstallRedirNetProvider( MSIHANDLE hInstall) {
+ return InstNetProvider( hInstall, STR_RDRSVC, 0 );
+}
+
+DWORD InstNetProvider(MSIHANDLE hInstall, LPTSTR svcname, int bInst, LPTSTR before) {
LPTSTR strOrder;
HKEY hkOrder;
LONG rv;
@@ -193,11 +201,11 @@ DWORD InstNetProvider(MSIHANDLE hInstall, int bInst) {
dwSize = 0;
CHECK(rv = RegQueryValueEx( hkOrder, STR_VAL_ORDER, NULL, NULL, NULL, &dwSize ) );
- strOrder = new TCHAR[ (dwSize + STR_SERVICE_LEN) * sizeof(TCHAR) ];
+ strOrder = new TCHAR[ dwSize / sizeof(TCHAR) + 2 + _tcslen(svcname) ];
CHECK(rv = RegQueryValueEx( hkOrder, STR_VAL_ORDER, NULL, NULL, (LPBYTE) strOrder, &dwSize));
- npi_CheckAndAddRemove( strOrder, STR_SERVICE , bInst);
+ npi_CheckAndAddRemove( strOrder, svcname , bInst, before);
dwSize = (lstrlen( strOrder ) + 1) * sizeof(TCHAR);
@@ -220,10 +228,11 @@ _cleanup:
str : target string
str2: string to add/remove
bInst: == 1 if string should be added to target if not already there, otherwise remove string from target if present.
+ if before != NULL, add string before
*/
-int npi_CheckAndAddRemove( LPTSTR str, LPTSTR str2, int bInst ) {
+int npi_CheckAndAddRemove( LPTSTR str, LPTSTR str2, int bInst, LPTSTR before ) {
- LPTSTR target, charset, match;
+ LPTSTR target, charset, btarget, match, bmatch;
int ret=0;
target = new TCHAR[lstrlen(str)+3];
@@ -238,10 +247,23 @@ int npi_CheckAndAddRemove( LPTSTR str, LPTSTR str2, int bInst ) {
match = _tcsstr(target, charset);
if ((match) && (bInst)) {
+ if (before != NULL) {
+ bmatch = _tcsstr(target, before);
+ if (bmatch == NULL || bmatch > match) {
ret = INP_ERR_PRESENT;
goto cleanup;
}
+ lstrcpy(str+(match-target), match+lstrlen(str2)+2);
+ str[lstrlen(str)-1]=_T('\0');
+ match = NULL;
+
+ } else {
+ ret = INP_ERR_PRESENT;
+ goto cleanup;
+ }
+ }
+
if ((!match) && (!bInst)) {
ret = INP_ERR_ABSENT;
goto cleanup;
@@ -249,8 +271,15 @@ int npi_CheckAndAddRemove( LPTSTR str, LPTSTR str2, int bInst ) {
if (bInst) // && !match
{
+ if (before == NULL || (bmatch = _tcsstr(str, before)) == NULL) {
lstrcat(str, _T(","));
lstrcat(str, str2);
+ } else {
+ size_t s2len = lstrlen(str2);
+ memmove(bmatch + s2len + 1, bmatch, (lstrlen(bmatch) + 1) * sizeof(TCHAR));
+ memcpy(bmatch, str2, s2len * sizeof(TCHAR));
+ bmatch[s2len] = _T(',');
+ }
ret = INP_ERR_ADDED;
goto cleanup;
}
diff --git a/src/WINNT/install/wix/custom/afscustom.h b/src/WINNT/install/wix/custom/afscustom.h
index f8c0d796e2..4604602475 100644
--- a/src/WINNT/install/wix/custom/afscustom.h
+++ b/src/WINNT/install/wix/custom/afscustom.h
@@ -52,7 +52,8 @@ SOFTWARE.
#define STR_VAL_ORDER _T("ProviderOrder")
#define STR_SERVICE _T("TransarcAFSDaemon")
-#define STR_SERVICE_LEN 18
+#define STR_RDRSVC _T("AFSRedirector")
+#define STR_LANMAN _T("LanmanWorkstation")
#define INP_ERR_PRESENT 1
#define INP_ERR_ADDED 2
@@ -68,8 +69,8 @@ SOFTWARE.
#define ERR_GROUP_MEMBER_FAILED 4007
/* non-exported */
-int npi_CheckAndAddRemove( LPTSTR, LPTSTR, int );
-DWORD InstNetProvider(MSIHANDLE, int);
+int npi_CheckAndAddRemove( LPTSTR, LPTSTR, int, LPTSTR);
+DWORD InstNetProvider(MSIHANDLE, LPTSTR, int, LPTSTR = NULL);
void ShowMsiError(MSIHANDLE, DWORD, DWORD);
DWORD ConfigService(int);
UINT createAfsAdminGroup(void);
@@ -79,6 +80,8 @@ UINT removeAfsAdminGroup(void);
/* exported */
MSIDLLEXPORT InstallNetProvider( MSIHANDLE );
MSIDLLEXPORT UninstallNetProvider ( MSIHANDLE );
+MSIDLLEXPORT InstallRedirNetProvider( MSIHANDLE );
+MSIDLLEXPORT UninstallRedirNetProvider ( MSIHANDLE );
MSIDLLEXPORT ConfigureClientService( MSIHANDLE );
MSIDLLEXPORT ConfigureServerService( MSIHANDLE );
MSIDLLEXPORT AbortMsiImmediate( MSIHANDLE );
diff --git a/src/WINNT/install/wix/feature.wxi b/src/WINNT/install/wix/feature.wxi
index d30149d8a7..1d40b728a3 100644
--- a/src/WINNT/install/wix/feature.wxi
+++ b/src/WINNT/install/wix/feature.wxi
@@ -17,8 +17,9 @@
InstallDefault="followParent" Level="30" Title="$(loc.StrAFSClientDesc)">
+ Display="expand" InstallDefault="followParent" Level="1030" Title="$(loc.StrLoopbackDesc)">
+ USEREDIRECTOR = 0
VersionNT = 500 And ServicePackLevel < 3
-
+
- CREDSSTARTUP = 0
+ CREDSSTARTUP <> 0 And USEAFSCREDS <> 0 And USEREDIRECTOR = 0
@@ -49,12 +50,56 @@
InstallDefault="$(var.DebugSymInstallDefault)" Level="$(var.DebugSymLowLevel)" Title="$(loc.StrAFSClientDebugDesc)">
-
+
+
+
+
+ USEREDIRECTOR = 0
+
+
+
+
+ USEREDIRECTOR = 0
+
+
+
+
+
+
+
+
+ USEAFSCREDS <> 0 And USEREDIRECTOR = 0
+
+
+
+ USEAFSCREDS <> 0 And USEREDIRECTOR = 0
+
+
+
+
+
+
+
+ USEAFSCONFIG <> 0 And USEREDIRECTOR = 0
+
+
+
+ USEAFSCONFIG <> 0 And USEREDIRECTOR = 0
+
+
+
+
@@ -76,12 +121,9 @@
-
-
-
@@ -94,7 +136,6 @@
-
@@ -203,7 +244,6 @@
-
@@ -214,8 +254,6 @@
-
-
@@ -227,7 +265,6 @@
-
@@ -282,7 +319,9 @@
-
+
+
+
@@ -308,6 +347,17 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/WINNT/install/wix/files.wxi b/src/WINNT/install/wix/files.wxi
index c53c3ecade..a35301ffe8 100644
--- a/src/WINNT/install/wix/files.wxi
+++ b/src/WINNT/install/wix/files.wxi
@@ -100,7 +100,7 @@
-
+
@@ -993,51 +993,51 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
+
-
+
@@ -1174,17 +1174,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
@@ -1282,10 +1319,16 @@
-
+
+
+
+
+
+
+
@@ -1435,7 +1478,7 @@
-
+
@@ -1450,79 +1493,79 @@
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
+
+
-
+
-
-
+
+
-
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
+
@@ -1536,13 +1579,13 @@
-
-
+
+
-
-
+
+
@@ -1551,30 +1594,30 @@
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
+
-
+
-
+
@@ -1605,52 +1648,52 @@
-
+
-
+
-
-
-
+
+
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
+
+
+
-
+
@@ -1659,40 +1702,40 @@
-
-
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
+
-
+
-
+
-
-
+
+
@@ -1708,41 +1751,41 @@
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
-
+
+
-
-
+
+
-
+
-
-
+
+
-
-
-
+
+
+
@@ -1778,6 +1821,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/WINNT/install/wix/lang/en_US/strings.wxl b/src/WINNT/install/wix/lang/en_US/strings.wxl
index 370e7ca187..368fc3c0e9 100644
--- a/src/WINNT/install/wix/lang/en_US/strings.wxl
+++ b/src/WINNT/install/wix/lang/en_US/strings.wxl
@@ -31,6 +31,17 @@
OpenAFS plug-in for Network Identity Manager. Adds AFS token management capabilities to Network Identity Manager.
Debug symbols for NetIDMgr plug-in
Debugging symbols for the OpenAFS NetIDMgr plug-in.
+ Redirector Driver
+ OpenAFS File System Redirector Kernel Driver
+ Debug Symbols
+ Debuging symbols for the OpenAFS File System Redirector Kernel Driver
+ AFSCREDS.EXE tool for authenticating to AFS.
+ Debug symbols for AFS Authentication
+ Debugging symbols for AFSCREDS.EXE
+ Client configuration tool
+ AFS_CONFIG.EXE tool for configuring the AFS client and managing AFS drive mappings.
+ Debug symbols for configuration tool
+ Debugging symbols for AFS_CONFIG.EXE.
AFS Context Menu Shell Extension
AFS Context Menu Shell Extension (32-bit)
@@ -67,6 +78,12 @@
Configuring the AFS server service
Removing existing installation of OpenAFS
Installing Microsoft Internationalized Domain Name Mitigation APIs
+ Installing network provider for filter driver
+ Removing network provider for filter driver
+ Unloading filter driver using FLTMC.EXE
+ Uninstalling filter driver
+ Installing filter driver
+ Loading filter driver using FLTMC.EXE
Installation of OpenAFS for Windows was prematurely terminated because OpenAFS [NSISVERSION] was already installed.
Uninstall OpenAFS from the local machine.
diff --git a/src/WINNT/install/wix/lang/en_US/ui.wxi b/src/WINNT/install/wix/lang/en_US/ui.wxi
index a52ef617c2..375292ebcc 100644
--- a/src/WINNT/install/wix/lang/en_US/ui.wxi
+++ b/src/WINNT/install/wix/lang/en_US/ui.wxi
@@ -690,6 +690,75 @@
{\VerdanaBold13}Resuming the [ProductName] [Wizard]
+
+
+
+
@@ -802,7 +872,8 @@
SAVED_CONFIG
- 1
+ &feaAfsCreds = 3
+ &feaAfsCreds <> 3
1
@@ -956,6 +1027,68 @@
Click Install to begin the installation. If you want to review or change any of your installation settings, click Back. Click Cancel to exit the wizard.
+
+
+
+ 3 ]]>
+
+
+ 3 ]]>
+
+
+ 3 ]]>
+
+
+ 3 ]]>
+
+
+ 3 ]]>
+
+
+ 3]]>
+
+
+ 3 ]]>
+
+
+ 3 ]]>
+
+
+ 3 ]]>
+
+
+ 3 ]]>
+
+
+ 3 ]]>
+
+
+ 3 ]]>
+
+
+
+ 3 ]]>
+
+
+ 3 ]]>
+
+
+ 3 ]]>
+
+
+ 3 ]]>
+
+
+ 3 ]]>
+
+
+ 3 ]]>
+
+
+ 3 ]]>
+
+
+
@@ -1123,6 +1256,12 @@
$(loc.ActConfigureServer)
$(loc.ActRemoveNsisInstallation)
$(loc.ActInstallIDNMRedistributable)
+ $(loc.ActInstallRedirNetProvider)
+ $(loc.ActRemoveRedirNetProvider)
+ $(loc.ActUnloadFilterDriver)
+ $(loc.ActUninstallRdrDriver)
+ $(loc.ActInstallRdrDriver)
+ $(loc.ActLoadFilterDriver)
diff --git a/src/WINNT/install/wix/openafs.wxs b/src/WINNT/install/wix/openafs.wxs
index e955ea2e74..428d6d4eb0 100644
--- a/src/WINNT/install/wix/openafs.wxs
+++ b/src/WINNT/install/wix/openafs.wxs
@@ -13,7 +13,7 @@
version of OpenAFS has a different MSI name. Thus, each version needs a
unique product code.
-->
-
-
+
= 500]]>
@@ -57,23 +57,43 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RUNDLL32EXE
+
+
+
+ SETUPAPIDLL
+
+
+ Id="BIN_afsCustom"
+ src="$(var.MediaDllDir)afscustom.dll"/>
@@ -98,77 +118,116 @@
Impersonate="no"
/>
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
@@ -245,34 +304,45 @@
- (Not Installed) And (IBMAFS_UPGRADE OR OPENAFS_UPGRADE OR AFSPLUGIN_UPGRADE)
- NSISUNINSTALL <> "" AND UILevel >= 4
- NSISUNINSTALL <> "" AND UILevel < 4
-
-
- 3 AND !feaClient<>3) OR &feaControlCenter=2 OR (&feaControlCenter<>3 AND !feaControlCenter<>3) ))]]>
-
-
- &feaLoopback=2 OR &feaLoopback=3
- &feaLoopback=3
- &feaLoopback=3
-
- &feaLoopback=3
-
- &feaClient=3
- &feaClient=3
- &feaClient=2
- !feaClient=2 And &feaClient=3 And (VersionNT=501 Or VersionNT=502)
- &feaClient=3
- &feaServer=3
- !feaClient=2 And &feaClient=3 And RESTORE_CONFIG
- !feaClient=2 And &feaClient=3 And RESTORE_CONFIG
- !feaClient=3 And &feaClient=2
-
- &feaClient=3
- &feaClient=3
-
-
+ (Not Installed) And (IBMAFS_UPGRADE OR OPENAFS_UPGRADE OR AFSPLUGIN_UPGRADE)
+ NSISUNINSTALL <> "" AND UILevel >= 4
+ NSISUNINSTALL <> "" AND UILevel < 4
+
+
+ 3 AND !feaClient<>3) OR &feaControlCenter=2 OR (&feaControlCenter<>3 AND !feaControlCenter<>3) ))]]>
+
+
+ &feaLoopback=2 OR &feaLoopback=3
+ &feaLoopback=3
+ &feaLoopback=3
+
+ &feaLoopback=3
+
+ !feaClient=2 And &feaClient=3 And (VersionNT=501 Or VersionNT=502)
+ &feaClient=3
+ &feaClient=3
+ &feaClient=2
+
+ &feaClientDriver=3
+ &feaClientDriver=3
+ &feaClientDriver=2
+
+ &feaClient=3
+ &feaServer=3
+ !feaClient=2 And &feaClient=3 And RESTORE_CONFIG
+ !feaClient=2 And &feaClient=3 And RESTORE_CONFIG
+ !feaClient=3 And &feaClient=2
+
+ &feaClient=3
+ &feaClient=3
+
+
+ &feaClientDriver=2 And RUNDLL32EXE And SETUPAPIDLL
+ &feaClientDriver=2 And RUNDLL32EXE And SETUPAPIDLL
+ &feaClientDriver=3 And RUNDLL32EXE And SETUPAPIDLL
+ &feaClientDriver=3 And RUNDLL32EXE And SETUPAPIDLL
+
+
&feaClient=3 OR &feaServer=3 OR &feaClient=2 OR &feaServer=2
@@ -281,23 +351,23 @@
-
+
-
+
-
+
-
-
+
+
diff --git a/src/WINNT/install/wix/platform.wxi b/src/WINNT/install/wix/platform.wxi
index be5ed29b90..4c569cf9d1 100644
--- a/src/WINNT/install/wix/platform.wxi
+++ b/src/WINNT/install/wix/platform.wxi
@@ -110,6 +110,11 @@
+
+
+
+
+
@@ -220,6 +225,11 @@
+
+
+
+
+
diff --git a/src/WINNT/install/wix/property.wxi b/src/WINNT/install/wix/property.wxi
index 94468319a6..4ad0299eb0 100644
--- a/src/WINNT/install/wix/property.wxi
+++ b/src/WINNT/install/wix/property.wxi
@@ -13,12 +13,15 @@
$(var.RxMaxMTU)
$(var.HideDotFiles)
$(var.SecurityLevel)
+ 1
1
-a
-m
-n
-q
+ 1
$(var.SMBAuthType)
+ 1