Changeset 391 for python/trunk/Tools/msi/msisupport.c
- Timestamp:
- Mar 19, 2014, 11:31:01 PM (11 years ago)
- Location:
- python/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
python/trunk
-
Property svn:mergeinfo
set to
/python/vendor/Python-2.7.6 merged eligible /python/vendor/current merged eligible
-
Property svn:mergeinfo
set to
-
python/trunk/Tools/msi/msisupport.c
r2 r391 8 8 static UINT debug(MSIHANDLE hInstall, LPCSTR msg) 9 9 { 10 11 12 13 14 15 16 10 MSIHANDLE hRec = MsiCreateRecord(1); 11 if (!hRec || MsiRecordSetStringA(hRec, 1, msg) != ERROR_SUCCESS) { 12 return ERROR_INSTALL_FAILURE; 13 } 14 MsiProcessMessage(hInstall, INSTALLMESSAGE_INFO, hRec); 15 MsiCloseHandle(hRec); 16 return ERROR_SUCCESS; 17 17 } 18 18 … … 23 23 { 24 24 #define PSIZE 1024 25 26 27 28 29 25 WCHAR wpath[PSIZE]; 26 char path[PSIZE]; 27 UINT result; 28 DWORD size = PSIZE; 29 DWORD attributes; 30 30 31 32 result = MsiGetPropertyW(hInstall, L"TARGETDIR", wpath, &size);33 if (result != ERROR_SUCCESS)34 return result;35 wpath[size] = L'\0';36 path[size] = L'\0';37 31 38 attributes = GetFileAttributesW(wpath); 39 if (attributes == INVALID_FILE_ATTRIBUTES || 40 !(attributes & FILE_ATTRIBUTE_DIRECTORY)) 41 { 42 return MsiSetPropertyA(hInstall, "TargetExists", "0"); 43 } else { 44 return MsiSetPropertyA(hInstall, "TargetExists", "1"); 45 } 32 result = MsiGetPropertyW(hInstall, L"TARGETDIR", wpath, &size); 33 if (result != ERROR_SUCCESS) 34 return result; 35 wpath[size] = L'\0'; 36 path[size] = L'\0'; 37 38 attributes = GetFileAttributesW(wpath); 39 if (attributes == INVALID_FILE_ATTRIBUTES || 40 !(attributes & FILE_ATTRIBUTE_DIRECTORY)) 41 { 42 return MsiSetPropertyA(hInstall, "TargetExists", "0"); 43 } else { 44 return MsiSetPropertyA(hInstall, "TargetExists", "1"); 45 } 46 46 } 47 47 … … 52 52 UINT __declspec(dllexport) __stdcall UpdateEditIDLE(MSIHANDLE hInstall) 53 53 { 54 55 54 INSTALLSTATE ext_old, ext_new, tcl_old, tcl_new, reg_new; 55 UINT result; 56 56 57 58 59 60 61 62 57 result = MsiGetFeatureStateA(hInstall, "Extensions", &ext_old, &ext_new); 58 if (result != ERROR_SUCCESS) 59 return result; 60 result = MsiGetFeatureStateA(hInstall, "TclTk", &tcl_old, &tcl_new); 61 if (result != ERROR_SUCCESS) 62 return result; 63 63 64 65 66 67 68 69 70 64 /* If the current state is Absent, and the user did not select 65 the feature in the UI, Installer apparently sets the "selected" 66 state to unknown. Update it to the current value, then. */ 67 if (ext_new == INSTALLSTATE_UNKNOWN) 68 ext_new = ext_old; 69 if (tcl_new == INSTALLSTATE_UNKNOWN) 70 tcl_new = tcl_old; 71 71 72 73 74 75 76 77 78 79 80 } else { 81 82 83 84 72 // XXX consider current state of REGISTRY.tcl? 73 if (((tcl_new == INSTALLSTATE_LOCAL) || 74 (tcl_new == INSTALLSTATE_SOURCE) || 75 (tcl_new == INSTALLSTATE_DEFAULT)) && 76 ((ext_new == INSTALLSTATE_LOCAL) || 77 (ext_new == INSTALLSTATE_SOURCE) || 78 (ext_new == INSTALLSTATE_DEFAULT))) { 79 reg_new = INSTALLSTATE_SOURCE; 80 } else { 81 reg_new = INSTALLSTATE_ABSENT; 82 } 83 result = MsiSetComponentStateA(hInstall, "REGISTRY.tcl", reg_new); 84 return result; 85 85 } 86 86 87 BOOL APIENTRY DllMain(HANDLE hModule, 88 DWORD ul_reason_for_call, 87 BOOL APIENTRY DllMain(HANDLE hModule, 88 DWORD ul_reason_for_call, 89 89 LPVOID lpReserved) 90 90 {
Note:
See TracChangeset
for help on using the changeset viewer.