summaryrefslogtreecommitdiffstats
path: root/Tools/msi/msisupport.c
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/msi/msisupport.c')
-rw-r--r--Tools/msi/msisupport.c35
1 files changed, 24 insertions, 11 deletions
diff --git a/Tools/msi/msisupport.c b/Tools/msi/msisupport.c
index a6feadf..b293bfc 100644
--- a/Tools/msi/msisupport.c
+++ b/Tools/msi/msisupport.c
@@ -1,14 +1,16 @@
#include "windows.h"
#include "msiquery.h"
+int isWinNT;
+
/* Print a debug message to the installer log file.
* To see the debug messages, install with
* msiexec /i pythonxy.msi /l*v python.log
*/
-static UINT debug(MSIHANDLE hInstall, LPCWSTR msg)
+static UINT debug(MSIHANDLE hInstall, LPCSTR msg)
{
MSIHANDLE hRec = MsiCreateRecord(1);
- if (!hRec || MsiRecordSetStringW(hRec, 1, msg) != ERROR_SUCCESS) {
+ if (!hRec || MsiRecordSetStringA(hRec, 1, msg) != ERROR_SUCCESS) {
return ERROR_INSTALL_FAILURE;
}
MsiProcessMessage(hInstall, INSTALLMESSAGE_INFO, hRec);
@@ -21,23 +23,34 @@ static UINT debug(MSIHANDLE hInstall, LPCWSTR msg)
*/
UINT __declspec(dllexport) __stdcall CheckDir(MSIHANDLE hInstall)
{
- WCHAR path[1024];
+#define PSIZE 1024
+ WCHAR wpath[PSIZE];
+ char path[PSIZE];
UINT result;
- DWORD size = sizeof(path)/sizeof(WCHAR);
+ DWORD size = PSIZE;
DWORD attributes;
+
+ isWinNT = (GetVersion() < 0x80000000) ? 1 : 0;
- result = MsiGetPropertyW(hInstall, L"TARGETDIR", path, &size);
+ if (isWinNT)
+ result = MsiGetPropertyW(hInstall, L"TARGETDIR", wpath, &size);
+ else
+ result = MsiGetPropertyA(hInstall, "TARGETDIR", path, &size);
if (result != ERROR_SUCCESS)
return result;
+ wpath[size] = L'\0';
path[size] = L'\0';
- attributes = GetFileAttributesW(path);
+ if (isWinNT)
+ attributes = GetFileAttributesW(wpath);
+ else
+ attributes = GetFileAttributesA(path);
if (attributes == INVALID_FILE_ATTRIBUTES ||
!(attributes & FILE_ATTRIBUTE_DIRECTORY))
{
- return MsiSetPropertyW(hInstall, L"TargetExists", L"0");
+ return MsiSetPropertyA(hInstall, "TargetExists", "0");
} else {
- return MsiSetPropertyW(hInstall, L"TargetExists", L"1");
+ return MsiSetPropertyA(hInstall, "TargetExists", "1");
}
}
@@ -50,10 +63,10 @@ UINT __declspec(dllexport) __stdcall UpdateEditIDLE(MSIHANDLE hInstall)
INSTALLSTATE ext_old, ext_new, tcl_old, tcl_new, reg_new;
UINT result;
- result = MsiGetFeatureStateW(hInstall, L"Extensions", &ext_old, &ext_new);
+ result = MsiGetFeatureStateA(hInstall, "Extensions", &ext_old, &ext_new);
if (result != ERROR_SUCCESS)
return result;
- result = MsiGetFeatureStateW(hInstall, L"TclTk", &tcl_old, &tcl_new);
+ result = MsiGetFeatureStateA(hInstall, "TclTk", &tcl_old, &tcl_new);
if (result != ERROR_SUCCESS)
return result;
@@ -76,7 +89,7 @@ UINT __declspec(dllexport) __stdcall UpdateEditIDLE(MSIHANDLE hInstall)
} else {
reg_new = INSTALLSTATE_ABSENT;
}
- result = MsiSetComponentStateW(hInstall, L"REGISTRY.tcl", reg_new);
+ result = MsiSetComponentStateA(hInstall, "REGISTRY.tcl", reg_new);
return result;
}