From 9cae2bb1f3a39933a2a1fc4dc292a054288b70db Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Mon, 21 Jun 2004 21:13:55 +0000 Subject: [PATCH] loopback-installer-fix-20040621 Convert all Loopback installation code to use Unicode always Fix case sensitivity of loopback adapter type comparison --- src/WINNT/install/NSIS/OpenAFS.nsi | 7 ++++--- src/WINNT/install/NSIS/loopback_install.cpp | 30 +++++++++++++++-------------- src/WINNT/install/NSIS/loopback_install.def | 3 +++ src/WINNT/install/wix/custom/instloop.c | 10 +++++----- 4 files changed, 28 insertions(+), 22 deletions(-) diff --git a/src/WINNT/install/NSIS/OpenAFS.nsi b/src/WINNT/install/NSIS/OpenAFS.nsi index 01372b9..053a31e 100644 --- a/src/WINNT/install/NSIS/OpenAFS.nsi +++ b/src/WINNT/install/NSIS/OpenAFS.nsi @@ -1766,11 +1766,10 @@ StartRemove: !ENDIF !ENDIF - IfSilent SkipAsk + IfSilent SkipDel ; IfFileExists "$WINDIR\afsdcell.ini" CellExists SkipDelAsk ; CellExists: MessageBox MB_YESNO "Would you like to keep your configuration files?" IDYES SkipDel - SkipAsk: Delete "$WINDIR\afsdcell.ini" Delete "$WINDIR\afsdsbmt.ini" @@ -1994,7 +1993,9 @@ FunctionEnd Function un.onUninstSuccess - MessageBox MB_OK "Please reboot your machine to complete uninstallation of the software" + IfSilent SkipAsk + MessageBox MB_OK "Please reboot your machine to complete uninstallation of the software" + SkipAsk: FunctionEnd diff --git a/src/WINNT/install/NSIS/loopback_install.cpp b/src/WINNT/install/NSIS/loopback_install.cpp index 4369973..1310acb 100644 --- a/src/WINNT/install/NSIS/loopback_install.cpp +++ b/src/WINNT/install/NSIS/loopback_install.cpp @@ -24,6 +24,8 @@ // Win2k #define _WIN32_DCOM +#define UNICODE +#define _UNICODE #include #include @@ -135,9 +137,9 @@ void EasyErrorBox (int hr, WCHAR *format, ...) } // RSM4: Converted this to stdcall so NSIS System::Call can call it (It defaults to stdcall) -_stdcall bool loopback_isInstalled() +bool _stdcall loopback_isInstalled() { - char *hwid = "*MSLOOP"; + TCHAR * hwid = _T("*MSLOOP"); HDEVINFO DeviceInfoSet; SP_DEVINFO_DATA DeviceInfoData; DWORD i,err; @@ -161,7 +163,7 @@ _stdcall bool loopback_isInstalled() for (i=0; SetupDiEnumDeviceInfo(DeviceInfoSet,i,&DeviceInfoData); i++) { DWORD DataT; - LPTSTR p,buffer = NULL; + TCHAR *p, *buffer = NULL; DWORD buffersize = 0; // @@ -182,7 +184,7 @@ _stdcall bool loopback_isInstalled() // We need to change the buffer size. if (buffer) LocalFree(buffer); - buffer = (char *)LocalAlloc(LPTR,buffersize); + buffer = (TCHAR *)LocalAlloc(LPTR,buffersize); } else { @@ -196,9 +198,9 @@ _stdcall bool loopback_isInstalled() continue; // Compare each entry in the buffer multi-sz list with our hwid. - for (p=buffer; *p && (p < &buffer[buffersize]); p += lstrlen(p)+1) + for (p=buffer; *p && (p < &buffer[buffersize]); p += _tcslen(p)+1) { - if (!strcmp(hwid,p)) + if (!_tcsicmp(hwid,p)) { found = TRUE; break; @@ -222,7 +224,7 @@ cleanup_DeviceInfo: // RSM4: Added bool disable_loopback() { - char *hwid = "*MSLOOP"; + TCHAR * hwid = _T("*MSLOOP"); HDEVINFO DeviceInfoSet; SP_DEVINFO_DATA DeviceInfoData; SP_PROPCHANGE_PARAMS PropChangeParams = {sizeof(SP_CLASSINSTALL_HEADER)}; @@ -247,7 +249,7 @@ bool disable_loopback() for (i=0; SetupDiEnumDeviceInfo(DeviceInfoSet,i,&DeviceInfoData); i++) { DWORD DataT; - LPTSTR p,buffer = NULL; + TCHAR * p, *buffer = NULL; DWORD buffersize = 0; // @@ -268,7 +270,7 @@ bool disable_loopback() // We need to change the buffer size. if (buffer) LocalFree(buffer); - buffer = (char *)LocalAlloc(LPTR,buffersize); + buffer = (TCHAR *)LocalAlloc(LPTR,buffersize); } else { @@ -282,9 +284,9 @@ bool disable_loopback() continue; // Compare each entry in the buffer multi-sz list with our hwid. - for (p=buffer; *p && (p < &buffer[buffersize]); p += lstrlen(p)+1) + for (p=buffer; *p && (p < &buffer[buffersize]); p += _tcslen(p)+1) { - if (!strcmp(hwid,p)) + if (!_tcsicmp(hwid,p)) { found = TRUE; break; @@ -345,13 +347,13 @@ bool loopback_install(int *rebootNeeded) TCHAR hwIdList[LINE_LEN+4]; TCHAR InfPath[MAX_PATH]; bool success = false; - LPCTSTR hwid = "*MSLOOP"; - LPCTSTR inf = "INF\\NETLOOP.INF"; + TCHAR * hwid = _T("*MSLOOP"); + TCHAR * inf = _T("INF\\NETLOOP.INF"); DWORD flags = 0; HMODULE newdevMod = NULL; UpdateDriverForPlugAndPlayDevicesProto UpdateFn; - CHAR *systemRoot = getenv("SYSTEMROOT"); + TCHAR *systemRoot = _tgetenv(_T("SYSTEMROOT")); SetCurrentDirectory(systemRoot); // Inf must be a full pathname diff --git a/src/WINNT/install/NSIS/loopback_install.def b/src/WINNT/install/NSIS/loopback_install.def index 0d4e9ac..defe319 100644 --- a/src/WINNT/install/NSIS/loopback_install.def +++ b/src/WINNT/install/NSIS/loopback_install.def @@ -5,3 +5,6 @@ DESCRIPTION "Microsoft Loopback Adapter Installer for OpenAFS" EXPORTS doLoopBackEntryW disableLoopBackEntryW + loopback_isInstalled + + diff --git a/src/WINNT/install/wix/custom/instloop.c b/src/WINNT/install/wix/custom/instloop.c index dd0fa31..28c4fc1 100644 --- a/src/WINNT/install/wix/custom/instloop.c +++ b/src/WINNT/install/wix/custom/instloop.c @@ -247,7 +247,7 @@ cleanup: BOOL IsLoopbackInstalled() { - char *hwid = "*MSLOOP"; + TCHAR * hwid = _T("*MSLOOP"); HDEVINFO DeviceInfoSet; SP_DEVINFO_DATA DeviceInfoData; DWORD i,err; @@ -270,7 +270,7 @@ BOOL IsLoopbackInstalled() for (i=0; SetupDiEnumDeviceInfo(DeviceInfoSet,i,&DeviceInfoData); i++) { DWORD DataT; - LPTSTR p,buffer = NULL; + TCHAR *p, *buffer = NULL; DWORD buffersize = 0; // @@ -291,7 +291,7 @@ BOOL IsLoopbackInstalled() // We need to change the buffer size. if (buffer) LocalFree(buffer); - buffer = (char *)LocalAlloc(LPTR,buffersize); + buffer = (TCHAR *)LocalAlloc(LPTR,buffersize); } else { @@ -303,9 +303,9 @@ BOOL IsLoopbackInstalled() continue; // Compare each entry in the buffer multi-sz list with our hwid. - for (p=buffer; *p && (p < &buffer[buffersize]); p += lstrlen(p)+1) + for (p=buffer; *p && (p < &buffer[buffersize]); p += _tcslen(p)+1) { - if (!strcmp(hwid,p)) + if (!_tcsicmp(hwid,p)) { found = TRUE; break; -- 1.9.4