44#define REG_PROGRESS_VALUE 13200
45#define COMPONENT_PROGRESS_VALUE 24000
132 if (in_quotes &&
p[1] !=
'\"')
count--;
148 if (in_quotes)
count--;
153 if (!
count)
goto done;
168 if (in_quotes &&
p[1] !=
'\"')
count--;
198 if(quotes) *quotes =
count;
229 while (*
ptr ==
' ')
ptr++;
243 if (!preserve_case)
wcsupr( prop );
246 while (*ptr2 ==
' ') ptr2++;
253 WARN(
"unbalanced quotes\n");
285 while (*
cmd ==
' ')
cmd++;
294 while (*
cmd ==
' ')
cmd++;
298 if (found)
return cmd;
419 ERR(
"Error is retrieving action name\n");
443 if (package->need_reboot_now)
445 TRACE(
"action %s asked for immediate reboot, suspending installation\n",
475 TRACE(
"Execute Sequence already Run\n");
482 L"SELECT * FROM `InstallExecuteSequence` WHERE `Sequence` > 0 ORDER BY `Sequence`");
485 TRACE(
"Running the actions\n");
500 L"SELECT * FROM `InstallUISequence` WHERE `Sequence` > 0 ORDER BY `Sequence`",
504 TRACE(
"Running the actions\n");
652 TRACE(
"component not scheduled for installation: %s\n",
debugstr_w(component));
659 ERR(
"Unable to get folder id\n");
733 TRACE(
"component not scheduled for removal %s\n",
debugstr_w(component));
740 ERR(
"Unable to get folder id\n");
918 rc =
MSI_OpenQuery( package->db, &
view,
L"SELECT `Component_` FROM `FeatureComponents` WHERE `Feature_` = '%s'",
940 if (!
child->Feature_Parent)
1023 WARN(
"query failed\n");
1049 if (!
file->Component)
1147 WARN(
"query failed\n");
1160 const WCHAR *file_key;
1170 ERR(
"Failed to find target for patch in File table\n");
1186 TRACE(
"Patch loaded (file %s sequence %u)\n",
debugstr_w(patch->File->File), patch->Sequence);
1230 static const WCHAR select[] =
L"SELECT `Row`, `Column` FROM `_TransformView` WHERE `Table`='Component'";
1258 if (!
MSI_OpenQuery( package->
db, &
view,
L"SELECT * FROM `CreateFolder` WHERE `Directory_` = '%s'",
1280 LPWSTR p, tgt_short, tgt_long, src_short, src_long;
1300 if (tgt_short && !
wcscmp(
L".", tgt_short ))
1302 if (src_short && !
wcscmp(
L".", src_short ))
1306 tgt_long = tgt_short;
1309 src_short = tgt_short;
1310 src_long = tgt_long;
1314 src_long = src_short;
1412 ERR(
"Execution of script %i halted; action %s returned %u\n",
1425 ERR(
"Execution of script %i halted; action %s returned %u\n",
1609 TRACE(
"child %s (level %d request %d) follows disabled parent %s (level %d request %d)\n",
1610 debugstr_w(
fl->feature->Feature),
fl->feature->Level,
fl->feature->ActionRequest,
1629 TRACE(
"child %s (level %d request %d) follows parent %s (level %d request %d)\n",
1630 debugstr_w(
fl->feature->Feature),
fl->feature->Level,
fl->feature->ActionRequest,
1634 fl->feature->ActionRequest =
feature->ActionRequest;
1646 TRACE(
"Checking Install Level\n");
1720 cur->Action =
cur->Installed;
1721 cur->ActionRequest =
cur->Installed;
1743 if (!
cur->Feature_Parent)
1754 if (
feature->Feature_Parent)
continue;
1764 TRACE(
"examining feature %s (level %d installed %d request %d action %d)\n",
1784 switch (
feature->ActionRequest)
1897 TRACE(
"component %s (installed %d request %d action %d)\n",
1950 if (ms1 > ms2)
return 1;
1951 else if (ms1 < ms2)
return -1;
2064 WCHAR *font_version;
2074 if (
file->IsCompressed)
2130 while (*
p !=
' ' && (*
q = *
p))
2134 if (*
p !=
'\\' || *
q !=
'\\')
2148 if (
len == 0 ||
p[-1] ==
'\\' ||
p[
n] ==
'\\' )
2151 while (
n && (*
q++ = *
p++))
n--;
2153 while (
q -
ret > 0 &&
q[-1] ==
' ')
q--;
2154 if (
q -
ret > 0 &&
q[-1] !=
'\\')
2212 folder->ResolvedTarget = normalized_path;
2241 TRACE(
"Building directory properties\n");
2244 TRACE(
"Evaluating component conditions\n");
2263 TRACE(
"Evaluating feature conditions\n");
2275 TRACE(
"Calculating file cost\n");
2290 if (((primary_folder[0] >=
'A' && primary_folder[0] <=
'Z') ||
2291 (primary_folder[0] >=
'a' && primary_folder[0] <=
'z')) && primary_folder[1] ==
':')
2297 primary_folder[2] = 0;
2379 TRACE(
"Uneven byte count\n");
2409 if ( (*
p <
'0') || (*
p >
'9') )
2415 if (deformated[0] ==
'-')
2428 if (
value[0] ==
'#')
2431 if (
value[1] ==
'%')
2454 ret =
L"HKEY_LOCAL_MACHINE\\";
2459 ret =
L"HKEY_CURRENT_USER\\";
2464 ret =
L"HKEY_CLASSES_ROOT\\";
2468 ret =
L"HKEY_CURRENT_USER\\";
2472 ret =
L"HKEY_LOCAL_MACHINE\\";
2476 ret =
L"HKEY_USERS\\";
2479 ERR(
"Unknown root %i\n",
root);
2571 for (
i = 0;
i < left_count;
i++)
2576 for (
i = 0;
i < right_count;
i++)
2589 unsigned int i,
j,
k;
2591 for (
i = 0;
i < new_count;
i++)
2593 for (
j = 0;
j < old_count;
j++)
2595 if (old[
j] && !
wcscmp(
new[
i], old[
j] ))
2598 for (
k =
j;
k < old_count - 1;
k++) { old[
k] = old[
k + 1]; }
2631 ERR(
"unhandled join op %u\n",
op);
2639 DWORD i, old_len = 0, new_len = 0, old_count = 0, new_count = 0;
2645 if (new_size /
sizeof(
WCHAR) - 1 > 1)
2647 new_ptr = (
const WCHAR *)new_value;
2648 new_len = new_size /
sizeof(
WCHAR) - 1;
2650 if (!new_ptr[0] && new_ptr[new_len - 1])
2656 else if (new_ptr[0] && !new_ptr[new_len - 1])
2661 else if (new_len > 2 && !new_ptr[0] && !new_ptr[new_len - 1])
2669 if (old_size /
sizeof(
WCHAR) - 1 > 1)
2672 old_len = old_size /
sizeof(
WCHAR) - 1;
2696 HKEY root_key, hkey;
2697 DWORD type, old_type, new_size, old_size = 0;
2698 LPWSTR deformated, uikey;
2716 TRACE(
"component not scheduled for installation %s\n",
debugstr_w(component));
2780 if (deformated || new_size)
2832 res =
RegQueryInfoKeyW(
key, 0, 0, 0, &subkeys, 0, 0, &
values, 0, 0, 0, 0);
2851 if (!
p[1])
continue;
2908 LPWSTR deformated_key, deformated_name, ui_key_str;
2926 TRACE(
"component not scheduled for removal %s\n",
debugstr_w(component));
2952 lstrcpyW( ui_key_str, root_key_str );
2953 lstrcatW( ui_key_str, deformated_key );
2958 else delete_value( comp, hkey_root, deformated_key, deformated_name );
2976 LPWSTR deformated_key, deformated_name, ui_key_str;
2992 TRACE(
"component not scheduled for installation %s\n",
debugstr_w(component));
3015 lstrcpyW( ui_key_str, root_key_str );
3016 lstrcatW( ui_key_str, deformated_key );
3021 else delete_value( comp, hkey_root, deformated_key, deformated_name );
3077 TRACE(
"InstallValidate\n");
3098 TRACE(
"Feature: %s Installed %d Request %d Action %d\n",
3135 TRACE(
"Checking launch conditions\n");
3170 if (deformated_name)
3175 if (deformated_name)
3188 FIXME(
"UNIMPLEMENTED keypath as ODBC Source\n");
3281 if (
file->Component == comp)
3347 TRACE(
"Component %s (%s) Keypath=%s RefCount=%u Clients=%u Action=%u\n",
3380 L"ORDER BY `DiskId`",
file->Sequence)))
3422 WARN(
"failed to open component key %u\n", rc );
3427 if (
res)
WARN(
"failed to delete component value %ld\n",
res );
3488 ITypeLib_GetLibAttr(tl_struct->
ptLib, &
attr);
3491 ITypeLib_ReleaseTLibAttr(tl_struct->
ptLib,
attr);
3498 ITypeLib_ReleaseTLibAttr(tl_struct->
ptLib,
attr);
3499 ITypeLib_Release(tl_struct->
ptLib);
3541 TRACE(
"component not scheduled for installation %s\n",
debugstr_w(component));
3547 TRACE(
"component has no key path\n");
3575 ERR(
"Failed to register type library %s\n",
debugstr_w(tl_struct.path));
3579 ITypeLib_Release(tl_struct.ptLib);
3582 else ERR(
"Failed to load type library %s\n",
debugstr_w(tl_struct.source));
3592 ERR(
"failed to load type library: %#lx\n",
hr );
3596 ITypeLib_Release(tlib);
3638 TRACE(
"component not scheduled for removal %s\n",
debugstr_w(component));
3657 WARN(
"failed to unregister typelib: %#lx\n",
hr );
3699 if (!extension ||
wcsicmp( extension,
L".lnk" ))
3749 TRACE(
"component not scheduled for installation %s\n",
debugstr_w(component));
3755 &IID_IShellLinkW, (
LPVOID *) &sl );
3759 ERR(
"CLSID_ShellLink not available\n");
3766 ERR(
"QueryInterface(IID_IPersistFile) failed\n");
3775 IShellLinkW_SetPath( sl,
path );
3780 FIXME(
"poorly handled shortcut format, advertised shortcut\n");
3782 IShellLinkW_SetPath( sl,
path );
3790 IShellLinkW_SetArguments(sl,deformated);
3815 IShellLinkW_SetIconLocation(sl,
path,
index);
3826 if (full_path) IShellLinkW_SetWorkingDirectory( sl, full_path );
3833 IPersistFile_Save(pf, link_file,
FALSE);
3840 IPersistFile_Release( pf );
3842 IShellLinkW_Release( sl );
3884 TRACE(
"component not scheduled for removal %s\n",
debugstr_w(component));
3927 ERR(
"Unable to get filename\n");
3950 ERR(
"Failed to get stream\n");
3955 }
while (sz == 1024);
4096 WARN(
"failed to open upgrade code key\n");
4138 HKEY patches_key =
NULL, product_patches_key =
NULL, product_key;
4196 ERR(
"unable to copy patch package %lu\n",
res );
4204 sizeof(patch->
state) );
4218 all_patches[
len] = 0;
4220 (
const BYTE *)all_patches, (
len + 1) *
sizeof(
WCHAR) );
4225 (
const BYTE *)all_patches, (
len + 1) *
sizeof(
WCHAR) );
4258 WCHAR *package_code;
4274 TRACE(
"re-publishing product - new package\n");
4331 const WCHAR *dirprop;
4366 LPWSTR deformated_section, deformated_key, deformated_value,
fullname;
4379 TRACE(
"component not scheduled for installation %s\n",
debugstr_w(component));
4397 TRACE(
"Adding value %s to section %s in %s\n",
4408 if (returned[0] == 0)
4410 TRACE(
"Adding value %s to section %s in %s\n",
4419 FIXME(
"Append to existing section not yet implemented\n");
4457 LPWSTR deformated_section, deformated_key, deformated_value,
filename;
4470 TRACE(
"component not scheduled for removal %s\n",
debugstr_w(component));
4488 TRACE(
"Removing key %s from section %s in %s\n",
4519 LPWSTR deformated_section, deformated_key, deformated_value,
filename;
4532 TRACE(
"component not scheduled for installation %s\n",
debugstr_w(component));
4550 TRACE(
"Removing key %s from section %s in %s\n",
4606 static const WCHAR regW[] =
L"regsvr32.exe /s \"%s\"";
4607 static const WCHAR unregW[] =
L"regsvr32.exe /s /u \"%s\"";
4609 static const WCHAR regW[] =
L"regsvr32.exe \"%s\"";
4610 static const WCHAR unregW[] =
L"regsvr32.exe /u \"%s\"";
4648 TRACE(
"component not scheduled for installation %s\n",
debugstr_w(
file->Component->Component));
4698 TRACE(
"component not scheduled for removal %s\n",
debugstr_w(
file->Component->Component));
4763 if (
feature->Level <= 0)
continue;
4895 static const WCHAR *propval[] =
4897 L"ARPAUTHORIZEDCDFPREFIX",
L"AuthorizedCDFPrefix",
4898 L"ARPCONTACT",
L"Contact",
4899 L"ARPCOMMENTS",
L"Comments",
4900 L"ProductName",
L"DisplayName",
4901 L"ARPHELPLINK",
L"HelpLink",
4902 L"ARPHELPTELEPHONE",
L"HelpTelephone",
4903 L"ARPINSTALLLOCATION",
L"InstallLocation",
4904 L"SourceDir",
L"InstallSource",
4905 L"Manufacturer",
L"Publisher",
4906 L"ARPREADME",
L"ReadMe",
4907 L"ARPSIZE",
L"Size",
4908 L"ARPURLINFOABOUT",
L"URLInfoAbout",
4909 L"ARPURLUPDATEINFO",
L"URLUpdateInfo",
4912 const WCHAR **
p = propval;
4937 static const WCHAR fmt_install[] =
L"MsiExec.exe /I[ProductCode]";
4938 static const WCHAR fmt_uninstall[] =
L"MsiExec.exe /X[ProductCode]";
4947 fmt = fmt_uninstall;
5053 if ((
p =
wcsrchr( icon_path,
'\\' )))
5089 WARN(
"upgrade code not found\n" );
5095 res =
RegQueryInfoKeyW( hkey,
NULL,
NULL,
NULL,
NULL,
NULL, &
count,
NULL,
NULL,
NULL,
NULL,
NULL );
5102 res =
RegQueryInfoKeyW( hkey,
NULL,
NULL,
NULL,
NULL,
NULL, &
count,
NULL,
NULL,
NULL,
NULL,
NULL );
5109 res =
RegQueryInfoKeyW( hkey,
NULL,
NULL,
NULL,
NULL,
NULL, &
count,
NULL,
NULL,
NULL,
NULL,
NULL );
5266 static const WCHAR szPropKeys[][80] =
5273 static const WCHAR szRegKeys[][80] =
5303 for(
i = 0; szPropKeys[
i][0];
i++ )
5339 WCHAR *info_template;
5467 WCHAR productid_85[21], component_85[21], *
ret;
5473 productid_85[0] = 0;
5474 component_85[0] = 0;
5547 for (
p = existing; *
p;
p +=
len)
5561 for (
p = existing; *
p;
p +=
len)
5645 lstrcpyW( keypath,
L"Software\\Microsoft\\Installer\\Components\\" );
5651 WARN(
"unable to delete component key %ld\n",
res );
5686 SC_HANDLE hscm =
NULL, service =
NULL;
5690 DWORD serv_type, start_type, err_control;
5699 WARN(
"service component not found\n");
5705 TRACE(
"component not scheduled for installation %s\n",
debugstr_w(comp));
5711 ERR(
"Failed to open the SC Manager!\n");
5735 err_control &= ~msidbServiceInstallErrorControlVital;
5741 ERR(
"Query failed\n");
5753 ERR(
"Failed to load the service file\n");
5772 start_type, err_control, image_path, load_order,
5785 else if (
sd.lpDescription)
5791 if (image_path !=
file->TargetPath)
msi_free(image_path);
5871 SC_HANDLE scm =
NULL, service =
NULL;
5902 ERR(
"Failed to open the service control manager\n");
5954 WARN(
"service failed to start %lu\n",
status.dwCurrentState );
6002 0, &needed, &
count))
6013 needed, &needed, &
count))
6038 SC_HANDLE scm =
NULL, service =
NULL;
6108 ERR(
"Failed to open the service control manager\n");
6159 SC_HANDLE scm =
NULL, service =
NULL;
6255 TRACE(
"component not scheduled for installation %s\n",
debugstr_w(component));
6268 ERR(
"ODBC Driver entry not found!\n");
6310 ERR(
"Failed to install SQL driver!\n");
6330 LPWSTR translator, translator_path,
ptr;
6347 TRACE(
"component not scheduled for installation %s\n",
debugstr_w(component));
6358 if (!translator_file)
6360 ERR(
"ODBC Translator entry not found!\n");
6393 ERR(
"Failed to install SQL translator!\n");
6430 TRACE(
"component not scheduled for installation %s\n",
debugstr_w(component));
6450 WARN(
"Failed to install SQL data source!\n");
6515 TRACE(
"component not scheduled for removal %s\n",
debugstr_w(component));
6522 WARN(
"Failed to remove ODBC driver\n");
6526 FIXME(
"Usage count reached 0\n");
6554 TRACE(
"component not scheduled for removal %s\n",
debugstr_w(component));
6561 WARN(
"Failed to remove ODBC translator\n");
6565 FIXME(
"Usage count reached 0\n");
6596 TRACE(
"component not scheduled for removal %s\n",
debugstr_w(component));
6612 FIXME(
"Use ODBCSourceAttribute table\n");
6619 WARN(
"Failed to remove ODBC data source\n");
6668#define ENV_ACT_SETALWAYS 0x1
6669#define ENV_ACT_SETABSENT 0x2
6670#define ENV_ACT_REMOVE 0x4
6671#define ENV_ACT_REMOVEMATCH 0x8
6673#define ENV_MOD_MACHINE 0x20000000
6674#define ENV_MOD_APPEND 0x40000000
6675#define ENV_MOD_PREFIX 0x80000000
6676#define ENV_MOD_MASK 0xC0000000
6678#define check_flag_combo(x, y) ((x) & ~(y)) == (y)
6689 else if (*cptr ==
'+')
6691 else if (*cptr ==
'-')
6693 else if (*cptr ==
'!')
6695 else if (*cptr ==
'*')
6706 ERR(
"Missing environment variable\n");
6748 ERR(
"invalid flags: %#lx\n", *
flags );
6766 env =
L"System\\CurrentControlSet\\Control\\Session Manager\\Environment";
6771 env =
L"Environment";
6795 int action = 0, found = 0;
6805 TRACE(
"component not scheduled for installation %s\n",
debugstr_w(component));
6828 value = deformatted;
6912 while (*
q && *
q !=
';')
q++;
6926 TRACE(
"string already set\n");
6940 newval[len_value] =
';';
6941 p = newval + len_value + 1;
7015 TRACE(
"component not scheduled for removal %s\n",
debugstr_w(component));
7044 value = deformatted;
7085 len_new_value =
size /
sizeof(
WCHAR) - 1;
7089 while (*
q && *
q !=
';')
q++;
7094 memmove(
p,
q, (len_new_value - (
q - new_value) + 1) *
sizeof(
WCHAR) );
7101 if (!new_value[0] || !
value)
7161 if (
key &&
template)
7165 WARN(
"Product key validation HACK, see CORE-14710\n");
7204 TRACE(
"%p\n", package);
7212 FIXME(
"%p\n", package);
7240 if (
count)
FIXME(
"ignored %lu rows in ODBCTranslator table\n",
count );
7273 swprintf(
cmd,
len,
L"msiexec /qn /i %s REMOVE=%s", product, features ? features :
L"ALL" );
7332 FIXME(
"migrate feature states from %s version min %s version max %s language %s\n",
7346 TRACE(
"product is installed, skipping action\n");
7351 TRACE(
"Preselected property is set, not migrating feature states\n");
7390 WCHAR *pathW, **path_list;
7403 for (
i = 0; path_list[
i] && path_list[
i][0];
i++)
7593 TRACE(
"scheduling rollback action\n");
7642 TRACE(
"Running the actions\n");
7657 ERR(
"failed to fetch action\n");
7736 file = szPackagePath;
7784 TRACE(
"disabling rollback\n");
7813 WARN(
"installation failed, running rollback script\n");
ULONGLONG WINAPI GetTickCount64(VOID)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
UINT ACTION_AppSearch(MSIPACKAGE *package)
UINT ACTION_CCPSearch(MSIPACKAGE *package)
void msi_parse_version_string(LPCWSTR verStr, PDWORD ms, PDWORD ls)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static WCHAR * strdupW(const WCHAR *src)
void ls(int argc, const char *argv[])
static int list_empty(struct list_entry *head)
static void list_add_tail(struct list_entry *head, struct list_entry *entry)
static void list_init(struct list_entry *head)
#define RegCloseKey(hKey)
_In_ ULONG const _In_ FEATURE_NUMBER const Feature
LSTATUS WINAPI RegDeleteTreeW(_In_ HKEY, _In_opt_ LPCWSTR)
static LPCWSTR LPCWSTR LPCWSTR env
#define ERROR_NOT_ENOUGH_MEMORY
#define ERROR_INSUFFICIENT_BUFFER
static const WCHAR szEmpty[]
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LONG WINAPI RegDeleteKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ REGSAM samDesired, _In_ DWORD Reserved)
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
LONG WINAPI RegDeleteKeyW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey)
LONG WINAPI RegDeleteValueW(HKEY hKey, LPCWSTR lpValueName)
LONG WINAPI RegQueryInfoKeyW(HKEY hKey, LPWSTR lpClass, LPDWORD lpcClass, LPDWORD lpReserved, LPDWORD lpcSubKeys, LPDWORD lpcMaxSubKeyLen, LPDWORD lpcMaxClassLen, LPDWORD lpcValues, LPDWORD lpcMaxValueNameLen, LPDWORD lpcMaxValueLen, LPDWORD lpcbSecurityDescriptor, PFILETIME lpftLastWriteTime)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
LONG WINAPI RegCreateKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
#define GetCurrentDirectoryW(x, y)
#define INVALID_HANDLE_VALUE
#define FILE_ATTRIBUTE_NORMAL
static const WCHAR version[]
static WCHAR * parse_value(const WCHAR *str, unsigned int len)
BOOL WINAPI CopyFileW(IN LPCWSTR lpExistingFileName, IN LPCWSTR lpNewFileName, IN BOOL bFailIfExists)
BOOL WINAPI CreateDirectoryW(IN LPCWSTR lpPathName, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes)
BOOL WINAPI RemoveDirectoryW(IN LPCWSTR lpPathName)
BOOL WINAPI GetDiskFreeSpaceExW(IN LPCWSTR lpDirectoryName OPTIONAL, OUT PULARGE_INTEGER lpFreeBytesAvailableToCaller, OUT PULARGE_INTEGER lpTotalNumberOfBytes, OUT PULARGE_INTEGER lpTotalNumberOfFreeBytes)
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryExW(LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags)
DWORD WINAPI GetTempPathW(IN DWORD count, OUT LPWSTR path)
UINT WINAPI GetSystemDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessW(LPCWSTR lpApplicationName, LPWSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCWSTR lpCurrentDirectory, LPSTARTUPINFOW lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
VOID WINAPI GetLocalTime(OUT LPSYSTEMTIME lpSystemTime)
BOOL WINAPI WritePrivateProfileStringW(LPCWSTR section, LPCWSTR entry, LPCWSTR string, LPCWSTR filename)
INT WINAPI GetPrivateProfileStringW(LPCWSTR section, LPCWSTR entry, LPCWSTR def_val, LPWSTR buffer, UINT len, LPCWSTR filename)
BOOL WINAPI EnumResourceNamesW(HMODULE hmod, LPCWSTR type, ENUMRESNAMEPROCW lpfun, LONG_PTR lparam)
static UINT load_file_disk_id(MSIPACKAGE *package, MSIFILE *file)
static const struct @499 StandardActions[]
static UINT iterate_patched_component(MSIRECORD *row, LPVOID param)
static BOOL msi_check_publish(MSIPACKAGE *package)
static UINT ACTION_RemoveIniValues(MSIPACKAGE *package)
static UINT ITERATE_WriteRegistryValues(MSIRECORD *row, LPVOID param)
static UINT add_folder_child(MSIFOLDER *parent, MSIFOLDER *child)
UINT msi_set_context(MSIPACKAGE *package)
static void remove_product_upgrade_code(MSIPACKAGE *package)
static UINT ACTION_RemoveExistingProducts(MSIPACKAGE *package)
static UINT ACTION_MigrateFeatureStates(MSIPACKAGE *package)
static UINT ACTION_RemoveODBC(MSIPACKAGE *package)
static UINT open_env_key(DWORD flags, HKEY *key)
static UINT ACTION_CreateShortcuts(MSIPACKAGE *package)
static UINT ACTION_InstallODBC(MSIPACKAGE *package)
static UINT msi_unpublish_feature(MSIPACKAGE *package, MSIFEATURE *feature)
static UINT ACTION_INSTALL(MSIPACKAGE *package)
#define REG_PROGRESS_VALUE
static void write_shared_dlls_count(MSICOMPONENT *comp, const WCHAR *path, INT count)
static UINT ITERATE_StopService(MSIRECORD *rec, LPVOID param)
static BOOL CALLBACK Typelib_EnumResNameProc(HMODULE hModule, LPCWSTR lpszType, LPWSTR lpszName, LONG_PTR lParam)
static UINT load_file_hash(MSIPACKAGE *package, MSIFILE *file)
static UINT ACTION_ProcessUISequence(MSIPACKAGE *package)
static BOOL stop_service_dependents(SC_HANDLE scm, SC_HANDLE service)
static UINT ITERATE_UnregisterTypeLibraries(MSIRECORD *row, LPVOID param)
static void register_dll(const WCHAR *dll, BOOL unregister)
static UINT find_folder_children(MSIRECORD *row, LPVOID param)
static UINT ITERATE_RemoveRegistryValuesOnUninstall(MSIRECORD *row, LPVOID param)
INSTALLSTATE msi_get_component_action(MSIPACKAGE *package, MSICOMPONENT *comp)
int msi_compare_file_versions(VS_FIXEDFILEINFO *fi, const WCHAR *version)
static UINT msi_publish_upgrade_code(MSIPACKAGE *package)
static UINT ITERATE_UnpublishComponent(MSIRECORD *rec, LPVOID param)
static UINT ACTION_InstallAdminPackage(MSIPACKAGE *package)
static UINT ACTION_UnregisterTypeLibraries(MSIPACKAGE *package)
static UINT msi_publish_product_properties(MSIPACKAGE *package, HKEY hkey)
static UINT ACTION_RegisterProduct(MSIPACKAGE *package)
static int parse_prop(const WCHAR *str, WCHAR *value, int *quotes)
static int is_key_empty(const MSICOMPONENT *comp, HKEY root, const WCHAR *path)
static UINT ACTION_FileCost(MSIPACKAGE *package)
static UINT ITERATE_RegisterTypeLibraries(MSIRECORD *row, LPVOID param)
static UINT stop_service(LPCWSTR name)
static BYTE * reg_get_value(HKEY hkey, const WCHAR *name, DWORD *type, DWORD *size)
WCHAR ** msi_split_string(const WCHAR *str, WCHAR sep)
static UINT msi_publish_sourcelist(MSIPACKAGE *package, HKEY hkey)
static UINT msi_publish_patches(MSIPACKAGE *package)
static void mark_patched_components(MSIPACKAGE *package)
static void stop_dummy_thread(struct dummy_thread *info)
static UINT ACTION_PublishComponents(MSIPACKAGE *package)
static UINT add_feature_child(MSIFEATURE *parent, MSIFEATURE *child)
static BYTE * parse_value(MSIPACKAGE *package, const WCHAR *value, DWORD len, DWORD *type, DWORD *size)
static void ACTION_GetComponentInstallStates(MSIPACKAGE *package)
static UINT ACTION_RemoveFolders(MSIPACKAGE *package)
static UINT ITERATE_RemoveODBCDataSource(MSIRECORD *rec, LPVOID param)
static UINT ITERATE_InstallService(MSIRECORD *rec, LPVOID param)
UINT msi_load_all_components(MSIPACKAGE *package)
static void refcount_component(MSIPACKAGE *package, MSICOMPONENT *comp)
UINT MSI_InstallPackage(MSIPACKAGE *package, LPCWSTR szPackagePath, LPCWSTR szCommandLine)
static UINT ITERATE_InstallODBCTranslator(MSIRECORD *rec, LPVOID param)
static WCHAR * get_link_file(MSIPACKAGE *package, MSIRECORD *row)
static UINT ACTION_UnpublishFeatures(MSIPACKAGE *package)
static HKEY open_shared_dlls_key(MSICOMPONENT *comp, BOOL create, REGSAM access)
BOOL msi_is_global_assembly(MSICOMPONENT *comp)
static UINT ITERATE_RemoveODBCDriver(MSIRECORD *rec, LPVOID param)
static UINT msi_publish_install_properties(MSIPACKAGE *package, HKEY hkey)
static UINT ACTION_ProcessExecSequence(MSIPACKAGE *package)
DWORD WINAPI dummy_thread_proc(void *arg)
static UINT load_folder(MSIRECORD *row, LPVOID param)
static UINT load_media(MSIRECORD *row, LPVOID param)
static BOOL msi_bind_image(MSIPACKAGE *package, const char *filename, const char *path)
static BOOL needs_ui_sequence(MSIPACKAGE *package)
static void ui_actioninfo(MSIPACKAGE *package, LPCWSTR action, BOOL start, INT rc)
static UINT ACTION_ProcessComponents(MSIPACKAGE *package)
static LPWSTR folder_split_path(LPWSTR p, WCHAR ch)
UINT msi_set_sourcedir_props(MSIPACKAGE *package, BOOL replace)
MSIFOLDER * msi_get_loaded_folder(MSIPACKAGE *package, const WCHAR *dir)
static BOOL msi_check_unpublish(MSIPACKAGE *package)
#define ENV_ACT_REMOVEMATCH
#define ENV_ACT_SETALWAYS
static UINT ACTION_PublishFeatures(MSIPACKAGE *package)
static UINT ACTION_WriteIniValues(MSIPACKAGE *package)
static UINT ACTION_RegisterComPlus(MSIPACKAGE *package)
UINT ACTION_ForceReboot(MSIPACKAGE *package)
UINT MSI_Sequence(MSIPACKAGE *package, LPCWSTR table)
static BOOL ui_sequence_exists(MSIPACKAGE *package)
static UINT ITERATE_BindImage(MSIRECORD *rec, LPVOID param)
UINT(* handler)(MSIPACKAGE *)
static UINT ACTION_UnregisterComPlus(MSIPACKAGE *package)
static BOOL is_full_uninstall(MSIPACKAGE *package)
static UINT ITERATE_SelfRegModules(MSIRECORD *row, LPVOID param)
static DWORD remove_duplicate_values(WCHAR **old, DWORD old_count, WCHAR **new, DWORD new_count)
static UINT ACTION_RMCCPSearch(MSIPACKAGE *package)
#define check_flag_combo(x, y)
static UINT ITERATE_InstallODBCDriver(MSIRECORD *rec, LPVOID param)
int msi_compare_font_versions(const WCHAR *ver1, const WCHAR *ver2)
static UINT ACTION_InstallFinalize(MSIPACKAGE *package)
static UINT ITERATE_InstallODBCDataSource(MSIRECORD *rec, LPVOID param)
static BOOL is_special_entry(const WCHAR *name)
static UINT ACTION_ValidateProductID(MSIPACKAGE *package)
static UINT ACTION_InstallExecute(MSIPACKAGE *package)
#define ENV_ACT_SETABSENT
WCHAR * msi_normalize_path(const WCHAR *in)
static UINT ITERATE_CostFinalizeConditions(MSIRECORD *row, LPVOID param)
static UINT load_component(MSIRECORD *row, LPVOID param)
static UINT ACTION_WriteEnvironmentStrings(MSIPACKAGE *package)
static WCHAR ** split_multi_string_values(const WCHAR *str, DWORD len, DWORD *count)
static UINT ACTION_AllocateRegistrySpace(MSIPACKAGE *package)
static UINT ACTION_InstallInitialize(MSIPACKAGE *package)
static UINT ITERATE_RemoveFolders(MSIRECORD *row, LPVOID param)
static UINT ACTION_PerformActionSequence(MSIPACKAGE *package, UINT seq)
static BOOL is_feature_selected(MSIFEATURE *feature, INT level)
static REGSAM get_registry_view(const MSICOMPONENT *comp)
static WCHAR * get_ini_file_name(MSIPACKAGE *package, MSIRECORD *row)
static UINT msi_unpublish_icons(MSIPACKAGE *package)
static void remove_persistent_folder(MSIFOLDER *folder)
static UINT load_patch(MSIRECORD *row, LPVOID param)
static UINT ACTION_StopServices(MSIPACKAGE *package)
UINT msi_validate_product_id(MSIPACKAGE *package)
static BOOL process_state_property(MSIPACKAGE *package, int level, LPCWSTR property, INSTALLSTATE state)
static UINT ITERATE_Actions(MSIRECORD *row, LPVOID param)
static UINT env_parse_flags(LPCWSTR *name, LPCWSTR *value, DWORD *flags)
static WCHAR * flatten_multi_string_values(WCHAR **left, DWORD left_count, WCHAR **right, DWORD right_count, DWORD *size)
static UINT ITERATE_WriteIniValues(MSIRECORD *row, LPVOID param)
static UINT ITERATE_MigrateFeatureStates(MSIRECORD *rec, LPVOID param)
static UINT ITERATE_PublishComponent(MSIRECORD *rec, LPVOID param)
static UINT ACTION_DisableRollback(MSIPACKAGE *package)
static UINT ITERATE_RemoveExistingProducts(MSIRECORD *rec, LPVOID param)
static void disable_children(MSIFEATURE *feature, int level)
UINT MSI_SetFeatureStates(MSIPACKAGE *package)
static void ACTION_GetFeatureInstallStates(MSIPACKAGE *package)
static UINT load_folder_persistence(MSIPACKAGE *package, MSIFOLDER *folder)
static UINT ACTION_RemoveShortcuts(MSIPACKAGE *package)
void msi_ui_progress(MSIPACKAGE *package, int a, int b, int c, int d)
const WCHAR * action_rollback
static UINT load_patch_disk_id(MSIPACKAGE *package, MSIFILEPATCH *patch)
static UINT ACTION_RegisterTypeLibraries(MSIPACKAGE *package)
static LPCWSTR * msi_service_args_to_vector(LPWSTR args, DWORD *numargs)
static void follow_parent(MSIFEATURE *feature)
static UINT ACTION_ExecuteAction(MSIPACKAGE *package)
static UINT load_all_files(MSIPACKAGE *package)
static UINT ITERATE_SelfUnregModules(MSIRECORD *row, LPVOID param)
MSIFEATURE * msi_get_loaded_feature(MSIPACKAGE *package, const WCHAR *Feature)
static UINT ACTION_CostFinalize(MSIPACKAGE *package)
static UINT ITERATE_RemoveIniValuesOnInstall(MSIRECORD *row, LPVOID param)
static UINT load_all_media(MSIPACKAGE *package)
static BYTE * build_multi_string_value(BYTE *old_value, DWORD old_size, BYTE *new_value, DWORD new_size, DWORD *size)
static UINT ITERATE_UnpublishIcon(MSIRECORD *row, LPVOID param)
static UINT ACTION_UnpublishComponents(MSIPACKAGE *package)
static UINT ITERATE_CreateFolders(MSIRECORD *row, LPVOID param)
static UINT ACTION_InstallSFPCatalogFile(MSIPACKAGE *package)
UINT ACTION_PerformAction(MSIPACKAGE *package, const WCHAR *action)
WCHAR * msi_create_component_advertise_string(MSIPACKAGE *package, MSICOMPONENT *component, const WCHAR *feature)
static UINT iterate_load_featurecomponents(MSIRECORD *row, LPVOID param)
static HMODULE msi_load_library(MSIPACKAGE *package, const WCHAR *filename, DWORD flags)
static UINT load_file(MSIRECORD *row, LPVOID param)
static void set_target_path(MSIPACKAGE *package, MSIFILE *file)
static UINT iterate_properties(MSIRECORD *record, void *param)
static BOOL process_overrides(MSIPACKAGE *package, int level)
static UINT ACTION_InstallValidate(MSIPACKAGE *package)
static UINT ACTION_WriteRegistryValues(MSIPACKAGE *package)
static UINT load_feature(MSIRECORD *row, LPVOID param)
static void remove_quotes(WCHAR *str)
static UINT ACTION_HandleStandardAction(MSIPACKAGE *package, LPCWSTR action)
static UINT ACTION_InstallServices(MSIPACKAGE *package)
static UINT ACTION_ScheduleReboot(MSIPACKAGE *package)
static UINT ACTION_LaunchConditions(MSIPACKAGE *package)
static UINT ITERATE_LaunchConditions(MSIRECORD *row, LPVOID param)
static UINT ACTION_BindImage(MSIPACKAGE *package)
static UINT ITERATE_WriteEnvironmentString(MSIRECORD *rec, LPVOID param)
static UINT ACTION_IsolateComponents(MSIPACKAGE *package)
UINT msi_parse_command_line(MSIPACKAGE *package, LPCWSTR szCommandLine, BOOL preserve_case)
static UINT ACTION_StartServices(MSIPACKAGE *package)
static UINT add_feature_component(MSIFEATURE *feature, MSICOMPONENT *comp)
static UINT execute_script(MSIPACKAGE *package, UINT script)
static void bind_image(MSIPACKAGE *package, const char *filename, const char *path)
static UINT ITERATE_RemoveRegistryValuesOnInstall(MSIRECORD *row, LPVOID param)
static INT ui_actionstart(MSIPACKAGE *package, LPCWSTR action, LPCWSTR description, LPCWSTR template)
MSICOMPONENT * msi_get_loaded_component(MSIPACKAGE *package, const WCHAR *Component)
static UINT calculate_file_cost(MSIPACKAGE *package)
static UINT ITERATE_RemoveIniValuesOnUninstall(MSIRECORD *row, LPVOID param)
static UINT ITERATE_RemoveODBCTranslator(MSIRECORD *rec, LPVOID param)
UINT msi_load_all_features(MSIPACKAGE *package)
static UINT ACTION_SelfUnregModules(MSIPACKAGE *package)
static UINT ACTION_ResolveSource(MSIPACKAGE *package)
static WCHAR * join_multi_string_values(enum join_op op, WCHAR **old, DWORD old_count, WCHAR **new, DWORD new_count, DWORD *size)
static UINT ITERATE_PublishIcon(MSIRECORD *row, LPVOID param)
static UINT ITERATE_CreateShortcuts(MSIRECORD *row, LPVOID param)
static UINT get_shared_dlls_count(MSICOMPONENT *comp)
static WCHAR * create_temp_dir(MSIDATABASE *db)
static UINT ACTION_SelfRegModules(MSIPACKAGE *package)
static UINT ITERATE_RemoveShortcuts(MSIRECORD *row, LPVOID param)
void msi_resolve_target_folder(MSIPACKAGE *package, const WCHAR *name, BOOL load_prop)
static UINT ITERATE_RemoveEnvironmentString(MSIRECORD *rec, LPVOID param)
#define COMPONENT_PROGRESS_VALUE
static UINT ACTION_UnpublishProduct(MSIPACKAGE *package)
static UINT msi_publish_icons(MSIPACKAGE *package)
const WCHAR * msi_get_command_line_option(const WCHAR *cmd, const WCHAR *option, UINT *len)
WCHAR * msi_build_icon_path(MSIPACKAGE *package, const WCHAR *icon_name)
static UINT load_all_patches(MSIPACKAGE *package)
static UINT ACTION_SetODBCFolders(MSIPACKAGE *package)
static HRESULT msi_load_typelib(MSIPACKAGE *package, const WCHAR *filename, REGKIND kind, ITypeLib **lib)
static const WCHAR * get_root_key(MSIPACKAGE *package, INT root, HKEY *root_key)
static UINT ACTION_RemoveEnvironmentStrings(MSIPACKAGE *package)
static UINT ACTION_HandleCustomAction(MSIPACKAGE *package, LPCWSTR action)
static UINT ACTION_RegisterUser(MSIPACKAGE *package)
static UINT ACTION_CreateFolders(MSIPACKAGE *package)
WCHAR *WINAPIV msi_build_directory_name(DWORD count,...)
static void get_client_counts(MSIPACKAGE *package)
static WCHAR * build_full_keypath(MSIPACKAGE *package, MSICOMPONENT *comp)
static UINT ACTION_RemoveRegistryValues(MSIPACKAGE *package)
static void start_dummy_thread(struct dummy_thread *info)
static UINT ITERATE_StartService(MSIRECORD *rec, LPVOID param)
static UINT ITERATE_DeleteService(MSIRECORD *rec, LPVOID param)
static WCHAR * get_install_location(MSIPACKAGE *package)
static UINT msi_unimplemented_action_stub(MSIPACKAGE *package, LPCSTR action, LPCWSTR table)
INSTALLSTATE msi_get_feature_action(MSIPACKAGE *package, MSIFEATURE *feature)
MSIFILE * msi_get_loaded_file(MSIPACKAGE *package, const WCHAR *key)
static UINT ACTION_PublishProduct(MSIPACKAGE *package)
static UINT find_feature_children(MSIRECORD *row, LPVOID param)
static UINT load_all_folders(MSIPACKAGE *package)
static UINT ACTION_DeleteServices(MSIPACKAGE *package)
static ULONGLONG get_volume_space_required(MSIPACKAGE *package)
static UINT ACTION_CostInitialize(MSIPACKAGE *package)
static LPWSTR resolve_keypath(MSIPACKAGE *package, MSICOMPONENT *cmp)
UINT msi_schedule_action(MSIPACKAGE *package, UINT script, const WCHAR *action)
void ACTION_FinishCustomActions(const MSIPACKAGE *package)
UINT ACTION_CustomAction(MSIPACKAGE *package, const WCHAR *action)
INT ACTION_ShowDialog(MSIPACKAGE *package, const WCHAR *dialog)
void msi_dialog_check_messages(HANDLE handle)
BOOL msi_create_full_path(MSIPACKAGE *package, const WCHAR *path)
BOOL msi_remove_directory(MSIPACKAGE *package, const WCHAR *path)
HANDLE msi_create_file(MSIPACKAGE *package, const WCHAR *filename, DWORD access, DWORD sharing, DWORD creation, DWORD flags)
UINT ACTION_InstallFiles(MSIPACKAGE *package)
UINT ACTION_RemoveFiles(MSIPACKAGE *package)
BOOL msi_delete_file(MSIPACKAGE *package, const WCHAR *filename)
WCHAR * msi_resolve_file_source(MSIPACKAGE *package, MSIFILE *file)
void msi_reduce_to_long_filename(WCHAR *filename)
VS_FIXEDFILEINFO * msi_get_disk_file_version(MSIPACKAGE *package, const WCHAR *filename)
UINT ACTION_PatchFiles(MSIPACKAGE *package)
DWORD msi_get_file_attributes(MSIPACKAGE *package, const WCHAR *path)
UINT ACTION_DuplicateFiles(MSIPACKAGE *package)
DWORD msi_get_disk_file_size(MSIPACKAGE *package, const WCHAR *filename)
UINT ACTION_MoveFiles(MSIPACKAGE *package)
UINT ACTION_RemoveDuplicateFiles(MSIPACKAGE *package)
WCHAR * msi_get_font_file_version(MSIPACKAGE *package, const WCHAR *filename)
UINT ACTION_UnregisterFonts(MSIPACKAGE *package)
UINT ACTION_RegisterFonts(MSIPACKAGE *package)
int msiobj_release(MSIOBJECTHDR *info)
const WCHAR * msi_get_target_folder(MSIPACKAGE *package, const WCHAR *name)
UINT WINAPI MsiQueryComponentStateW(LPCWSTR szProductCode, LPCWSTR szUserSid, MSIINSTALLCONTEXT dwContext, LPCWSTR szComponent, INSTALLSTATE *pdwState)
UINT msi_locate_product(LPCWSTR szProduct, MSIINSTALLCONTEXT *context)
INSTALLSTATE WINAPI MsiQueryFeatureStateW(LPCWSTR szProduct, LPCWSTR szFeature)
#define IDS_TEMP_INSTALLFILES
#define IDS_TEMP_REMOVEEXISTINGPRODUCTS
#define IDS_DESC_PATCHFILES
#define IDS_TEMP_INSTALLSFPCATALOGFILE
#define IDS_DESC_REMOVEODBC
#define IDS_DESC_WRITEINIVALUES
#define IDS_DESC_SETODBCFOLDERS
#define IDS_TEMP_DUPLICATEFILES
#define IDS_DESC_CREATESHORTCUTS
#define IDS_DESC_REGISTEREXTENSIONINFO
#define IDS_DESC_WRITEENVIRONMENTSTRINGS
#define IDS_TEMP_SELFUNREGMODULES
#define IDS_TEMP_REGISTERCOMPLUS
#define MSIERR_INSERTDISK
#define IDS_TEMP_SELFREGMODULES
#define IDS_DESC_REGISTERFONTS
#define IDS_DESC_UNREGISTERCOMPLUS
#define IDS_DESC_STOPSERVICES
#define IDS_DESC_SELFREGMODULES
#define IDS_DESC_PUBLISHPRODUCT
#define IDS_DESC_INSTALLODBC
#define IDS_DESC_REGISTERMIMEINFO
#define IDS_TEMP_REMOVEFILES
#define IDS_DESC_ALLOCATEREGISTRYSPACE
#define IDS_DESC_REMOVEINIVALUES
#define IDS_TEMP_UNPUBLISHFEATURES
#define IDS_DESC_UNREGISTERTYPELIBRARIES
#define IDS_TEMP_UNPUBLISHCOMPONENTS
#define IDS_DESC_LAUNCHCONDITIONS
#define IDS_DESC_APPSEARCH
#define IDS_DESC_RMCCPSEARCH
#define IDS_TEMP_DELETESERVICES
#define IDS_TEMP_REMOVESHORTCUTS
#define IDS_DESC_MOVEFILES
#define IDS_DESC_REMOVEREGISTRYVALUES
#define IDS_DESC_UNPUBLISHPRODUCT
#define IDS_DESC_FILECOST
#define MSIERR_INFO_ACTIONENDED
#define IDS_DESC_MSIPUBLISHASSEMBLIES
#define IDS_DESC_REGISTERCLASSINFO
#define IDS_TEMP_REMOVEINIVALUES
#define IDS_TEMP_REGISTERFONTS
#define IDS_DESC_REGISTERPRODUCT
#define IDS_DESC_STARTSERVICES
#define IDS_TEMP_UNREGISTERTYPELIBRARIES
#define IDS_DESC_COSTFINALIZE
#define IDS_DESC_UNREGISTERMIMEINFO
#define IDS_DESC_BINDIMAGE
#define IDS_TEMP_WRITEENVIRONMENTSTRINGS
#define IDS_DESC_REMOVEDUPLICATEFILES
#define IDS_TEMP_UNREGISTERCOMPLUS
#define IDS_DESC_UNPUBLISHCOMPONENTS
#define IDS_TEMP_REMOVEDUPLICATEFILES
#define IDS_TEMP_MSIUNPUBLISHASSEMBLIES
#define IDS_DESC_REGISTERCOMPLUS
#define IDS_DESC_MIGRATEFEATURESTATES
#define IDS_DESC_REMOVEEXISTINGPRODUCTS
#define IDS_TEMP_PUBLISHCOMPONENTS
#define IDS_TEMP_BINDIMAGE
#define IDS_TEMP_UNREGISTERCLASSINFO
#define IDS_TEMP_STOPSERVICES
#define IDS_TEMP_INSTALLSERVICES
#define IDS_TEMP_UNREGISTEREXTENSIONINFO
#define IDS_DESC_INSTALLSERVICES
#define IDS_TEMP_MOVEFILES
#define IDS_TEMP_REMOVEREGISTRYVALUES
#define IDS_DESC_UNREGISTERPROGIDINFO
#define IDS_DESC_UNPUBLISHFEATURES
#define IDS_DESC_MSIUNPUBLISHASSEMBLIES
#define IDS_DESC_PUBLISHCOMPONENTS
#define IDS_TEMP_FINDRELATEDPRODUCTS
#define IDS_TEMP_CREATESHORTCUTS
#define IDS_DESC_WRITEREGISTRYVALUES
#define IDS_TEMP_REGISTERCLASSINFO
#define IDS_TEMP_PATCHFILES
#define IDS_DESC_INSTALLSFPCATALOGFILE
#define IDS_TEMP_UNREGISTERFONTS
#define IDS_DESC_UNREGISTERCLASSINFO
#define IDS_TEMP_REGISTERTYPELIBRARIES
#define IDS_DESC_PUBLISHFEATURES
#define IDS_DESC_REMOVEFOLDERS
#define IDS_TEMP_WRITEINIVALUES
#define IDS_TEMP_MSIPUBLISHASSEMBLIES
#define IDS_TEMP_REGISTERPROGIDINFO
#define IDS_DESC_DUPLICATEFILES
#define IDS_DESC_CCPSEARCH
#define IDS_DESC_SELFUNREGMODULES
#define IDS_DESC_INSTALLFILES
#define IDS_DESC_INSTALLADMINPACKAGE
#define IDS_TEMP_UNREGISTERPROGIDINFO
#define IDS_DESC_REGISTERTYPELIBRARIES
#define IDS_TEMP_REMOVEFOLDERS
#define IDS_DESC_CREATEFOLDERS
#define IDS_TEMP_CREATEFOLDERS
#define IDS_TEMP_WRITEREGISTRYVALUES
#define IDS_TEMP_STARTSERVICES
#define IDS_TEMP_ALLOCATEREGISTRYSPACE
#define IDS_DESC_UNREGISTEREXTENSIONINFO
#define MSIERR_INFO_LOGGINGSTART
#define IDS_DESC_REGISTERUSER
#define IDS_DESC_FINDRELATEDPRODUCTS
#define IDS_DESC_REMOVESHORTCUTS
#define MSIERR_INFO_ACTIONSTART
#define IDS_DESC_DELETESERVICES
#define IDS_DESC_REMOVEFILES
#define IDS_DESC_UNREGISTERFONTS
#define IDS_TEMP_INSTALLADMINPACKAGE
#define IDS_TEMP_APPSEARCH
#define IDS_TEMP_REMOVEENVIRONMENTSTRINGS
#define IDS_DESC_REGISTERPROGIDINFO
#define IDS_DESC_COSTINITIALIZE
#define IDS_TEMP_MIGRATEFEATURESTATES
#define IDS_TEMP_REGISTERMIMEINFO
#define IDS_DESC_INSTALLVALIDATE
#define IDS_TEMP_PUBLISHFEATURES
#define IDS_DESC_PROCESSCOMPONENTS
#define IDS_DESC_REMOVEENVIRONMENTSTRINGS
#define IDS_TEMP_UNREGISTERMIMEINFO
UINT WINAPI MsiSourceListSetInfoW(const WCHAR *szProduct, const WCHAR *szUserSid, MSIINSTALLCONTEXT dwContext, DWORD dwOptions, const WCHAR *szProperty, const WCHAR *szValue)
UINT WINAPI MsiSourceListAddMediaDiskW(const WCHAR *szProduct, const WCHAR *szUserSid, MSIINSTALLCONTEXT dwContext, DWORD dwOptions, DWORD dwDiskId, const WCHAR *szVolumeLabel, const WCHAR *szDiskPrompt)
UINT WINAPI MsiSourceListGetInfoW(LPCWSTR szProduct, LPCWSTR szUserSid, MSIINSTALLCONTEXT dwContext, DWORD dwOptions, LPCWSTR szProperty, LPWSTR szValue, LPDWORD pcchValue)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
HRESULT WINAPI DECLSPEC_HOTPATCH CoInitializeEx(LPVOID lpReserved, DWORD dwCoInit)
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
HRESULT WINAPI CLSIDFromString(LPCOLESTR idstr, LPCLSID id)
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
HRESULT WINAPI RegisterTypeLib(ITypeLib *ptlib, const WCHAR *szFullPath, const WCHAR *szHelpDir)
HRESULT WINAPI LoadTypeLibEx(LPCOLESTR szFile, REGKIND regkind, ITypeLib **pptLib)
HRESULT WINAPI UnRegisterTypeLib(REFGUID libid, WORD wVerMajor, WORD wVerMinor, LCID lcid, SYSKIND syskind)
HRESULT WINAPI LoadTypeLib(const OLECHAR *szFile, ITypeLib **pptLib)
struct png_info_def *typedef unsigned char **typedef struct png_info_def *typedef struct png_info_def *typedef struct png_info_def *typedef unsigned char ** row
INT WSAAPI select(IN INT s, IN OUT LPFD_SET readfds, IN OUT LPFD_SET writefds, IN OUT LPFD_SET exceptfds, IN CONST struct timeval *timeout)
#define check(expected, result)
UINT WINAPI GetTempFileNameW(IN LPCWSTR lpPathName, IN LPCWSTR lpPrefixString, IN UINT uUnique, OUT LPWSTR lpTempFileName)
GLuint GLuint GLsizei GLenum type
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLdouble GLdouble GLdouble r
GLdouble GLdouble GLdouble GLdouble q
GLboolean GLboolean GLboolean b
GLenum GLuint GLenum GLsizei const GLchar * buf
GLboolean GLenum GLenum GLvoid * values
GLuint GLint GLboolean GLint GLenum access
GLboolean GLboolean GLboolean GLboolean a
GLuint GLenum GLsizei GLsizei GLint GLint GLboolean packed
GLsizeiptr const GLvoid GLenum usage
GLsizei const GLuint * paths
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
static LPSTR strdupWtoA(LPCWSTR str)
BOOL WINAPI BindImage(PCSTR ImageName, PCSTR DllPath, PCSTR SymbolPath)
_Check_return_ long __cdecl strtol(_In_z_ const char *_Str, _Out_opt_ _Deref_post_z_ char **_EndPtr, _In_ int _Radix)
_CONST_RETURN wchar_t *__cdecl wcsstr(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_SubStr)
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
#define memcpy(s1, s2, n)
#define memmove(s1, s2, n)
#define ERROR_FILE_NOT_FOUND
static const WCHAR desc[]
static const struct access_res create[16]
#define cmp(status, error)
static APTTYPEQUALIFIER * qualifier
static CHAR filenameA[MAX_PATH]
static OLECHAR OLECHAR *static SYSKIND
INTERNETFEATURELIST feature
struct @1664::@1665 driver
UINT ACTION_MsiUnpublishAssemblies(MSIPACKAGE *package)
MSIASSEMBLY * msi_load_assembly(MSIPACKAGE *package, MSICOMPONENT *comp)
UINT ACTION_MsiPublishAssemblies(MSIPACKAGE *package)
UINT ACTION_UnregisterMIMEInfo(MSIPACKAGE *package)
UINT ACTION_UnregisterExtensionInfo(MSIPACKAGE *package)
UINT ACTION_RegisterMIMEInfo(MSIPACKAGE *package)
UINT ACTION_RegisterExtensionInfo(MSIPACKAGE *package)
UINT ACTION_UnregisterClassInfo(MSIPACKAGE *package)
UINT ACTION_RegisterClassInfo(MSIPACKAGE *package)
UINT ACTION_UnregisterProgIdInfo(MSIPACKAGE *package)
UINT ACTION_RegisterProgIdInfo(MSIPACKAGE *package)
static const WCHAR INSTALLPROPERTY_PACKAGENAMEW[]
static const WCHAR INSTALLPROPERTY_MEDIAPACKAGEPATHW[]
static const WCHAR INSTALLPROPERTY_AUTHORIZED_LUA_APPW[]
static const WCHAR INSTALLPROPERTY_PACKAGECODEW[]
struct _MSIFILEHASHINFO MSIFILEHASHINFO
static const WCHAR INSTALLPROPERTY_PRODUCTIDW[]
static const WCHAR INSTALLPROPERTY_VERSIONMAJORW[]
static const WCHAR INSTALLPROPERTY_DISKPROMPTW[]
static const WCHAR INSTALLPROPERTY_LOCALPACKAGEW[]
static const WCHAR INSTALLPROPERTY_PRODUCTNAMEW[]
static const WCHAR INSTALLPROPERTY_LASTUSEDSOURCEW[]
@ INSTALLMESSAGE_ACTIONSTART
@ INSTALLMESSAGE_PROGRESS
@ INSTALLMESSAGE_ACTIONDATA
@ INSTALLMESSAGE_COMMONDATA
@ INSTALLMESSAGE_INSTALLSTART
@ INSTALLMESSAGE_INSTALLEND
static const WCHAR INSTALLPROPERTY_PRODUCTICONW[]
@ INSTALLSTATE_INVALIDARG
@ INSTALLSTATE_ADVERTISED
@ MSIINSTALLCONTEXT_MACHINE
@ MSIINSTALLCONTEXT_USERUNMANAGED
@ MSIINSTALLCONTEXT_USERMANAGED
static const WCHAR INSTALLPROPERTY_INSTALLDATEW[]
static const WCHAR INSTALLPROPERTY_INSTANCETYPEW[]
static const WCHAR INSTALLPROPERTY_VERSIONW[]
static const WCHAR INSTALLPROPERTY_VERSIONMINORW[]
static const WCHAR INSTALLPROPERTY_LANGUAGEW[]
@ msidbComponentAttributes64bit
@ msidbComponentAttributesSharedDllRefCount
@ msidbComponentAttributesOptional
@ msidbComponentAttributesRegistryKeyPath
@ msidbComponentAttributesPermanent
@ msidbComponentAttributesSourceOnly
@ msidbComponentAttributesODBCDataSource
@ msidbUpgradeAttributesMigrateFeatures
@ msidbUpgradeAttributesOnlyDetect
@ msidbFeatureAttributesFavorAdvertise
@ msidbFeatureAttributesFollowParent
@ msidbFeatureAttributesFavorSource
@ msidbFileAttributesCompressed
@ msidbFileAttributesPatchAdded
@ msidbFileAttributesNoncompressed
@ msidbODBCDataSourceRegistrationPerUser
@ msidbODBCDataSourceRegistrationPerMachine
@ msidbIniFileActionRemoveLine
@ msidbIniFileActionAddLine
@ msidbIniFileActionCreateLine
@ msidbSumInfoSourceTypeAdminImage
@ msidbSumInfoSourceTypeCompressed
@ msidbServiceInstallErrorControlVital
@ msidbServiceControlEventStart
@ msidbServiceControlEventUninstallDelete
@ msidbServiceControlEventUninstallStop
@ msidbServiceControlEventDelete
@ msidbServiceControlEventStop
@ msidbServiceControlEventUninstallStart
UINT MSIREG_DeleteUserDataPatchKey(LPCWSTR patch, MSIINSTALLCONTEXT context) DECLSPEC_HIDDEN
void msi_free_action_script(MSIPACKAGE *package, UINT script) DECLSPEC_HIDDEN
UINT msi_apply_transforms(MSIPACKAGE *package) DECLSPEC_HIDDEN
WCHAR * msi_strdupW(const WCHAR *value, int len) DECLSPEC_HIDDEN
#define MSI_INITIAL_MEDIA_TRANSFORM_DISKID
static const BOOL is_64bit
static void * msi_realloc(void *mem, size_t len) __WINE_ALLOC_SIZE(2)
WCHAR * msi_dup_record_field(MSIRECORD *row, INT index) DECLSPEC_HIDDEN
UINT msi_set_property(MSIDATABASE *, const WCHAR *, const WCHAR *, int) DECLSPEC_HIDDEN
MSIRECORD *WINAPIV MSI_QueryGetRecord(MSIDATABASE *db, LPCWSTR query,...) DECLSPEC_HIDDEN
static void * msi_alloc_zero(size_t len) __WINE_ALLOC_SIZE(1)
UINT MSIREG_OpenUninstallKey(const WCHAR *, enum platform, HKEY *, BOOL) DECLSPEC_HIDDEN
DWORD msi_version_str_to_dword(LPCWSTR p) DECLSPEC_HIDDEN
UINT MSIREG_OpenUserUpgradeCodesKey(LPCWSTR szProduct, HKEY *key, BOOL create) DECLSPEC_HIDDEN
#define INSTALLUILEVEL_MASK
UINT MSI_ViewFetch(MSIQUERY *, MSIRECORD **) DECLSPEC_HIDDEN
UINT MSIREG_DeleteUserProductKey(LPCWSTR szProduct) DECLSPEC_HIDDEN
UINT MSI_RecordReadStream(MSIRECORD *, UINT, char *, LPDWORD) DECLSPEC_HIDDEN
UINT MSIREG_DeleteClassesUpgradeCodesKey(LPCWSTR szUpgradeCode) DECLSPEC_HIDDEN
UINT MSI_IterateRecords(MSIQUERY *, LPDWORD, record_func, LPVOID) DECLSPEC_HIDDEN
static void msi_free(void *mem)
UINT MSIREG_DeleteUserDataProductKey(LPCWSTR, MSIINSTALLCONTEXT) DECLSPEC_HIDDEN
UINT MSIREG_OpenUserDataProductPatchesKey(LPCWSTR product, MSIINSTALLCONTEXT context, HKEY *key, BOOL create) DECLSPEC_HIDDEN
UINT MSIREG_OpenUserDataComponentKey(LPCWSTR szComponent, LPCWSTR szUserSid, HKEY *key, BOOL create) DECLSPEC_HIDDEN
UINT MSIREG_OpenUserDataFeaturesKey(LPCWSTR szProduct, LPCWSTR szUserSid, MSIINSTALLCONTEXT context, HKEY *key, BOOL create) DECLSPEC_HIDDEN
UINT MSIREG_DeleteProductKey(LPCWSTR szProduct) DECLSPEC_HIDDEN
UINT MSIREG_DeleteUserFeaturesKey(LPCWSTR szProduct) DECLSPEC_HIDDEN
const WCHAR * msi_record_get_string(const MSIRECORD *, UINT, int *) DECLSPEC_HIDDEN
UINT ACTION_FindRelatedProducts(MSIPACKAGE *package) DECLSPEC_HIDDEN
UINT MSIREG_OpenProductKey(LPCWSTR szProduct, LPCWSTR szUserSid, MSIINSTALLCONTEXT context, HKEY *key, BOOL create) DECLSPEC_HIDDEN
WCHAR * msi_get_package_code(MSIDATABASE *db) DECLSPEC_HIDDEN
UINT msi_get_string_table_codepage(const string_table *st) DECLSPEC_HIDDEN
BOOL squash_guid(LPCWSTR in, LPWSTR out) DECLSPEC_HIDDEN
int MSI_RecordGetInteger(MSIRECORD *, UINT) DECLSPEC_HIDDEN
UINT msi_get_property(MSIDATABASE *, LPCWSTR, LPWSTR, LPDWORD) DECLSPEC_HIDDEN
UINT MSIREG_OpenFeaturesKey(LPCWSTR szProduct, LPCWSTR szUserSid, MSIINSTALLCONTEXT context, HKEY *key, BOOL create) DECLSPEC_HIDDEN
UINT MSIREG_DeleteUninstallKey(const WCHAR *, enum platform) DECLSPEC_HIDDEN
void msi_reset_source_folders(MSIPACKAGE *package) DECLSPEC_HIDDEN
UINT MSIREG_OpenUpgradeCodesKey(LPCWSTR szProduct, HKEY *key, BOOL create) DECLSPEC_HIDDEN
UINT MSIREG_OpenUserComponentsKey(LPCWSTR szComponent, HKEY *key, BOOL create) DECLSPEC_HIDDEN
UINT MSI_RecordSetInteger(MSIRECORD *, UINT, int) DECLSPEC_HIDDEN
LPWSTR msi_reg_get_val_str(HKEY hkey, LPCWSTR name) DECLSPEC_HIDDEN
const WCHAR * MSI_RecordGetString(const MSIRECORD *, UINT) DECLSPEC_HIDDEN
@ FOLDER_STATE_UNINITIALIZED
MSICONDITION MSI_EvaluateConditionW(MSIPACKAGE *, LPCWSTR) DECLSPEC_HIDDEN
UINT MSIREG_DeleteUpgradeCodesKey(const WCHAR *) DECLSPEC_HIDDEN
INT MSI_ProcessMessage(MSIPACKAGE *, INSTALLMESSAGE, MSIRECORD *) DECLSPEC_HIDDEN
static void * msi_alloc(size_t len) __WINE_ALLOC_SIZE(1)
UINT MSIREG_DeleteLocalClassesProductKey(LPCWSTR szProductCode) DECLSPEC_HIDDEN
UINT MSIREG_DeleteLocalClassesFeaturesKey(LPCWSTR szProductCode) DECLSPEC_HIDDEN
void msi_adjust_privilege_properties(MSIPACKAGE *) DECLSPEC_HIDDEN
UINT MSIREG_OpenUserDataProductKey(LPCWSTR szProduct, MSIINSTALLCONTEXT dwContext, LPCWSTR szUserSid, HKEY *key, BOOL create) DECLSPEC_HIDDEN
MSIRECORD * MSI_CreateRecord(UINT) DECLSPEC_HIDDEN
MSIRECORD * MSI_CloneRecord(MSIRECORD *) DECLSPEC_HIDDEN
static void msi_revert_fs_redirection(MSIPACKAGE *package)
UINT MSIREG_DeleteUserUpgradeCodesKey(LPCWSTR szUpgradeCode) DECLSPEC_HIDDEN
UINT msi_set_last_used_source(LPCWSTR product, LPCWSTR usersid, MSIINSTALLCONTEXT context, DWORD options, LPCWSTR value) DECLSPEC_HIDDEN
LONG msi_reg_set_val_multi_str(HKEY hkey, LPCWSTR name, LPCWSTR value) DECLSPEC_HIDDEN
static void msi_disable_fs_redirection(MSIPACKAGE *package)
UINT msi_apply_patches(MSIPACKAGE *package) DECLSPEC_HIDDEN
int msi_get_property_int(MSIDATABASE *package, LPCWSTR prop, int def) DECLSPEC_HIDDEN
UINT msi_set_original_database_property(MSIDATABASE *, const WCHAR *) DECLSPEC_HIDDEN
UINT MSIREG_OpenUserDataPatchKey(LPCWSTR szPatch, MSIINSTALLCONTEXT dwContext, HKEY *key, BOOL create) DECLSPEC_HIDDEN
LPWSTR msi_dup_property(MSIDATABASE *db, LPCWSTR prop) DECLSPEC_HIDDEN
BOOL MSI_RecordIsNull(MSIRECORD *, UINT) DECLSPEC_HIDDEN
UINT MSIREG_DeleteUserDataComponentKey(LPCWSTR szComponent, LPCWSTR szUserSid) DECLSPEC_HIDDEN
LONG msi_reg_set_val_dword(HKEY hkey, LPCWSTR name, DWORD val) DECLSPEC_HIDDEN
INT MSI_ProcessMessageVerbatim(MSIPACKAGE *, INSTALLMESSAGE, MSIRECORD *) DECLSPEC_HIDDEN
LONG msi_reg_set_val_str(HKEY hkey, LPCWSTR name, LPCWSTR value) DECLSPEC_HIDDEN
UINT WINAPIV MSI_OpenQuery(MSIDATABASE *, MSIQUERY **, LPCWSTR,...) DECLSPEC_HIDDEN
#define SQUASHED_GUID_SIZE
UINT MSI_DatabaseOpenViewW(MSIDATABASE *, LPCWSTR, MSIQUERY **) DECLSPEC_HIDDEN
UINT MSIREG_OpenInstallProps(LPCWSTR szProduct, MSIINSTALLCONTEXT dwContext, LPCWSTR szUserSid, HKEY *key, BOOL create) DECLSPEC_HIDDEN
UINT MSI_RecordSetStringW(MSIRECORD *, UINT, LPCWSTR) DECLSPEC_HIDDEN
UINT MSI_ViewExecute(MSIQUERY *, MSIRECORD *) DECLSPEC_HIDDEN
UINT MSIREG_OpenClassesUpgradeCodesKey(LPCWSTR szUpgradeCode, HKEY *key, BOOL create) DECLSPEC_HIDDEN
BOOL encode_base85_guid(GUID *, LPWSTR) DECLSPEC_HIDDEN
WCHAR * msi_get_error_message(MSIDATABASE *, int) DECLSPEC_HIDDEN
#define FILE_ATTRIBUTE_DIRECTORY
IN ULONG IN UCHAR Condition
#define ODBC_INSTALL_COMPLETE
#define ODBC_REMOVE_SYS_DSN
const GUID IID_IPersistFile
#define IsEqualGUID(rguid1, rguid2)
#define delete_tree(r, p, s)
#define open_key(r, p, s, k)
#define delete_value(k, n)
#define delete_key(r, p, s)
static unsigned int file_size
INT replace(TCHAR source[MAX_PATH], TCHAR dest[MAX_PATH], DWORD dwFlags, BOOL *doMore)
BOOL WINAPI DeleteService(SC_HANDLE hService)
SC_HANDLE WINAPI OpenSCManagerW(LPCWSTR lpMachineName, LPCWSTR lpDatabaseName, DWORD dwDesiredAccess)
BOOL WINAPI ControlService(SC_HANDLE hService, DWORD dwControl, LPSERVICE_STATUS lpServiceStatus)
BOOL WINAPI QueryServiceStatusEx(SC_HANDLE hService, SC_STATUS_TYPE InfoLevel, LPBYTE lpBuffer, DWORD cbBufSize, LPDWORD pcbBytesNeeded)
SC_HANDLE WINAPI OpenServiceW(SC_HANDLE hSCManager, LPCWSTR lpServiceName, DWORD dwDesiredAccess)
BOOL WINAPI GetServiceDisplayNameW(SC_HANDLE hSCManager, LPCWSTR lpServiceName, LPWSTR lpDisplayName, LPDWORD lpcchBuffer)
SC_HANDLE WINAPI CreateServiceW(SC_HANDLE hSCManager, LPCWSTR lpServiceName, LPCWSTR lpDisplayName, DWORD dwDesiredAccess, DWORD dwServiceType, DWORD dwStartType, DWORD dwErrorControl, LPCWSTR lpBinaryPathName, LPCWSTR lpLoadOrderGroup, LPDWORD lpdwTagId, LPCWSTR lpDependencies, LPCWSTR lpServiceStartName, LPCWSTR lpPassword)
BOOL WINAPI StartServiceW(SC_HANDLE hService, DWORD dwNumServiceArgs, LPCWSTR *lpServiceArgVectors)
BOOL WINAPI ChangeServiceConfig2W(SC_HANDLE hService, DWORD dwInfoLevel, LPVOID lpInfo)
BOOL WINAPI CloseServiceHandle(SC_HANDLE hSCObject)
BOOL WINAPI EnumDependentServicesW(SC_HANDLE hService, DWORD dwServiceState, LPENUM_SERVICE_STATUSW lpServices, DWORD cbBufSize, LPDWORD pcbBytesNeeded, LPDWORD lpServicesReturned)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
_Check_return_ _CRTIMP int __cdecl wcsncmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
_CRTIMP wchar_t *__cdecl wcsupr(_Inout_z_ wchar_t *_Str)
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
unsigned int hasLocalFeature
unsigned int hasAdvertisedFeature
unsigned int hasSourceFeature
INSTALLSTATE ActionRequest
UINT action_progress_increment
struct list sourcelist_media
LPWSTR * script_actions[SCRIPT_MAX]
unsigned char need_reboot_at_end
unsigned char need_rollback
int script_actions_count[SCRIPT_MAX]
struct list sourcelist_info
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
VOID WINAPI DECLSPEC_HOTPATCH Sleep(IN DWORD dwMilliseconds)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventA(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCSTR lpName OPTIONAL)
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
#define INVALID_FILE_ATTRIBUTES
static const WCHAR props[]
BOOL WINAPI SQLConfigDataSourceW(HWND hwndParent, WORD fRequest, LPCWSTR lpszDriver, LPCWSTR lpszAttributes)
BOOL WINAPI SQLInstallDriverExW(LPCWSTR lpszDriver, LPCWSTR lpszPathIn, LPWSTR lpszPathOut, WORD cbPathOutMax, WORD *pcbPathOut, WORD fRequest, LPDWORD lpdwUsageCount)
BOOL WINAPI SQLRemoveDriverW(LPCWSTR drivername, BOOL remove_dsn, LPDWORD usage_count)
BOOL WINAPI SQLRemoveTranslatorW(const WCHAR *translator, DWORD *usage_count)
BOOL WINAPI SQLInstallTranslatorExW(LPCWSTR lpszTranslator, LPCWSTR lpszPathIn, LPWSTR lpszPathOut, WORD cbPathOutMax, WORD *pcbPathOut, WORD fRequest, LPDWORD lpdwUsageCount)
DWORD WINAPI GetLastError(void)
#define LOAD_LIBRARY_AS_DATAFILE
#define ERROR_INVALID_COMMAND_LINE
#define ERROR_INSTALL_FAILURE
#define ERROR_INSTALL_USEREXIT
#define ERROR_SERVICE_ALREADY_RUNNING
#define ERROR_INVALID_HANDLE_STATE
#define ERROR_INSTALL_PACKAGE_REJECTED
#define ERROR_SUCCESS_REBOOT_REQUIRED
#define ERROR_INSTALL_ALREADY_RUNNING
#define ERROR_SERVICE_EXISTS
#define ERROR_FUNCTION_FAILED
#define ERROR_INSTALL_SUSPEND
#define ERROR_FUNCTION_NOT_CALLED
#define ERROR_INVALID_DATA
static const char appdata[]
#define HKEY_LOCAL_MACHINE
#define HKEY_CURRENT_USER
#define HKEY_CLASSES_ROOT
#define SERVICE_QUERY_STATUS
#define SERVICE_CONFIG_DESCRIPTION
#define SC_MANAGER_CONNECT
#define SERVICE_START_PENDING
#define SERVICE_CONTROL_STOP
#define SERVICE_ENUMERATE_DEPENDENTS
#define SERVICES_ACTIVE_DATABASEW
#define SC_MANAGER_ALL_ACCESS
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
#define IS_INTRESOURCE(i)
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
LPWSTR WINAPI CharUpperW(_Inout_ LPWSTR)
#define SERVICE_BOOT_START
#define SERVICE_SYSTEM_START