8
8
static UINT debug(MSIHANDLE hInstall, LPCSTR msg)
10
MSIHANDLE hRec = MsiCreateRecord(1);
11
if (!hRec || MsiRecordSetStringA(hRec, 1, msg) != ERROR_SUCCESS) {
12
return ERROR_INSTALL_FAILURE;
14
MsiProcessMessage(hInstall, INSTALLMESSAGE_INFO, hRec);
10
MSIHANDLE hRec = MsiCreateRecord(1);
11
if (!hRec || MsiRecordSetStringA(hRec, 1, msg) != ERROR_SUCCESS) {
12
return ERROR_INSTALL_FAILURE;
14
MsiProcessMessage(hInstall, INSTALLMESSAGE_INFO, hRec);
19
19
/* Check whether the TARGETDIR exists and is a directory.
22
22
UINT __declspec(dllexport) __stdcall CheckDir(MSIHANDLE hInstall)
32
result = MsiGetPropertyW(hInstall, L"TARGETDIR", wpath, &size);
33
if (result != ERROR_SUCCESS)
38
attributes = GetFileAttributesW(wpath);
39
if (attributes == INVALID_FILE_ATTRIBUTES ||
40
!(attributes & FILE_ATTRIBUTE_DIRECTORY))
42
return MsiSetPropertyA(hInstall, "TargetExists", "0");
44
return MsiSetPropertyA(hInstall, "TargetExists", "1");
32
result = MsiGetPropertyW(hInstall, L"TARGETDIR", wpath, &size);
33
if (result != ERROR_SUCCESS)
38
attributes = GetFileAttributesW(wpath);
39
if (attributes == INVALID_FILE_ATTRIBUTES ||
40
!(attributes & FILE_ATTRIBUTE_DIRECTORY))
42
return MsiSetPropertyA(hInstall, "TargetExists", "0");
44
return MsiSetPropertyA(hInstall, "TargetExists", "1");
48
48
/* Update the state of the REGISTRY.tcl component according to the
52
52
UINT __declspec(dllexport) __stdcall UpdateEditIDLE(MSIHANDLE hInstall)
54
INSTALLSTATE ext_old, ext_new, tcl_old, tcl_new, reg_new;
57
result = MsiGetFeatureStateA(hInstall, "Extensions", &ext_old, &ext_new);
58
if (result != ERROR_SUCCESS)
60
result = MsiGetFeatureStateA(hInstall, "TclTk", &tcl_old, &tcl_new);
61
if (result != ERROR_SUCCESS)
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)
69
if (tcl_new == INSTALLSTATE_UNKNOWN)
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;
81
reg_new = INSTALLSTATE_ABSENT;
83
result = MsiSetComponentStateA(hInstall, "REGISTRY.tcl", reg_new);
54
INSTALLSTATE ext_old, ext_new, tcl_old, tcl_new, reg_new;
57
result = MsiGetFeatureStateA(hInstall, "Extensions", &ext_old, &ext_new);
58
if (result != ERROR_SUCCESS)
60
result = MsiGetFeatureStateA(hInstall, "TclTk", &tcl_old, &tcl_new);
61
if (result != ERROR_SUCCESS)
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)
69
if (tcl_new == INSTALLSTATE_UNKNOWN)
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;
81
reg_new = INSTALLSTATE_ABSENT;
83
result = MsiSetComponentStateA(hInstall, "REGISTRY.tcl", reg_new);
87
BOOL APIENTRY DllMain(HANDLE hModule,
88
DWORD ul_reason_for_call,
87
BOOL APIENTRY DllMain(HANDLE hModule,
88
DWORD ul_reason_for_call,