44#define REG_PROGRESS_VALUE 13200
45#define COMPONENT_PROGRESS_VALUE 24000
124 if (in_quotes &&
p[1] !=
'\"')
count--;
140 if (in_quotes)
count--;
145 if (!
count)
goto done;
160 if (in_quotes &&
p[1] !=
'\"')
count--;
190 if(quotes) *quotes =
count;
221 while (*
ptr ==
' ')
ptr++;
235 if (!preserve_case)
wcsupr( prop );
238 while (*ptr2 ==
' ') ptr2++;
245 WARN(
"unbalanced quotes\n");
277 while (*
cmd ==
' ')
cmd++;
286 while (*
cmd ==
' ')
cmd++;
290 if (found)
return cmd;
413 ERR(
"Error is retrieving action name\n");
437 if (package->need_reboot_now)
439 TRACE(
"action %s asked for immediate reboot, suspending installation\n",
470 TRACE(
"Execute Sequence already Run\n");
656 ERR(
"Unable to get folder id\n");
737 ERR(
"Unable to get folder id\n");
827 cl =
malloc(
sizeof(*cl) );
916 rc =
MSI_OpenQuery( package->db, &
view,
L"SELECT `Component_` FROM `FeatureComponents` WHERE `Feature_` = '%s'",
938 if (!
child->Feature_Parent)
1021 WARN(
"query failed\n");
1047 if (!
file->Component)
1145 WARN(
"query failed\n");
1158 const WCHAR *file_key;
1168 ERR(
"Failed to find target for patch in File table\n");
1184 TRACE(
"Patch loaded (file %s sequence %u)\n",
debugstr_w(patch->File->File), patch->Sequence);
1228 static const WCHAR select[] =
L"SELECT `Row`, `Column` FROM `_TransformView` WHERE `Table`='Component'";
1256 if (!
MSI_OpenQuery( package->
db, &
view,
L"SELECT * FROM `CreateFolder` WHERE `Directory_` = '%s'",
1278 LPWSTR p, tgt_short, tgt_long, src_short, src_long;
1298 if (tgt_short && !
wcscmp(
L".", tgt_short ))
1300 if (src_short && !
wcscmp(
L".", src_short ))
1304 tgt_long = tgt_short;
1307 src_short = tgt_short;
1308 src_long = tgt_long;
1312 src_long = src_short;
1410 ERR(
"Execution of script %i halted; action %s returned %u\n",
1423 ERR(
"Execution of script %i halted; action %s returned %u\n",
1607 TRACE(
"child %s (level %d request %d) follows disabled parent %s (level %d request %d)\n",
1608 debugstr_w(
fl->feature->Feature),
fl->feature->Level,
fl->feature->ActionRequest,
1627 TRACE(
"child %s (level %d request %d) follows parent %s (level %d request %d)\n",
1628 debugstr_w(
fl->feature->Feature),
fl->feature->Level,
fl->feature->ActionRequest,
1632 fl->feature->ActionRequest =
feature->ActionRequest;
1644 TRACE(
"Checking Install Level\n");
1718 cur->Action =
cur->Installed;
1719 cur->ActionRequest =
cur->Installed;
1741 if (!
cur->Feature_Parent)
1752 if (
feature->Feature_Parent)
continue;
1762 TRACE(
"examining feature %s (level %d installed %d request %d action %d)\n",
1782 switch (
feature->ActionRequest)
1895 TRACE(
"component %s (installed %d request %d action %d)\n",
1948 if (ms1 > ms2)
return 1;
1949 else if (ms1 < ms2)
return -1;
2062 WCHAR *font_version;
2072 if (
file->IsCompressed)
2093 free( file_version );
2102 free( font_version );
2127 while (*
p !=
' ' && (*
q = *
p))
2131 if (*
p !=
'\\' || *
q !=
'\\')
2145 if (
len == 0 ||
p[-1] ==
'\\' ||
p[
n] ==
'\\' )
2148 while (
n && (*
q++ = *
p++))
n--;
2150 while (
q -
ret > 0 &&
q[-1] ==
' ')
q--;
2151 if (
q -
ret > 0 &&
q[-1] !=
'\\')
2218 folder->ResolvedTarget = normalized_path;
2247 TRACE(
"Building directory properties\n");
2250 TRACE(
"Evaluating component conditions\n");
2269 TRACE(
"Evaluating feature conditions\n");
2281 TRACE(
"Calculating file cost\n");
2296 if (((primary_folder[0] >=
'A' && primary_folder[0] <=
'Z') ||
2297 (primary_folder[0] >=
'a' && primary_folder[0] <=
'z')) && primary_folder[1] ==
':')
2303 primary_folder[2] = 0;
2329 free( primary_folder );
2331 free( primary_key );
2385 TRACE(
"Uneven byte count\n");
2415 if ( (*
p <
'0') || (*
p >
'9') )
2421 if (deformated[0] ==
'-')
2434 if (
value[0] ==
'#')
2437 if (
value[1] ==
'%')
2460 ret =
L"HKEY_LOCAL_MACHINE\\";
2465 ret =
L"HKEY_CURRENT_USER\\";
2470 ret =
L"HKEY_CLASSES_ROOT\\";
2474 ret =
L"HKEY_CURRENT_USER\\";
2478 ret =
L"HKEY_LOCAL_MACHINE\\";
2482 ret =
L"HKEY_USERS\\";
2485 ERR(
"Unknown root %i\n",
root);
2577 for (
i = 0;
i < left_count;
i++)
2582 for (
i = 0;
i < right_count;
i++)
2595 unsigned int i,
j,
k;
2597 for (
i = 0;
i < new_count;
i++)
2599 for (
j = 0;
j < old_count;
j++)
2601 if (old[
j] && !
wcscmp(
new[
i], old[
j] ))
2604 for (
k =
j;
k < old_count - 1;
k++) { old[
k] = old[
k + 1]; }
2637 ERR(
"unhandled join op %u\n",
op);
2645 DWORD i, old_len = 0, new_len = 0, old_count = 0, new_count = 0;
2653 new_ptr = (
const WCHAR *)new_value;
2656 if (!new_ptr[0] && new_ptr[new_len - 1])
2662 else if (new_ptr[0] && !new_ptr[new_len - 1])
2667 else if (new_len > 2 && !new_ptr[0] && !new_ptr[new_len - 1])
2682 for (
i = 0;
i < old_count;
i++)
free( old[
i] );
2683 for (
i = 0;
i < new_count;
i++)
free(
new[
i] );
2702 HKEY root_key, hkey;
2704 LPWSTR deformated, uikey;
2838 res =
RegQueryInfoKeyW(
key, 0, 0, 0, &subkeys, 0, 0, &
values, 0, 0, 0, 0);
2857 if (!
p[1])
continue;
2914 LPWSTR deformated_key, deformated_name, ui_key_str;
2958 lstrcpyW( ui_key_str, root_key_str );
2959 lstrcatW( ui_key_str, deformated_key );
2964 else delete_value( comp, hkey_root, deformated_key, deformated_name );
2965 free( deformated_key );
2974 free( deformated_name );
2982 LPWSTR deformated_key, deformated_name, ui_key_str;
3021 lstrcpyW( ui_key_str, root_key_str );
3022 lstrcatW( ui_key_str, deformated_key );
3027 else delete_value( comp, hkey_root, deformated_key, deformated_name );
3028 free( deformated_key );
3037 free( deformated_name );
3083 TRACE(
"InstallValidate\n");
3104 TRACE(
"Feature: %s Installed %d Request %d Action %d\n",
3141 TRACE(
"Checking launch conditions\n");
3176 if (deformated_name)
3181 if (deformated_name)
3187 free(deformated_name);
3194 FIXME(
"UNIMPLEMENTED keypath as ODBC Source\n");
3287 if (
file->Component == comp)
3353 TRACE(
"Component %s (%s) Keypath=%s RefCount=%u Clients=%u Action=%u\n",
3386 "ORDER BY `DiskId`",
file->Sequence)))
3428 WARN(
"failed to open component key %u\n", rc );
3433 if (
res)
WARN(
"failed to delete component value %ld\n",
res );
3494 ITypeLib_GetLibAttr(tl_struct->
ptLib, &
attr);
3497 ITypeLib_ReleaseTLibAttr(tl_struct->
ptLib,
attr);
3504 ITypeLib_ReleaseTLibAttr(tl_struct->
ptLib,
attr);
3505 ITypeLib_Release(tl_struct->
ptLib);
3553 TRACE(
"component has no key path\n");
3581 ERR(
"Failed to register type library %s\n",
debugstr_w(tl_struct.path));
3585 ITypeLib_Release(tl_struct.ptLib);
3586 free(tl_struct.path);
3588 else ERR(
"Failed to load type library %s\n",
debugstr_w(tl_struct.source));
3591 free(tl_struct.source);
3598 ERR(
"failed to load type library: %#lx\n",
hr );
3602 ITypeLib_Release(tlib);
3663 WARN(
"failed to unregister typelib: %#lx\n",
hr );
3706 if (!extension ||
wcsicmp( extension,
L".lnk" ))
3710 if (!new_filename)
goto done;
3765 &IID_IShellLinkW, (
LPVOID *) &sl );
3769 ERR(
"CLSID_ShellLink not available\n");
3776 ERR(
"QueryInterface(IID_IPersistFile) failed\n");
3785 IShellLinkW_SetPath( sl,
path );
3790 FIXME(
"poorly handled shortcut format, advertised shortcut\n");
3792 IShellLinkW_SetPath( sl,
path );
3800 IShellLinkW_SetArguments(sl,deformated);
3825 IShellLinkW_SetIconLocation(sl,
path,
index);
3836 if (full_path) IShellLinkW_SetWorkingDirectory( sl, full_path );
3843 IPersistFile_Save(pf, link_file,
FALSE);
3850 IPersistFile_Release( pf );
3852 IShellLinkW_Release( sl );
3937 ERR(
"Unable to get filename\n");
3960 ERR(
"Failed to get stream\n");
3965 }
while (sz == 1024);
4106 WARN(
"failed to open upgrade code key\n");
4148 HKEY patches_key =
NULL, product_patches_key =
NULL, product_key;
4206 ERR(
"unable to copy patch package %lu\n",
res );
4214 sizeof(patch->
state) );
4228 all_patches[
len] = 0;
4230 (
const BYTE *)all_patches, (
len + 1) *
sizeof(
WCHAR) );
4235 (
const BYTE *)all_patches, (
len + 1) *
sizeof(
WCHAR) );
4243 free( all_patches );
4268 WCHAR *package_code;
4284 TRACE(
"re-publishing product - new package\n");
4341 const WCHAR *dirprop;
4376 LPWSTR deformated_section, deformated_key, deformated_value,
fullname;
4407 TRACE(
"Adding value %s to section %s in %s\n",
4418 if (returned[0] == 0)
4420 TRACE(
"Adding value %s to section %s in %s\n",
4429 FIXME(
"Append to existing section not yet implemented\n");
4440 free(deformated_key);
4441 free(deformated_value);
4442 free(deformated_section);
4467 LPWSTR deformated_section, deformated_key, deformated_value,
filename;
4498 TRACE(
"Removing key %s from section %s in %s\n",
4519 free( deformated_key );
4520 free( deformated_value );
4521 free( deformated_section );
4529 LPWSTR deformated_section, deformated_key, deformated_value,
filename;
4560 TRACE(
"Removing key %s from section %s in %s\n",
4580 free( deformated_key );
4581 free( deformated_value );
4582 free( deformated_section );
4615 static const WCHAR regW[] =
L"regsvr32.exe /s \"%s\"";
4616 static const WCHAR unregW[] =
L"regsvr32.exe /s /u \"%s\"";
4653 TRACE(
"component not scheduled for installation %s\n",
debugstr_w(
file->Component->Component));
4703 TRACE(
"component not scheduled for removal %s\n",
debugstr_w(
file->Component->Component));
4768 if (
feature->Level <= 0)
continue;
4900 static const WCHAR *propval[] =
4902 L"ARPAUTHORIZEDCDFPREFIX",
L"AuthorizedCDFPrefix",
4903 L"ARPCONTACT",
L"Contact",
4904 L"ARPCOMMENTS",
L"Comments",
4905 L"ProductName",
L"DisplayName",
4906 L"ARPHELPLINK",
L"HelpLink",
4907 L"ARPHELPTELEPHONE",
L"HelpTelephone",
4908 L"ARPINSTALLLOCATION",
L"InstallLocation",
4909 L"SourceDir",
L"InstallSource",
4910 L"Manufacturer",
L"Publisher",
4911 L"ARPREADME",
L"ReadMe",
4912 L"ARPSIZE",
L"Size",
4913 L"ARPURLINFOABOUT",
L"URLInfoAbout",
4914 L"ARPURLUPDATEINFO",
L"URLUpdateInfo",
4917 const WCHAR **
p = propval;
4942 static const WCHAR fmt_install[] =
L"MsiExec.exe /I[ProductCode]";
4943 static const WCHAR fmt_uninstall[] =
L"MsiExec.exe /X[ProductCode]";
4952 fmt = fmt_uninstall;
5026 free( upgrade_code );
5057 if ((
p =
wcsrchr( icon_path,
'\\' )))
5093 WARN(
"upgrade code not found\n" );
5099 res =
RegQueryInfoKeyW( hkey,
NULL,
NULL,
NULL,
NULL,
NULL, &
count,
NULL,
NULL,
NULL,
NULL,
NULL );
5106 res =
RegQueryInfoKeyW( hkey,
NULL,
NULL,
NULL,
NULL,
NULL, &
count,
NULL,
NULL,
NULL,
NULL,
NULL );
5113 res =
RegQueryInfoKeyW( hkey,
NULL,
NULL,
NULL,
NULL,
NULL, &
count,
NULL,
NULL,
NULL,
NULL,
NULL );
5189 ERR(
"Failed to install assembly\n");
5211 ERR(
"Failed to install patched assembly\n");
5314 static const WCHAR szPropKeys[][80] =
5321 static const WCHAR szRegKeys[][80] =
5351 for(
i = 0; szPropKeys[
i][0];
i++ )
5385 const WCHAR *ui_sequence, *exec_sequence;
5394 ui_sequence =
L"AdminUISequence";
5395 exec_sequence =
L"AdminExecuteSequence";
5399 ui_sequence =
L"InstallUISequence";
5400 exec_sequence =
L"InstallExecuteSequence";
5430 free(info_template);
5540 WCHAR productid_85[21], component_85[21], *
ret;
5546 productid_85[0] = 0;
5547 component_85[0] = 0;
5620 for (
p = existing; *
p;
p +=
len)
5626 if (!(output =
malloc( (sz + 1) *
sizeof(
WCHAR) )))
5634 for (
p = existing; *
p;
p +=
len)
5718 lstrcpyW( keypath,
L"Software\\Microsoft\\Installer\\Components\\" );
5724 WARN(
"unable to delete component key %ld\n",
res );
5759 SC_HANDLE hscm =
NULL, service =
NULL;
5763 DWORD serv_type, start_type, err_control;
5772 WARN(
"service component not found\n");
5778 TRACE(
"component not scheduled for installation %s\n",
debugstr_w(comp));
5784 ERR(
"Failed to open the SC Manager!\n");
5808 err_control &= ~msidbServiceInstallErrorControlVital;
5814 ERR(
"Query failed\n");
5826 ERR(
"Failed to load the service file\n");
5845 start_type, err_control, image_path, load_order,
5858 else if (
sd.lpDescription)
5864 if (image_path !=
file->TargetPath)
free(image_path);
5944 SC_HANDLE scm =
NULL, service =
NULL;
5975 ERR(
"Failed to open the service control manager\n");
6027 WARN(
"service failed to start %lu\n",
status.dwCurrentState );
6075 0, &needed, &
count))
6081 dependencies =
malloc(needed);
6086 needed, &needed, &
count))
6111 SC_HANDLE scm =
NULL, service =
NULL;
6181 ERR(
"Failed to open the service control manager\n");
6204 free( display_name );
6232 SC_HANDLE scm =
NULL, service =
NULL;
6286 free( display_name );
6341 ERR(
"ODBC Driver entry not found!\n");
6383 ERR(
"Failed to install SQL driver!\n");
6403 LPWSTR translator, translator_path,
ptr;
6431 if (!translator_file)
6433 ERR(
"ODBC Translator entry not found!\n");
6466 ERR(
"Failed to install SQL translator!\n");
6478 free(translator_path);
6523 WARN(
"Failed to install SQL data source!\n");
6595 WARN(
"Failed to remove ODBC driver\n");
6599 FIXME(
"Usage count reached 0\n");
6634 WARN(
"Failed to remove ODBC translator\n");
6638 FIXME(
"Usage count reached 0\n");
6685 FIXME(
"Use ODBCSourceAttribute table\n");
6692 WARN(
"Failed to remove ODBC data source\n");
6741#define ENV_ACT_SETALWAYS 0x1
6742#define ENV_ACT_SETABSENT 0x2
6743#define ENV_ACT_REMOVE 0x4
6744#define ENV_ACT_REMOVEMATCH 0x8
6746#define ENV_MOD_MACHINE 0x20000000
6747#define ENV_MOD_APPEND 0x40000000
6748#define ENV_MOD_PREFIX 0x80000000
6749#define ENV_MOD_MASK 0xC0000000
6751#define check_flag_combo(x, y) ((x) & ~(y)) == (y)
6762 else if (*cptr ==
'+')
6764 else if (*cptr ==
'-')
6766 else if (*cptr ==
'!')
6768 else if (*cptr ==
'*')
6779 ERR(
"Missing environment variable\n");
6821 ERR(
"invalid flags: %#lx\n", *
flags );
6839 env =
L"System\\CurrentControlSet\\Control\\Session Manager\\Environment";
6844 env =
L"Environment";
6868 int action = 0, found = 0;
6901 value = deformatted;
6985 while (*
q && *
q !=
';')
q++;
6999 TRACE(
"string already set\n");
7013 newval[len_value] =
';';
7014 p = newval + len_value + 1;
7117 value = deformatted;
7152 if (!(new_value =
malloc(
size )))
goto done;
7158 len_new_value =
size /
sizeof(
WCHAR) - 1;
7162 while (*
q && *
q !=
';')
q++;
7167 memmove(
p,
q, (len_new_value - (
q - new_value) + 1) *
sizeof(
WCHAR) );
7174 if (!new_value[0] || !
value)
7199 free( deformatted );
7234 if (
key &&
template)
7238 WARN(
"Product key validation HACK, see CORE-14710\n");
7277 TRACE(
"%p\n", package);
7292 hr = IStorage_EnumElements( package->
db->
storage, 0,
NULL, 0, &iter );
7301 if (
stat.type != STGTY_STREAM || *
stat.pwcsName != 0x4176)
7315 IEnumSTATSTG_Release( iter );
7328 flags &= ~msidbSumInfoSourceTypeCompressed;
7347 if (*
p !=
'\\')
continue;
7432 TRACE(
"%p\n", package);
7476 if (
count)
FIXME(
"ignored %lu rows in ODBCTranslator table\n",
count );
7509 swprintf(
cmd,
len,
L"msiexec /qn /i %s REMOVE=%s", product, features ? features :
L"ALL" );
7568 FIXME(
"migrate feature states from %s version min %s version max %s language %s\n",
7582 TRACE(
"product is installed, skipping action\n");
7587 TRACE(
"Preselected property is set, not migrating feature states\n");
7629 for (
i = 0; path_list[
i] && path_list[
i][0];
i++)
7820 TRACE(
"scheduling rollback action\n");
7865 if (needs_ui)
table =
L"InstallUISequence";
7866 else table =
L"InstallExecuteSequence";
7870 if (needs_ui)
table =
L"AdminUISequence";
7871 else table =
L"AdminExecuteSequence";
7900 ERR(
"failed to fetch action\n");
7942 file = szPackagePath;
7984 else free( productcode );
7988 TRACE(
"disabling rollback\n");
8015 WARN(
"installation failed, running rollback script\n");
static char * strdupWtoA(const WCHAR *str)
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 BOOL load_typelib(void)
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)
INT copy(TCHAR source[MAX_PATH], TCHAR dest[MAX_PATH], INT append, DWORD lpdwFlags, BOOL bTouch)
#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
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)
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
HRESULT WINAPI CLSIDFromString(LPCOLESTR str, LPCLSID clsid)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
void WINAPI CoTaskMemFree(void *ptr)
#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)
static const WCHAR szEmpty[]
BOOL WINAPI CopyFileW(IN LPCWSTR lpExistingFileName, IN LPCWSTR lpNewFileName, IN BOOL bFailIfExists)
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
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_reads_bytes_opt_(nNumberOfBytesToWrite) LPCVOID lpBuffer, _In_ DWORD nNumberOfBytesToWrite, _Out_opt_ LPDWORD lpNumberOfBytesWritten, _Inout_opt_ LPOVERLAPPED lpOverlapped)
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)
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)
#define IS_INTRESOURCE(x)
static HMODULE load_library(const UNICODE_STRING *libname, DWORD flags)
const struct sortguid * guids
LPWSTR WINAPI CharUpperW(WCHAR *str)
ULONGLONG WINAPI DECLSPEC_HOTPATCH GetTickCount64(void)
static UINT load_file_disk_id(MSIPACKAGE *package, MSIFILE *file)
static UINT admin_remove_cabinet_streams(MSIPACKAGE *package)
static UINT iterate_patched_component(MSIRECORD *row, LPVOID param)
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 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 unpublish_icons(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 const WCHAR ** service_args_to_vector(WCHAR *args, DWORD *numargs)
static UINT publish_product_properties(MSIPACKAGE *package, HKEY hkey)
static UINT publish_icons(MSIPACKAGE *package)
static UINT ITERATE_UnpublishComponent(MSIRECORD *rec, LPVOID param)
static UINT ACTION_InstallAdminPackage(MSIPACKAGE *package)
static UINT ACTION_UnregisterTypeLibraries(MSIPACKAGE *package)
static UINT ACTION_RegisterProduct(MSIPACKAGE *package)
static int parse_prop(const WCHAR *str, WCHAR *value, int *quotes)
static void ui_actioninfo(MSIPACKAGE *package, const WCHAR *action, BOOL start, INT rc)
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 HMODULE load_library(MSIPACKAGE *package, const WCHAR *filename, DWORD flags)
static BYTE * reg_get_value(HKEY hkey, const WCHAR *name, DWORD *type, DWORD *size)
WCHAR ** msi_split_string(const WCHAR *str, WCHAR sep)
static void mark_patched_components(MSIPACKAGE *package)
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_ADMIN(MSIPACKAGE *package)
static UINT ACTION_RemoveFolders(MSIPACKAGE *package)
static UINT ITERATE_RemoveODBCDataSource(MSIRECORD *rec, LPVOID param)
static const struct @613 StandardActions[]
static UINT ITERATE_InstallService(MSIRECORD *rec, LPVOID param)
static UINT admin_update_package_info(MSIPACKAGE *package)
UINT msi_load_all_components(MSIPACKAGE *package)
static UINT ACTION_PerformEndAction(MSIPACKAGE *package, const WCHAR *action, UINT sequence)
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)
static UINT admin_copy_package(MSIPACKAGE *package, const WCHAR *filename)
BOOL msi_is_global_assembly(MSICOMPONENT *comp)
static UINT ITERATE_RemoveODBCDriver(MSIRECORD *rec, LPVOID param)
static UINT load_folder(MSIRECORD *row, LPVOID param)
static UINT load_media(MSIRECORD *row, LPVOID param)
static BOOL needs_ui_sequence(MSIPACKAGE *package)
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)
#define ENV_ACT_REMOVEMATCH
static UINT unimplemented_action_stub(MSIPACKAGE *package, LPCSTR action, LPCWSTR table)
#define ENV_ACT_SETALWAYS
static UINT ACTION_ProcessExecSequence(MSIPACKAGE *package, const WCHAR *exec_table)
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 check_publish(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 publish_patches(MSIPACKAGE *package)
static UINT load_component(MSIRECORD *row, LPVOID param)
static BOOL check_unpublish(MSIPACKAGE *package)
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 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 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)
static UINT admin_create_dest_file(MSIPACKAGE *package, WCHAR **ret_filename)
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 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 BOOL is_admin_install(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 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 publish_upgrade_code(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 publish_sourcelist(MSIPACKAGE *package, HKEY hkey)
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)
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 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 BOOL remove_path(MSIPACKAGE *package, const WCHAR *path)
static void get_client_counts(MSIPACKAGE *package)
static UINT unpublish_feature(MSIPACKAGE *package, MSIFEATURE *feature)
static UINT ACTION_ProcessUISequence(MSIPACKAGE *package, const WCHAR *ui_table)
static WCHAR * build_full_keypath(MSIPACKAGE *package, MSICOMPONENT *comp)
static UINT ACTION_RemoveRegistryValues(MSIPACKAGE *package)
static UINT ITERATE_StartService(MSIRECORD *rec, LPVOID param)
static UINT ITERATE_DeleteService(MSIRECORD *rec, LPVOID param)
static WCHAR * get_install_location(MSIPACKAGE *package)
INSTALLSTATE msi_get_feature_action(MSIPACKAGE *package, MSIFEATURE *feature)
MSIFILE * msi_get_loaded_file(MSIPACKAGE *package, const WCHAR *key)
static UINT publish_install_properties(MSIPACKAGE *package, HKEY hkey)
static BOOL ui_sequence_exists(MSIPACKAGE *package, const WCHAR *ui_table)
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_copy_file(MSIPACKAGE *package, const WCHAR *src, const WCHAR *dst, BOOL fail_if_exists)
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)
UINT msi_patch_assembly(MSIPACKAGE *package, MSIASSEMBLY *assembly, MSIFILEPATCH *patch)
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)
BOOL msi_get_temp_file_name(MSIPACKAGE *package, const WCHAR *tmp_path, const WCHAR *prefix, WCHAR *tmp_filename)
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)
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
_ACRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
_ACRTIMP wchar_t *__cdecl wcsstr(const wchar_t *, const wchar_t *)
_ACRTIMP int __cdecl wcsncmp(const wchar_t *, const wchar_t *, size_t)
_ACRTIMP __msvcrt_long __cdecl strtol(const char *, char **, int)
static wchar_t * wcsupr(wchar_t *str)
static wchar_t * wcsdup(const wchar_t *str)
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
HRESULT WINAPI StgCreateDocfile(LPCOLESTR pwcsName, DWORD grfMode, DWORD reserved, IStorage **ppstgOpen)
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 count
GLuint GLuint GLsizei GLenum type
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
BOOL WINAPI BindImage(PCSTR ImageName, PCSTR DllPath, PCSTR SymbolPath)
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
#define memcpy(s1, s2, n)
#define memmove(s1, s2, n)
#define ERROR_FILE_NOT_FOUND
D3D11_SHADER_VARIABLE_DESC desc
static PROCESS_INFORMATION pi
static const WCHAR pathW[]
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
UINT ACTION_MsiUnpublishAssemblies(MSIPACKAGE *package)
MSIASSEMBLY * msi_load_assembly(MSIPACKAGE *package, MSICOMPONENT *comp)
UINT ACTION_MsiPublishAssemblies(MSIPACKAGE *package)
UINT msi_install_assembly(MSIPACKAGE *package, MSICOMPONENT *comp)
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
@ msidbPatchAttributesNonVital
@ msidbUpgradeAttributesMigrateFeatures
@ msidbUpgradeAttributesOnlyDetect
@ msidbFeatureAttributesFavorAdvertise
@ msidbFeatureAttributesFollowParent
@ msidbFeatureAttributesFavorSource
@ msidbFileAttributesCompressed
@ msidbFileAttributesPatchAdded
@ msidbFileAttributesNoncompressed
@ msidbODBCDataSourceRegistrationPerUser
@ msidbODBCDataSourceRegistrationPerMachine
@ msidbIniFileActionRemoveLine
@ msidbIniFileActionAddLine
@ msidbIniFileActionCreateLine
@ msidbSumInfoSourceTypeAdminImage
@ msidbSumInfoSourceTypeCompressed
@ msidbServiceInstallErrorControlVital
@ msidbServiceControlEventStart
@ msidbServiceControlEventUninstallDelete
@ msidbServiceControlEventUninstallStop
@ msidbServiceControlEventDelete
@ msidbServiceControlEventStop
@ msidbServiceControlEventUninstallStart
int MSI_RecordGetInteger(MSIRECORD *, UINT)
UINT MSIREG_DeleteUserUpgradeCodesKey(LPCWSTR szUpgradeCode)
UINT MSIREG_DeleteUpgradeCodesKey(const WCHAR *)
UINT MSI_ViewExecute(MSIQUERY *, MSIRECORD *)
UINT MSIREG_OpenProductKey(LPCWSTR szProduct, LPCWSTR szUserSid, MSIINSTALLCONTEXT context, HKEY *key, BOOL create)
#define MSI_INITIAL_MEDIA_TRANSFORM_DISKID
static const BOOL is_64bit
LONG msi_reg_set_val_dword(HKEY hkey, LPCWSTR name, DWORD val)
UINT msi_suminfo_persist(MSISUMMARYINFO *)
WCHAR * msi_strdupW(const WCHAR *value, int len) __WINE_DEALLOC(free) __WINE_MALLOC
static int cost_from_size(int size)
BOOL squash_guid(LPCWSTR in, LPWSTR out)
UINT MSIREG_DeleteLocalClassesFeaturesKey(LPCWSTR szProductCode)
UINT msi_set_last_used_source(LPCWSTR product, LPCWSTR usersid, MSIINSTALLCONTEXT context, DWORD options, LPCWSTR value)
#define INSTALLUILEVEL_MASK
UINT msi_get_string_table_codepage(const string_table *st)
UINT ACTION_FindRelatedProducts(MSIPACKAGE *package)
UINT MSIREG_OpenUserDataComponentKey(LPCWSTR szComponent, LPCWSTR szUserSid, HKEY *key, BOOL create)
UINT MSIREG_DeleteUninstallKey(const WCHAR *, enum platform)
void msi_reset_source_folders(MSIPACKAGE *package)
const WCHAR * msi_record_get_string(const MSIRECORD *, UINT, int *)
WCHAR * msi_dup_record_field(MSIRECORD *row, INT index) __WINE_DEALLOC(free) __WINE_MALLOC
BOOL encode_base85_guid(GUID *, LPWSTR)
UINT MSIREG_OpenUserDataProductPatchesKey(LPCWSTR product, MSIINSTALLCONTEXT context, HKEY *key, BOOL create)
UINT MSI_RecordSetInteger(MSIRECORD *, UINT, int)
UINT MSIREG_OpenClassesUpgradeCodesKey(LPCWSTR szUpgradeCode, HKEY *key, BOOL create)
LONG msi_reg_set_val_multi_str(HKEY hkey, LPCWSTR name, LPCWSTR value)
WCHAR * msi_get_error_message(MSIDATABASE *, int) __WINE_DEALLOC(free) __WINE_MALLOC
UINT msi_apply_patches(MSIPACKAGE *package)
UINT MSIREG_OpenInstallProps(LPCWSTR szProduct, MSIINSTALLCONTEXT dwContext, LPCWSTR szUserSid, HKEY *key, BOOL create)
UINT MSIREG_DeleteUserDataComponentKey(LPCWSTR szComponent, LPCWSTR szUserSid)
UINT MSIREG_DeleteClassesUpgradeCodesKey(LPCWSTR szUpgradeCode)
int msi_get_property_int(MSIDATABASE *package, LPCWSTR prop, int def)
UINT msi_suminfo_set_prop(MSISUMMARYINFO *, UINT, UINT, INT, FILETIME *, awcstring *)
UINT MSI_DatabaseOpenViewW(MSIDATABASE *, LPCWSTR, MSIQUERY **)
INT MSI_ProcessMessageVerbatim(MSIPACKAGE *, INSTALLMESSAGE, MSIRECORD *)
UINT MSI_RecordReadStream(MSIRECORD *, UINT, char *, LPDWORD)
UINT MSIREG_OpenUserComponentsKey(LPCWSTR szComponent, HKEY *key, BOOL create)
#define MAX_STREAM_NAME_LEN
WCHAR * msi_get_package_code(MSIDATABASE *db) __WINE_DEALLOC(free) __WINE_MALLOC
UINT MSIREG_OpenUninstallKey(const WCHAR *, enum platform, HKEY *, BOOL)
UINT MSIREG_DeleteUserProductKey(LPCWSTR szProduct)
MSICONDITION MSI_EvaluateConditionW(MSIPACKAGE *, LPCWSTR)
UINT msi_set_original_database_property(MSIDATABASE *, const WCHAR *)
const WCHAR * MSI_RecordGetString(const MSIRECORD *, UINT)
LONG msi_reg_set_val_str(HKEY hkey, LPCWSTR name, LPCWSTR value)
BOOL decode_streamname(LPCWSTR in, LPWSTR out)
UINT WINAPIV MSI_OpenQuery(MSIDATABASE *, MSIQUERY **, LPCWSTR,...)
@ FOLDER_STATE_UNINITIALIZED
UINT MSIREG_DeleteUserDataProductKey(LPCWSTR, MSIINSTALLCONTEXT)
UINT MSIREG_OpenFeaturesKey(LPCWSTR szProduct, LPCWSTR szUserSid, MSIINSTALLCONTEXT context, HKEY *key, BOOL create)
UINT MSIREG_OpenUserUpgradeCodesKey(LPCWSTR szProduct, HKEY *key, BOOL create)
UINT msi_set_property(MSIDATABASE *, const WCHAR *, const WCHAR *, int)
MSIRECORD *WINAPIV MSI_QueryGetRecord(MSIDATABASE *db, LPCWSTR query,...)
UINT msi_get_property(MSIDATABASE *, LPCWSTR, LPWSTR, LPDWORD)
UINT MSIREG_OpenUpgradeCodesKey(LPCWSTR szProduct, HKEY *key, BOOL create)
static void msi_revert_fs_redirection(MSIPACKAGE *package)
BOOL MSI_RecordIsNull(MSIRECORD *, UINT)
UINT MSIREG_DeleteLocalClassesProductKey(LPCWSTR szProductCode)
static void msi_disable_fs_redirection(MSIPACKAGE *package)
INT MSI_ProcessMessage(MSIPACKAGE *, INSTALLMESSAGE, MSIRECORD *)
UINT MSIREG_DeleteUserFeaturesKey(LPCWSTR szProduct)
UINT MSI_ViewFetch(MSIQUERY *, MSIRECORD **)
UINT MSIREG_OpenUserDataPatchKey(LPCWSTR szPatch, MSIINSTALLCONTEXT dwContext, HKEY *key, BOOL create)
void msi_free_action_script(MSIPACKAGE *package, UINT script)
WCHAR * msi_dup_property(MSIDATABASE *db, const WCHAR *prop) __WINE_DEALLOC(free) __WINE_MALLOC
UINT msi_suminfo_get_prop(MSISUMMARYINFO *, UINT, UINT *, INT *, FILETIME *, awstring *, DWORD *)
UINT MSIREG_OpenUserDataProductKey(LPCWSTR szProduct, MSIINSTALLCONTEXT dwContext, LPCWSTR szUserSid, HKEY *key, BOOL create)
UINT MSI_RecordSetStringW(MSIRECORD *, UINT, LPCWSTR)
MSIRECORD * MSI_CreateRecord(UINT)
UINT MSIREG_OpenUserDataFeaturesKey(LPCWSTR szProduct, LPCWSTR szUserSid, MSIINSTALLCONTEXT context, HKEY *key, BOOL create)
UINT MSIREG_DeleteProductKey(LPCWSTR szProduct)
UINT MSIREG_DeleteUserDataPatchKey(LPCWSTR patch, MSIINSTALLCONTEXT context)
UINT msi_apply_transforms(MSIPACKAGE *package)
UINT msi_get_suminfo(IStorage *stg, UINT uiUpdateCount, MSISUMMARYINFO **si)
UINT MSI_IterateRecords(MSIQUERY *, LPDWORD, record_func, LPVOID)
#define SQUASHED_GUID_SIZE
UINT MSI_OpenPackageW(LPCWSTR szPackage, DWORD dwOptions, MSIPACKAGE **pPackage)
void msi_adjust_privilege_properties(MSIPACKAGE *)
WCHAR * msi_reg_get_val_str(HKEY hkey, const WCHAR *name) __WINE_DEALLOC(free) __WINE_MALLOC
MSIRECORD * MSI_CloneRecord(MSIRECORD *)
DWORD msi_version_str_to_dword(LPCWSTR p)
#define FILE_ATTRIBUTE_DIRECTORY
IN ULONG IN UCHAR Condition
#define STGM_SHARE_EXCLUSIVE
#define ODBC_INSTALL_COMPLETE
#define ODBC_REMOVE_SYS_DSN
static const struct @612 exec_table[]
const GUID IID_IPersistFile
static HANDLE ACCESS_MASK ULONG attributes
#define IsEqualGUID(rguid1, rguid2)
#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 MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
#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)
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
INSTALLSTATE ActionRequest
UINT action_progress_increment
struct list sourcelist_media
MSIINSTALLCONTEXT Context
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)
#define INVALID_FILE_ATTRIBUTES
static const WCHAR props[]
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
BOOL WINAPI SQLConfigDataSourceW(HWND hwnd, WORD request, LPCWSTR driver, LPCWSTR attributes)
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)
static WORD const char * driver
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_BOOT_START
#define SERVICE_SYSTEM_START