I have an application which can be installed on English, French, Japanese and German OS.
I have to identify non-Ascii characters in installation path. If installation path contains non-Ascii characters then application cannot be installed in that path. The problem is I have written a code which identifies if installation path contains non-Ascii characters.
Code:
LONG WINAPI CheckInstallDir4Unicode(MSIHANDLE hMsi)
{
TCHAR szInstallDir[MAX_PATH];
DWORD dwSize = MAX_PATH;
// Get Installation directory STRING from msi
MsiGetProperty(hMsi, _T("INSTALLDIR"),szInstallDir, &dwSize);
//check for each character if it is ASCII.
UINT i,val;
for(i=0; szInstallDir[i]; i++)
{
val = (unsigned int )szInstallDir[i]; // ascii value of character at position i
if(val <0 || val >127) // CHECKING FOR ASCII VAL.
{
// POP A MESG THAT INSTALLATION PATH CONTAINS
// NON-ASCII CHARACTER AND BREAK
break;
}
}
return 1;
}
I test this code by giving non-Ascii characters in the installation path
such as: 奉孬艳昼臻哥棘
the code unicode checking code works fine when I run it on japanese XP VMware. but it does not work when I run this code on English xp VMware. I want the code should run in all platforms similarly. I dont know what I am missing in this code.
