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
51#define _O_SHORT_LIVED 0x1000
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 );
char * strcat(char *DstString, const char *SrcString)
ACPI_SIZE strlen(const char *String)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static WCHAR * strdupW(const WCHAR *src)
static void list_add_tail(struct list_entry *head, struct list_entry *entry)
HFDI __cdecl FDICreate(PFNALLOC pfnalloc, PFNFREE pfnfree, PFNOPEN pfnopen, PFNREAD pfnread, PFNWRITE pfnwrite, PFNCLOSE pfnclose, PFNSEEK pfnseek, int cpuType, PERF perf)
BOOL __cdecl FDICopy(HFDI hfdi, char *pszCabinet, char *pszCabPath, int flags, PFNFDINOTIFY pfnfdin, PFNFDIDECRYPT pfnfdid, void *pvUser)
BOOL __cdecl FDIDestroy(HFDI hfdi)
static WCHAR * strdupAtoW(const char *str)
#define ReadFile(a, b, c, d, e)
#define INVALID_HANDLE_VALUE
#define CreateFileA(a, b, c, d, e, f, g)
#define FILE_ATTRIBUTE_NORMAL
#define ERROR_ACCESS_DENIED
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
UINT WINAPI GetDriveTypeW(IN LPCWSTR lpRootPathName)
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
BOOL WINAPI SetFileTime(IN HANDLE hFile, CONST FILETIME *lpCreationTime OPTIONAL, CONST FILETIME *lpLastAccessTime OPTIONAL, CONST FILETIME *lpLastWriteTime OPTIONAL)
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
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)
BOOL WINAPI DosDateTimeToFileTime(IN WORD wFatDate, IN WORD wFatTime, OUT LPFILETIME lpFileTime)
BOOL WINAPI LocalFileTimeToFileTime(IN CONST FILETIME *lpLocalFileTime, OUT LPFILETIME lpFileTime)
UINT msi_set_sourcedir_props(MSIPACKAGE *package, BOOL replace)
BOOL msi_set_file_attributes(MSIPACKAGE *package, const WCHAR *filename, DWORD attrs)
HANDLE msi_create_file(MSIPACKAGE *package, const WCHAR *filename, DWORD access, DWORD sharing, DWORD creation, DWORD flags)
BOOL msi_move_file(MSIPACKAGE *package, const WCHAR *from, const WCHAR *to, DWORD flags)
DWORD msi_get_file_attributes(MSIPACKAGE *package, const WCHAR *path)
int msiobj_release(MSIOBJECTHDR *info)
#define MSIERR_CABNOTFOUND
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 WINAPI MsiSourceListGetInfoW(LPCWSTR szProduct, LPCWSTR szUserSid, MSIINSTALLCONTEXT dwContext, DWORD dwOptions, LPCWSTR szProperty, LPWSTR szValue, LPDWORD pcchValue)
UINT WINAPI MsiSourceListEnumSourcesW(const WCHAR *szProductCodeOrPatch, const WCHAR *szUserSid, MSIINSTALLCONTEXT dwContext, DWORD dwOptions, DWORD dwIndex, WCHAR *szSource, DWORD *pcchSource)
LPWSTR WINAPI PathAddBackslashW(LPWSTR lpszPath)
BOOL WINAPI PathStripToRootW(LPWSTR lpszPath)
BOOL WINAPI UrlIsW(LPCWSTR pszUrl, URLIS Urlis)
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
UINT WINAPI GetTempFileNameW(IN LPCWSTR lpPathName, IN LPCWSTR lpPrefixString, IN UINT uUnique, OUT LPWSTR lpTempFileName)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLdouble GLdouble GLdouble r
GLuint GLsizei GLsizei * length
static LPSTR strdupWtoA(LPCWSTR str)
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
double __cdecl erf(double)
static char volume_name[]
static HMODULE MODULEINFO DWORD cb
static const WCHAR INSTALLPROPERTY_LASTUSEDTYPEW[]
static const WCHAR INSTALLPROPERTY_LASTUSEDSOURCEW[]
UINT msi_package_add_info(MSIPACKAGE *, DWORD, DWORD, LPCWSTR, LPWSTR) DECLSPEC_HIDDEN
UINT msi_get_stream(MSIDATABASE *, const WCHAR *, IStream **) DECLSPEC_HIDDEN
MSIRECORD *WINAPIV MSI_QueryGetRecord(MSIDATABASE *db, LPCWSTR query,...) DECLSPEC_HIDDEN
LPWSTR encode_streamname(BOOL bTable, LPCWSTR in) DECLSPEC_HIDDEN
static void msi_free(void *mem)
int MSI_RecordGetInteger(MSIRECORD *, UINT) DECLSPEC_HIDDEN
UINT msi_download_file(LPCWSTR szUrl, LPWSTR filename) DECLSPEC_HIDDEN
UINT MSI_RecordSetInteger(MSIRECORD *, UINT, int) DECLSPEC_HIDDEN
#define MSICABEXTRACT_BEGINEXTRACT
const WCHAR * MSI_RecordGetString(const MSIRECORD *, UINT) DECLSPEC_HIDDEN
INT MSI_ProcessMessage(MSIPACKAGE *, INSTALLMESSAGE, MSIRECORD *) DECLSPEC_HIDDEN
static void * msi_alloc(size_t len) __WINE_ALLOC_SIZE(1)
MSIRECORD * MSI_CreateRecord(UINT) DECLSPEC_HIDDEN
LPWSTR msi_dup_property(MSIDATABASE *db, LPCWSTR prop) DECLSPEC_HIDDEN
#define MSICABEXTRACT_FILEEXTRACTED
UINT msi_package_add_media_disk(MSIPACKAGE *, DWORD, DWORD, DWORD, LPWSTR, LPWSTR) DECLSPEC_HIDDEN
UINT MSI_RecordSetStringW(MSIRECORD *, UINT, LPCWSTR) DECLSPEC_HIDDEN
#define FILE_ATTRIBUTE_READONLY
#define FILE_ATTRIBUTE_HIDDEN
#define FILE_ATTRIBUTE_SYSTEM
#define FILE_SHARE_DELETE
#define STGM_SHARE_EXCLUSIVE
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
struct list cabinet_streams
#define INVALID_FILE_ATTRIBUTES
DWORD WINAPI GetLastError(void)
#define MOVEFILE_DELAY_UNTIL_REBOOT
#define ERROR_INSTALL_FAILURE
#define ERROR_SHARING_VIOLATION
#define ERROR_INSTALL_SOURCE_ABSENT
#define ERROR_FUNCTION_FAILED
#define ERROR_USER_MAPPED_FILE