92 if (cab->
disk_id == disk_id)
return cab;
110 DWORD dwShareMode = 0;
192 WARN(
"failed to get cabinet stream\n");
200 WARN(
"failed to get stream %u\n",
r);
211 WARN(
"failed to encode stream name\n");
218 WARN(
"failed to open stream %#lx\n",
hr );
231 hr = IStream_Read( stm, pv,
cb, &
read );
241 IStream_Release( stm );
253 hr = IStream_Seek( stm, move, seektype, &newpos );
269 TRACE(
"Unable to query row\n");
323 ERR(
"Failed to get next cabinet information: %d\n", rc);
332 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));
340 WARN(
"cannot update next cabinet filename with a string size %lu > 256\n",
length );
392 ERR(
"Failed to get next cabinet information: %u\n", rc);
446 WCHAR *tmpfileW, *tmppathW, *
p;
449 TRACE(
"file in use, scheduling rename operation\n");
452 if ((
p =
wcsrchr(tmppathW,
'\\'))) *
p = 0;
468 data->package->need_reboot_at_end = 1;
562 ERR(
"Unexpected notification %d\n", fdint);
580 ERR(
"FDICreate failed\n");
594 ERR(
"FDICopy failed\n");
609 static char filename[] = {
'<',
'S',
'T',
'R',
'E',
'A',
'M',
'>',0};
620 ERR(
"FDICreate failed\n");
628 if (!
ret)
ERR(
"FDICopy failed\n");
642 if (
mi->cabinet[0] ==
'#')
683 if (Sequence <= mi->last_sequence)
689 TRACE(
"Unable to query row\n");
729 mi->volume_label,
mi->disk_prompt);
734 TRACE(
"sequence %u -> cabinet %s disk id %u\n", Sequence,
debugstr_w(
mi->cabinet),
mi->disk_id);
747 DWORD volumesz, promptsz;
766 if (last_type[0] ==
'n')
861 free( cabinet_file );
874 if ((
p =
wcsrchr( temppath,
'\\' ))) *
p = 0;
885 if (
mi->volume_label)
888 if (
mi->last_volume &&
wcsicmp(
mi->last_volume,
mi->volume_label ))
898 free( cabinet_file );
914 free( cabinet_file );
919 free( cabinet_file );
931 if (
item->disk_id == disk_id)
933 TRACE(
"duplicate disk id %u\n", disk_id);
char * strcat(char *DstString, const char *SrcString)
ACPI_SIZE strlen(const char *String)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
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 FILE_ATTRIBUTE_NORMAL
#define ERROR_ACCESS_DENIED
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_delete_file(MSIPACKAGE *package, const WCHAR *filename)
BOOL msi_move_file(MSIPACKAGE *package, const WCHAR *from, const WCHAR *to, DWORD flags)
DWORD msi_get_file_attributes(MSIPACKAGE *package, const WCHAR *path)
BOOL msi_get_temp_file_name(MSIPACKAGE *package, const WCHAR *tmp_path, const WCHAR *prefix, WCHAR *tmp_filename)
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)
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
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLdouble GLdouble GLdouble r
GLuint GLsizei GLsizei * length
static LPSTR strdupWtoA(LPCWSTR str)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_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[]
int MSI_RecordGetInteger(MSIRECORD *, UINT)
UINT MSI_RecordSetInteger(MSIRECORD *, UINT, int)
WCHAR * encode_streamname(BOOL is_table, const WCHAR *in)
UINT msi_download_file(LPCWSTR szUrl, LPWSTR filename)
UINT msi_package_add_media_disk(MSIPACKAGE *, DWORD, DWORD, DWORD, LPWSTR, LPWSTR)
const WCHAR * MSI_RecordGetString(const MSIRECORD *, UINT)
static char * strdupWtoU(LPCWSTR str)
#define MSICABEXTRACT_BEGINEXTRACT
MSIRECORD *WINAPIV MSI_QueryGetRecord(MSIDATABASE *db, LPCWSTR query,...)
WCHAR * msi_dup_property(MSIDATABASE *db, const WCHAR *prop)
INT MSI_ProcessMessage(MSIPACKAGE *, INSTALLMESSAGE, MSIRECORD *)
UINT MSI_RecordSetStringW(MSIRECORD *, UINT, LPCWSTR)
MSIRECORD * MSI_CreateRecord(UINT)
#define MSICABEXTRACT_FILEEXTRACTED
UINT msi_get_stream(MSIDATABASE *, const WCHAR *, IStream **)
UINT msi_package_add_info(MSIPACKAGE *, DWORD, DWORD, LPCWSTR, LPWSTR)
static LPWSTR strdupUtoW(LPCSTR str)
#define FILE_ATTRIBUTE_READONLY
#define FILE_ATTRIBUTE_HIDDEN
#define FILE_ATTRIBUTE_SYSTEM
#define FILE_SHARE_DELETE
#define STGM_SHARE_EXCLUSIVE
#define PathAddBackslashW
_Check_return_ _CRTIMP wchar_t *__cdecl wcsdup(_In_z_ const wchar_t *_Str)
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
struct list cabinet_streams
MSIINSTALLCONTEXT Context
#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