diff options
Diffstat (limited to 'Tools/msi/msisupport.c')
-rw-r--r-- | Tools/msi/msisupport.c | 93 |
1 files changed, 0 insertions, 93 deletions
diff --git a/Tools/msi/msisupport.c b/Tools/msi/msisupport.c deleted file mode 100644 index 1fd2ee4..0000000 --- a/Tools/msi/msisupport.c +++ /dev/null @@ -1,93 +0,0 @@ -#include "windows.h" -#include "msiquery.h" - -/* 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, LPCSTR msg) -{ - MSIHANDLE hRec = MsiCreateRecord(1); - if (!hRec || MsiRecordSetStringA(hRec, 1, msg) != ERROR_SUCCESS) { - return ERROR_INSTALL_FAILURE; - } - MsiProcessMessage(hInstall, INSTALLMESSAGE_INFO, hRec); - MsiCloseHandle(hRec); - return ERROR_SUCCESS; -} - -/* Check whether the TARGETDIR exists and is a directory. - * Set TargetExists appropriately. - */ -UINT __declspec(dllexport) __stdcall CheckDir(MSIHANDLE hInstall) -{ -#define PSIZE 1024 - WCHAR wpath[PSIZE]; - char path[PSIZE]; - UINT result; - DWORD size = PSIZE; - DWORD attributes; - - - result = MsiGetPropertyW(hInstall, L"TARGETDIR", wpath, &size); - if (result != ERROR_SUCCESS) - return result; - wpath[size] = L'\0'; - path[size] = L'\0'; - - attributes = GetFileAttributesW(wpath); - if (attributes == INVALID_FILE_ATTRIBUTES || - !(attributes & FILE_ATTRIBUTE_DIRECTORY)) - { - return MsiSetPropertyA(hInstall, "TargetExists", "0"); - } else { - return MsiSetPropertyA(hInstall, "TargetExists", "1"); - } -} - -/* Update the state of the REGISTRY.tcl component according to the - * Extension and TclTk features. REGISTRY.tcl must be installed - * if both features are installed, and must be absent otherwise. - */ -UINT __declspec(dllexport) __stdcall UpdateEditIDLE(MSIHANDLE hInstall) -{ - INSTALLSTATE ext_old, ext_new, tcl_old, tcl_new, reg_new; - UINT result; - - result = MsiGetFeatureStateA(hInstall, "Extensions", &ext_old, &ext_new); - if (result != ERROR_SUCCESS) - return result; - result = MsiGetFeatureStateA(hInstall, "TclTk", &tcl_old, &tcl_new); - if (result != ERROR_SUCCESS) - return result; - - /* If the current state is Absent, and the user did not select - the feature in the UI, Installer apparently sets the "selected" - state to unknown. Update it to the current value, then. */ - if (ext_new == INSTALLSTATE_UNKNOWN) - ext_new = ext_old; - if (tcl_new == INSTALLSTATE_UNKNOWN) - tcl_new = tcl_old; - - // XXX consider current state of REGISTRY.tcl? - if (((tcl_new == INSTALLSTATE_LOCAL) || - (tcl_new == INSTALLSTATE_SOURCE) || - (tcl_new == INSTALLSTATE_DEFAULT)) && - ((ext_new == INSTALLSTATE_LOCAL) || - (ext_new == INSTALLSTATE_SOURCE) || - (ext_new == INSTALLSTATE_DEFAULT))) { - reg_new = INSTALLSTATE_SOURCE; - } else { - reg_new = INSTALLSTATE_ABSENT; - } - result = MsiSetComponentStateA(hInstall, "REGISTRY.tcl", reg_new); - return result; -} - -BOOL APIENTRY DllMain(HANDLE hModule, - DWORD ul_reason_for_call, - LPVOID lpReserved) -{ - return TRUE; -} - |