42 #define _O_ACCMODE (_O_RDONLY|_O_WRONLY|_O_RDWR) 43 #define _O_APPEND 0x0008 44 #define _O_RANDOM 0x0010 45 #define _O_SEQUENTIAL 0x0020 46 #define _O_TEMPORARY 0x0040 47 #define _O_NOINHERIT 0x0080 48 #define _O_CREAT 0x0100 49 #define _O_TRUNC 0x0200 50 #define _O_EXCL 0x0400 51 #define _O_SHORT_LIVED 0x1000 52 #define _O_TEXT 0x4000 53 #define _O_BINARY 0x8000 108 if (cab->
disk_id == disk_id)
return cab;
126 DWORD dwShareMode = 0;
151 dwCreateDisposition, 0,
NULL);
204 WARN(
"failed to get cabinet stream\n");
212 WARN(
"failed to get stream %u\n",
r);
223 WARN(
"failed to encode stream name\n");
230 WARN(
"failed to open stream %#lx\n",
hr );
243 hr = IStream_Read( stm, pv,
cb, &
read );
253 IStream_Release( stm );
265 hr = IStream_Seek( stm, move, seektype, &newpos );
281 TRACE(
"Unable to query row\n");
335 ERR(
"Failed to get next cabinet information: %d\n", rc);
344 WARN(
"Continuous cabinet %s does not match the next cabinet %s in the media table => use latter one\n",
debugstr_w(cab),
debugstr_w(
mi->cabinet));
352 WARN(
"cannot update next cabinet filename with a string size %lu > 256\n",
length );
404 ERR(
"Failed to get next cabinet information: %u\n", rc);
458 WCHAR *tmpfileW, *tmppathW, *
p;
461 TRACE(
"file in use, scheduling rename operation\n");
464 if ((
p =
wcsrchr(tmppathW,
'\\'))) *
p = 0;
480 data->package->need_reboot_at_end = 1;
574 ERR(
"Unexpected notification %d\n", fdint);
592 ERR(
"FDICreate failed\n");
606 ERR(
"FDICopy failed\n");
621 static char filename[] = {
'<',
'S',
'T',
'R',
'E',
'A',
'M',
'>',0};
632 ERR(
"FDICreate failed\n");
640 if (!
ret)
ERR(
"FDICopy failed\n");
654 if (
mi->cabinet[0] ==
'#')
695 if (Sequence <= mi->last_sequence)
701 TRACE(
"Unable to query row\n");
741 mi->volume_label,
mi->disk_prompt);
746 TRACE(
"sequence %u -> cabinet %s disk id %u\n", Sequence,
debugstr_w(
mi->cabinet),
mi->disk_id);
759 DWORD volumesz, promptsz;
778 if (last_type[0] ==
'n')
886 if ((
p =
wcsrchr( temppath,
'\\' ))) *
p = 0;
897 if (
mi->volume_label)
900 if (
mi->last_volume &&
wcsicmp(
mi->last_volume,
mi->volume_label ))
943 if (
item->disk_id == disk_id)
945 TRACE(
"duplicate disk id %u\n", disk_id);
958 IStorage_AddRef( storage );
#define ERROR_USER_MAPPED_FILE
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
BOOL __cdecl FDIDestroy(HFDI hfdi)
UINT msi_get_stream(MSIDATABASE *, const WCHAR *, IStream **) DECLSPEC_HIDDEN
UINT MSI_RecordSetStringW(MSIRECORD *, UINT, LPCWSTR) DECLSPEC_HIDDEN
UINT WINAPI MsiSourceListGetInfoW(LPCWSTR szProduct, LPCWSTR szUserSid, MSIINSTALLCONTEXT dwContext, DWORD dwOptions, LPCWSTR szProperty, LPWSTR szValue, LPDWORD pcchValue)
char * strcat(char *DstString, const char *SrcString)
#define STGM_SHARE_EXCLUSIVE
ACPI_SIZE strlen(const char *String)
static WCHAR * strdupW(const WCHAR *src)
#define FILE_ATTRIBUTE_SYSTEM
GLdouble GLdouble GLdouble r
UINT WINAPI MsiSourceListEnumMediaDisksW(const WCHAR *szProductCodeOrPatchCode, const WCHAR *szUserSid, MSIINSTALLCONTEXT dwContext, DWORD dwOptions, DWORD dwIndex, DWORD *pdwDiskId, WCHAR *szVolumeLabel, DWORD *pcchVolumeLabel, WCHAR *szDiskPrompt, DWORD *pcchDiskPrompt)
UINT msi_set_sourcedir_props(MSIPACKAGE *package, BOOL replace)
static LPSTR strdupWtoA(LPCWSTR str)
#define INVALID_HANDLE_VALUE
DWORD WINAPI GetLastError(VOID)
static void msi_free(void *mem)
UINT msi_package_add_info(MSIPACKAGE *, DWORD, DWORD, LPCWSTR, LPWSTR) DECLSPEC_HIDDEN
static const WCHAR INSTALLPROPERTY_LASTUSEDSOURCEW[]
BOOL WINAPI SetFileTime(IN HANDLE hFile, CONST FILETIME *lpCreationTime OPTIONAL, CONST FILETIME *lpLastAccessTime OPTIONAL, CONST FILETIME *lpLastWriteTime OPTIONAL)
BOOL WINAPI LocalFileTimeToFileTime(IN CONST FILETIME *lpLocalFileTime, OUT LPFILETIME lpFileTime)
__WINE_SERVER_LIST_INLINE void list_add_tail(struct list *list, struct list *elem)
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
UINT MSI_RecordSetInteger(MSIRECORD *, UINT, int) DECLSPEC_HIDDEN
BOOL msi_set_file_attributes(MSIPACKAGE *package, const WCHAR *filename, DWORD attrs)
UINT WINAPI MsiSourceListEnumSourcesW(const WCHAR *szProductCodeOrPatch, const WCHAR *szUserSid, MSIINSTALLCONTEXT dwContext, DWORD dwOptions, DWORD dwIndex, WCHAR *szSource, DWORD *pcchSource)
namespace GUID const ADDRINFOEXW ADDRINFOEXW struct timeval OVERLAPPED LPLOOKUPSERVICE_COMPLETION_ROUTINE HANDLE * handle
#define ERROR_FUNCTION_FAILED
#define ERROR_ACCESS_DENIED
BOOL WINAPI PathStripToRootW(LPWSTR lpszPath)
LPWSTR WINAPI PathAddBackslashW(LPWSTR lpszPath)
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
UINT msi_download_file(LPCWSTR szUrl, LPWSTR filename) DECLSPEC_HIDDEN
BOOL __cdecl FDICopy(HFDI hfdi, char *pszCabinet, char *pszCabPath, int flags, PFNFDINOTIFY pfnfdin, PFNFDIDECRYPT pfnfdid, void *pvUser)
INT MSI_ProcessMessage(MSIPACKAGE *, INSTALLMESSAGE, MSIRECORD *) DECLSPEC_HIDDEN
GLenum GLuint GLenum GLsizei length
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
#define MOVEFILE_DELAY_UNTIL_REBOOT
HFDI __cdecl FDICreate(PFNALLOC pfnalloc, PFNFREE pfnfree, PFNOPEN pfnopen, PFNREAD pfnread, PFNWRITE pfnwrite, PFNCLOSE pfnclose, PFNSEEK pfnseek, int cpuType, PERF perf)
const WCHAR * MSI_RecordGetString(const MSIRECORD *, UINT) DECLSPEC_HIDDEN
MSIRECORD *WINAPIV MSI_QueryGetRecord(MSIDATABASE *db, LPCWSTR query,...) DECLSPEC_HIDDEN
HANDLE msi_create_file(MSIPACKAGE *package, const WCHAR *filename, DWORD access, DWORD sharing, DWORD creation, DWORD flags)
#define MSICABEXTRACT_FILEEXTRACTED
BOOL msi_move_file(MSIPACKAGE *package, const WCHAR *from, const WCHAR *to, DWORD flags)
BOOL WINAPI DosDateTimeToFileTime(IN WORD wFatDate, IN WORD wFatTime, OUT LPFILETIME lpFileTime)
double __cdecl erf(double)
LPWSTR encode_streamname(BOOL bTable, LPCWSTR in) DECLSPEC_HIDDEN
#define ERROR_INSTALL_FAILURE
UINT WINAPI GetTempFileNameW(IN LPCWSTR lpPathName, IN LPCWSTR lpPrefixString, IN UINT uUnique, OUT LPWSTR lpTempFileName)
#define FILE_ATTRIBUTE_READONLY
#define INVALID_FILE_ATTRIBUTES
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
int msiobj_release(MSIOBJECTHDR *info)
MSIRECORD * MSI_CreateRecord(UINT) DECLSPEC_HIDDEN
#define FILE_ATTRIBUTE_NORMAL
#define FILE_SHARE_DELETE
DWORD msi_get_file_attributes(MSIPACKAGE *package, const WCHAR *path)
static const WCHAR INSTALLPROPERTY_LASTUSEDTYPEW[]
#define ERROR_SHARING_VIOLATION
UINT msi_package_add_media_disk(MSIPACKAGE *, DWORD, DWORD, DWORD, LPWSTR, LPWSTR) DECLSPEC_HIDDEN
BOOL WINAPI UrlIsW(LPCWSTR pszUrl, URLIS Urlis)
UINT WINAPI GetDriveTypeW(IN LPCWSTR lpRootPathName)
struct list cabinet_streams
int MSI_RecordGetInteger(MSIRECORD *, UINT) DECLSPEC_HIDDEN
BOOL WINAPI GetVolumeInformationW(IN LPCWSTR lpRootPathName, IN LPWSTR lpVolumeNameBuffer, IN DWORD nVolumeNameSize, OUT LPDWORD lpVolumeSerialNumber OPTIONAL, OUT LPDWORD lpMaximumComponentLength OPTIONAL, OUT LPDWORD lpFileSystemFlags OPTIONAL, OUT LPWSTR lpFileSystemNameBuffer OPTIONAL, IN DWORD nFileSystemNameSize)
static char volume_name[]
GLsizei GLsizei GLchar * source
#define ReadFile(a, b, c, d, e)
#define MSICABEXTRACT_BEGINEXTRACT
#define FILE_ATTRIBUTE_HIDDEN
static HMODULE MODULEINFO DWORD cb
#define ERROR_INSTALL_SOURCE_ABSENT
static void * msi_alloc(size_t len) __WINE_ALLOC_SIZE(1)
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
#define CreateFileA(a, b, c, d, e, f, g)
#define MSIERR_CABNOTFOUND
static WCHAR * strdupAtoW(const char *str)
_CRTIMP int __cdecl read(_In_ int _FileHandle, _Out_writes_bytes_(_MaxCharCount) void *_DstBuf, _In_ unsigned int _MaxCharCount)
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
LPWSTR msi_dup_property(MSIDATABASE *db, LPCWSTR prop) DECLSPEC_HIDDEN