msi: Merge action.h into msipriv.h.
This commit is contained in:
parent
175c407bfc
commit
80affb3c2d
|
@ -41,7 +41,6 @@ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/stand
|
||||||
#include "shlobj.h"
|
#include "shlobj.h"
|
||||||
#include "wine/unicode.h"
|
#include "wine/unicode.h"
|
||||||
#include "winver.h"
|
#include "winver.h"
|
||||||
#include "action.h"
|
|
||||||
|
|
||||||
#define REG_PROGRESS_VALUE 13200
|
#define REG_PROGRESS_VALUE 13200
|
||||||
#define COMPONENT_PROGRESS_VALUE 24000
|
#define COMPONENT_PROGRESS_VALUE 24000
|
||||||
|
|
|
@ -1,315 +0,0 @@
|
||||||
/*
|
|
||||||
* Common prototypes for Action handlers
|
|
||||||
*
|
|
||||||
* Copyright 2005 Aric Stewart for CodeWeavers
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __MSI_ACTION_H__
|
|
||||||
#define __MSI_ACTION_H__
|
|
||||||
|
|
||||||
#include "wine/list.h"
|
|
||||||
|
|
||||||
typedef struct tagMSIFEATURE
|
|
||||||
{
|
|
||||||
struct list entry;
|
|
||||||
LPWSTR Feature;
|
|
||||||
LPWSTR Feature_Parent;
|
|
||||||
LPWSTR Title;
|
|
||||||
LPWSTR Description;
|
|
||||||
INT Display;
|
|
||||||
INT Level;
|
|
||||||
LPWSTR Directory;
|
|
||||||
INT Attributes;
|
|
||||||
|
|
||||||
INSTALLSTATE Installed;
|
|
||||||
INSTALLSTATE ActionRequest;
|
|
||||||
INSTALLSTATE Action;
|
|
||||||
|
|
||||||
struct list Children;
|
|
||||||
struct list Components;
|
|
||||||
|
|
||||||
INT Cost;
|
|
||||||
} MSIFEATURE;
|
|
||||||
|
|
||||||
typedef struct tagMSICOMPONENT
|
|
||||||
{
|
|
||||||
struct list entry;
|
|
||||||
DWORD magic;
|
|
||||||
LPWSTR Component;
|
|
||||||
LPWSTR ComponentId;
|
|
||||||
LPWSTR Directory;
|
|
||||||
INT Attributes;
|
|
||||||
LPWSTR Condition;
|
|
||||||
LPWSTR KeyPath;
|
|
||||||
|
|
||||||
INSTALLSTATE Installed;
|
|
||||||
INSTALLSTATE ActionRequest;
|
|
||||||
INSTALLSTATE Action;
|
|
||||||
|
|
||||||
BOOL ForceLocalState;
|
|
||||||
BOOL Enabled;
|
|
||||||
INT Cost;
|
|
||||||
INT RefCount;
|
|
||||||
|
|
||||||
LPWSTR FullKeypath;
|
|
||||||
LPWSTR AdvertiseString;
|
|
||||||
} MSICOMPONENT;
|
|
||||||
|
|
||||||
typedef struct tagComponentList
|
|
||||||
{
|
|
||||||
struct list entry;
|
|
||||||
MSICOMPONENT *component;
|
|
||||||
} ComponentList;
|
|
||||||
|
|
||||||
typedef struct tagFeatureList
|
|
||||||
{
|
|
||||||
struct list entry;
|
|
||||||
MSIFEATURE *feature;
|
|
||||||
} FeatureList;
|
|
||||||
|
|
||||||
typedef struct tagMSIFOLDER
|
|
||||||
{
|
|
||||||
struct list entry;
|
|
||||||
LPWSTR Directory;
|
|
||||||
LPWSTR TargetDefault;
|
|
||||||
LPWSTR SourceLongPath;
|
|
||||||
LPWSTR SourceShortPath;
|
|
||||||
|
|
||||||
LPWSTR ResolvedTarget;
|
|
||||||
LPWSTR ResolvedSource;
|
|
||||||
LPWSTR Property; /* initially set property */
|
|
||||||
struct tagMSIFOLDER *Parent;
|
|
||||||
INT State;
|
|
||||||
/* 0 = uninitialized */
|
|
||||||
/* 1 = existing */
|
|
||||||
/* 2 = created remove if empty */
|
|
||||||
/* 3 = created persist if empty */
|
|
||||||
INT Cost;
|
|
||||||
INT Space;
|
|
||||||
} MSIFOLDER;
|
|
||||||
|
|
||||||
typedef enum _msi_file_state {
|
|
||||||
msifs_invalid,
|
|
||||||
msifs_missing,
|
|
||||||
msifs_overwrite,
|
|
||||||
msifs_present,
|
|
||||||
msifs_installed,
|
|
||||||
msifs_skipped,
|
|
||||||
} msi_file_state;
|
|
||||||
|
|
||||||
typedef struct tagMSIFILE
|
|
||||||
{
|
|
||||||
struct list entry;
|
|
||||||
LPWSTR File;
|
|
||||||
MSICOMPONENT *Component;
|
|
||||||
LPWSTR FileName;
|
|
||||||
LPWSTR ShortName;
|
|
||||||
LPWSTR LongName;
|
|
||||||
INT FileSize;
|
|
||||||
LPWSTR Version;
|
|
||||||
LPWSTR Language;
|
|
||||||
INT Attributes;
|
|
||||||
INT Sequence;
|
|
||||||
msi_file_state state;
|
|
||||||
LPWSTR SourcePath;
|
|
||||||
LPWSTR TargetPath;
|
|
||||||
BOOL IsCompressed;
|
|
||||||
} MSIFILE;
|
|
||||||
|
|
||||||
typedef struct tagMSITEMPFILE
|
|
||||||
{
|
|
||||||
struct list entry;
|
|
||||||
LPWSTR File;
|
|
||||||
LPWSTR Path;
|
|
||||||
} MSITEMPFILE;
|
|
||||||
|
|
||||||
typedef struct tagMSIAPPID
|
|
||||||
{
|
|
||||||
struct list entry;
|
|
||||||
LPWSTR AppID; /* Primary key */
|
|
||||||
LPWSTR RemoteServerName;
|
|
||||||
LPWSTR LocalServer;
|
|
||||||
LPWSTR ServiceParameters;
|
|
||||||
LPWSTR DllSurrogate;
|
|
||||||
BOOL ActivateAtStorage;
|
|
||||||
BOOL RunAsInteractiveUser;
|
|
||||||
} MSIAPPID;
|
|
||||||
|
|
||||||
typedef struct tagMSIPROGID MSIPROGID;
|
|
||||||
|
|
||||||
typedef struct tagMSICLASS
|
|
||||||
{
|
|
||||||
struct list entry;
|
|
||||||
LPWSTR clsid; /* Primary Key */
|
|
||||||
LPWSTR Context; /* Primary Key */
|
|
||||||
MSICOMPONENT *Component;
|
|
||||||
MSIPROGID *ProgID;
|
|
||||||
LPWSTR ProgIDText;
|
|
||||||
LPWSTR Description;
|
|
||||||
MSIAPPID *AppID;
|
|
||||||
LPWSTR FileTypeMask;
|
|
||||||
LPWSTR IconPath;
|
|
||||||
LPWSTR DefInprocHandler;
|
|
||||||
LPWSTR DefInprocHandler32;
|
|
||||||
LPWSTR Argument;
|
|
||||||
MSIFEATURE *Feature;
|
|
||||||
INT Attributes;
|
|
||||||
/* not in the table, set during installation */
|
|
||||||
BOOL Installed;
|
|
||||||
} MSICLASS;
|
|
||||||
|
|
||||||
typedef struct tagMSIMIME MSIMIME;
|
|
||||||
|
|
||||||
typedef struct tagMSIEXTENSION
|
|
||||||
{
|
|
||||||
struct list entry;
|
|
||||||
LPWSTR Extension; /* Primary Key */
|
|
||||||
MSICOMPONENT *Component;
|
|
||||||
MSIPROGID *ProgID;
|
|
||||||
LPWSTR ProgIDText;
|
|
||||||
MSIMIME *Mime;
|
|
||||||
MSIFEATURE *Feature;
|
|
||||||
/* not in the table, set during installation */
|
|
||||||
BOOL Installed;
|
|
||||||
struct list verbs;
|
|
||||||
} MSIEXTENSION;
|
|
||||||
|
|
||||||
struct tagMSIPROGID
|
|
||||||
{
|
|
||||||
struct list entry;
|
|
||||||
LPWSTR ProgID; /* Primary Key */
|
|
||||||
MSIPROGID *Parent;
|
|
||||||
MSICLASS *Class;
|
|
||||||
LPWSTR Description;
|
|
||||||
LPWSTR IconPath;
|
|
||||||
/* not in the table, set during installation */
|
|
||||||
BOOL InstallMe;
|
|
||||||
MSIPROGID *CurVer;
|
|
||||||
MSIPROGID *VersionInd;
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct tagMSIVERB
|
|
||||||
{
|
|
||||||
struct list entry;
|
|
||||||
LPWSTR Verb;
|
|
||||||
INT Sequence;
|
|
||||||
LPWSTR Command;
|
|
||||||
LPWSTR Argument;
|
|
||||||
} MSIVERB;
|
|
||||||
|
|
||||||
struct tagMSIMIME
|
|
||||||
{
|
|
||||||
struct list entry;
|
|
||||||
LPWSTR ContentType; /* Primary Key */
|
|
||||||
MSIEXTENSION *Extension;
|
|
||||||
LPWSTR clsid;
|
|
||||||
MSICLASS *Class;
|
|
||||||
/* not in the table, set during installation */
|
|
||||||
BOOL InstallMe;
|
|
||||||
};
|
|
||||||
|
|
||||||
enum SCRIPTS {
|
|
||||||
INSTALL_SCRIPT = 0,
|
|
||||||
COMMIT_SCRIPT = 1,
|
|
||||||
ROLLBACK_SCRIPT = 2,
|
|
||||||
TOTAL_SCRIPTS = 3
|
|
||||||
};
|
|
||||||
|
|
||||||
#define SEQUENCE_UI 0x1
|
|
||||||
#define SEQUENCE_EXEC 0x2
|
|
||||||
#define SEQUENCE_INSTALL 0x10
|
|
||||||
|
|
||||||
typedef struct tagMSISCRIPT
|
|
||||||
{
|
|
||||||
LPWSTR *Actions[TOTAL_SCRIPTS];
|
|
||||||
UINT ActionCount[TOTAL_SCRIPTS];
|
|
||||||
BOOL ExecuteSequenceRun;
|
|
||||||
BOOL CurrentlyScripting;
|
|
||||||
UINT InWhatSequence;
|
|
||||||
LPWSTR *UniqueActions;
|
|
||||||
UINT UniqueActionsCount;
|
|
||||||
} MSISCRIPT;
|
|
||||||
|
|
||||||
|
|
||||||
extern UINT ACTION_PerformAction(MSIPACKAGE *package, const WCHAR *action, BOOL force);
|
|
||||||
extern UINT ACTION_PerformUIAction(MSIPACKAGE *package, const WCHAR *action);
|
|
||||||
extern void ACTION_FinishCustomActions( MSIPACKAGE* package);
|
|
||||||
extern UINT ACTION_CustomAction(MSIPACKAGE *package,const WCHAR *action, BOOL execute);
|
|
||||||
|
|
||||||
/* actions in other modules */
|
|
||||||
extern UINT ACTION_AppSearch(MSIPACKAGE *package);
|
|
||||||
extern UINT ACTION_FindRelatedProducts(MSIPACKAGE *package);
|
|
||||||
extern UINT ACTION_InstallFiles(MSIPACKAGE *package);
|
|
||||||
extern UINT ACTION_RemoveFiles(MSIPACKAGE *package);
|
|
||||||
extern UINT ACTION_DuplicateFiles(MSIPACKAGE *package);
|
|
||||||
extern UINT ACTION_RegisterClassInfo(MSIPACKAGE *package);
|
|
||||||
extern UINT ACTION_RegisterProgIdInfo(MSIPACKAGE *package);
|
|
||||||
extern UINT ACTION_RegisterExtensionInfo(MSIPACKAGE *package);
|
|
||||||
extern UINT ACTION_RegisterMIMEInfo(MSIPACKAGE *package);
|
|
||||||
extern UINT ACTION_RegisterFonts(MSIPACKAGE *package);
|
|
||||||
|
|
||||||
|
|
||||||
/* Helpers */
|
|
||||||
extern DWORD deformat_string(MSIPACKAGE *package, LPCWSTR ptr, WCHAR** data );
|
|
||||||
extern LPWSTR msi_dup_record_field(MSIRECORD *row, INT index);
|
|
||||||
extern LPWSTR msi_dup_property(MSIPACKAGE *package, LPCWSTR prop);
|
|
||||||
extern int msi_get_property_int( MSIPACKAGE *package, LPCWSTR prop, int def );
|
|
||||||
extern LPWSTR resolve_folder(MSIPACKAGE *package, LPCWSTR name, BOOL source,
|
|
||||||
BOOL set_prop, MSIFOLDER **folder);
|
|
||||||
extern MSICOMPONENT *get_loaded_component( MSIPACKAGE* package, LPCWSTR Component );
|
|
||||||
extern MSIFEATURE *get_loaded_feature( MSIPACKAGE* package, LPCWSTR Feature );
|
|
||||||
extern MSIFILE *get_loaded_file( MSIPACKAGE* package, LPCWSTR file );
|
|
||||||
extern MSIFOLDER *get_loaded_folder( MSIPACKAGE *package, LPCWSTR dir );
|
|
||||||
extern int track_tempfile(MSIPACKAGE *package, LPCWSTR name, LPCWSTR path);
|
|
||||||
extern UINT schedule_action(MSIPACKAGE *package, UINT script, LPCWSTR action);
|
|
||||||
extern LPWSTR build_icon_path(MSIPACKAGE *, LPCWSTR);
|
|
||||||
extern LPWSTR build_directory_name(DWORD , ...);
|
|
||||||
extern BOOL create_full_pathW(const WCHAR *path);
|
|
||||||
extern BOOL ACTION_VerifyComponentForAction(MSICOMPONENT*, INSTALLSTATE);
|
|
||||||
extern BOOL ACTION_VerifyFeatureForAction(MSIFEATURE*, INSTALLSTATE);
|
|
||||||
extern void reduce_to_longfilename(WCHAR*);
|
|
||||||
extern void reduce_to_shortfilename(WCHAR*);
|
|
||||||
extern LPWSTR create_component_advertise_string(MSIPACKAGE*, MSICOMPONENT*, LPCWSTR);
|
|
||||||
extern void ACTION_UpdateComponentStates(MSIPACKAGE *package, LPCWSTR szFeature);
|
|
||||||
extern UINT register_unique_action(MSIPACKAGE *, LPCWSTR);
|
|
||||||
extern BOOL check_unique_action(MSIPACKAGE *, LPCWSTR);
|
|
||||||
extern WCHAR* generate_error_string(MSIPACKAGE *, UINT, DWORD, ... );
|
|
||||||
extern UINT msi_create_component_directories( MSIPACKAGE *package );
|
|
||||||
extern void msi_ui_error( DWORD msg_id, DWORD type );
|
|
||||||
|
|
||||||
|
|
||||||
/* control event stuff */
|
|
||||||
extern VOID ControlEvent_FireSubscribedEvent(MSIPACKAGE *package, LPCWSTR event,
|
|
||||||
MSIRECORD *data);
|
|
||||||
extern VOID ControlEvent_CleanupSubscriptions(MSIPACKAGE *package);
|
|
||||||
extern VOID ControlEvent_SubscribeToEvent(MSIPACKAGE *package, msi_dialog *dialog,
|
|
||||||
LPCWSTR event, LPCWSTR control, LPCWSTR attribute);
|
|
||||||
extern VOID ControlEvent_UnSubscribeToEvent( MSIPACKAGE *package, LPCWSTR event,
|
|
||||||
LPCWSTR control, LPCWSTR attribute );
|
|
||||||
|
|
||||||
/* User Interface messages from the actions */
|
|
||||||
extern void ui_progress(MSIPACKAGE *, int, int, int, int);
|
|
||||||
extern void ui_actiondata(MSIPACKAGE *, LPCWSTR, MSIRECORD *);
|
|
||||||
|
|
||||||
|
|
||||||
/* string consts use a number of places and defined in helpers.c*/
|
|
||||||
extern const WCHAR cszSourceDir[];
|
|
||||||
extern const WCHAR szProductCode[];
|
|
||||||
extern const WCHAR cszRootDrive[];
|
|
||||||
extern const WCHAR cszbs[];
|
|
||||||
|
|
||||||
#endif /* __MSI_ACTION_H__ */
|
|
|
@ -31,7 +31,6 @@
|
||||||
#include "wine/unicode.h"
|
#include "wine/unicode.h"
|
||||||
#include "wine/debug.h"
|
#include "wine/debug.h"
|
||||||
#include "msipriv.h"
|
#include "msipriv.h"
|
||||||
#include "action.h"
|
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(msi);
|
WINE_DEFAULT_DEBUG_CHANNEL(msi);
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,6 @@
|
||||||
#include "msipriv.h"
|
#include "msipriv.h"
|
||||||
#include "winuser.h"
|
#include "winuser.h"
|
||||||
#include "wine/unicode.h"
|
#include "wine/unicode.h"
|
||||||
#include "action.h"
|
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(msi);
|
WINE_DEFAULT_DEBUG_CHANNEL(msi);
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,6 @@
|
||||||
#include "msi.h"
|
#include "msi.h"
|
||||||
#include "msiquery.h"
|
#include "msiquery.h"
|
||||||
#include "msipriv.h"
|
#include "msipriv.h"
|
||||||
#include "action.h"
|
|
||||||
|
|
||||||
#define YYLEX_PARAM info
|
#define YYLEX_PARAM info
|
||||||
#define YYPARSE_PARAM info
|
#define YYPARSE_PARAM info
|
||||||
|
|
|
@ -47,7 +47,6 @@ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/summa
|
||||||
#include "shlobj.h"
|
#include "shlobj.h"
|
||||||
#include "wine/unicode.h"
|
#include "wine/unicode.h"
|
||||||
#include "winver.h"
|
#include "winver.h"
|
||||||
#include "action.h"
|
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(msi);
|
WINE_DEFAULT_DEBUG_CHANNEL(msi);
|
||||||
|
|
||||||
|
|
|
@ -42,8 +42,6 @@
|
||||||
#include "wine/debug.h"
|
#include "wine/debug.h"
|
||||||
#include "wine/unicode.h"
|
#include "wine/unicode.h"
|
||||||
|
|
||||||
#include "action.h"
|
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(msi);
|
WINE_DEFAULT_DEBUG_CHANNEL(msi);
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,6 @@ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/contr
|
||||||
#include "winreg.h"
|
#include "winreg.h"
|
||||||
#include "msi.h"
|
#include "msi.h"
|
||||||
#include "msipriv.h"
|
#include "msipriv.h"
|
||||||
#include "action.h"
|
|
||||||
|
|
||||||
#include "wine/debug.h"
|
#include "wine/debug.h"
|
||||||
#include "wine/unicode.h"
|
#include "wine/unicode.h"
|
||||||
|
|
|
@ -45,7 +45,6 @@
|
||||||
#include "winreg.h"
|
#include "winreg.h"
|
||||||
#include "shlwapi.h"
|
#include "shlwapi.h"
|
||||||
#include "wine/unicode.h"
|
#include "wine/unicode.h"
|
||||||
#include "action.h"
|
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(msi);
|
WINE_DEFAULT_DEBUG_CHANNEL(msi);
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,6 @@
|
||||||
#include "wine/debug.h"
|
#include "wine/debug.h"
|
||||||
#include "msipriv.h"
|
#include "msipriv.h"
|
||||||
#include "wine/unicode.h"
|
#include "wine/unicode.h"
|
||||||
#include "action.h"
|
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(msi);
|
WINE_DEFAULT_DEBUG_CHANNEL(msi);
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,6 @@ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/msifo
|
||||||
#include "msipriv.h"
|
#include "msipriv.h"
|
||||||
#include "winnls.h"
|
#include "winnls.h"
|
||||||
#include "wine/unicode.h"
|
#include "wine/unicode.h"
|
||||||
#include "action.h"
|
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(msi);
|
WINE_DEFAULT_DEBUG_CHANNEL(msi);
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,6 @@
|
||||||
#include "msipriv.h"
|
#include "msipriv.h"
|
||||||
#include "winuser.h"
|
#include "winuser.h"
|
||||||
#include "wine/unicode.h"
|
#include "wine/unicode.h"
|
||||||
#include "action.h"
|
|
||||||
#include "msidefs.h"
|
#include "msidefs.h"
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(msi);
|
WINE_DEFAULT_DEBUG_CHANNEL(msi);
|
||||||
|
|
|
@ -29,7 +29,6 @@
|
||||||
#include "msi.h"
|
#include "msi.h"
|
||||||
#include "msidefs.h"
|
#include "msidefs.h"
|
||||||
#include "msipriv.h"
|
#include "msipriv.h"
|
||||||
#include "action.h"
|
|
||||||
#include "wine/unicode.h"
|
#include "wine/unicode.h"
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(msi);
|
WINE_DEFAULT_DEBUG_CHANNEL(msi);
|
||||||
|
|
|
@ -39,7 +39,6 @@
|
||||||
#include "shobjidl.h"
|
#include "shobjidl.h"
|
||||||
#include "objidl.h"
|
#include "objidl.h"
|
||||||
#include "wine/unicode.h"
|
#include "wine/unicode.h"
|
||||||
#include "action.h"
|
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(msi);
|
WINE_DEFAULT_DEBUG_CHANNEL(msi);
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
* Implementation of the Microsoft Installer (msi.dll)
|
* Implementation of the Microsoft Installer (msi.dll)
|
||||||
*
|
*
|
||||||
* Copyright 2002-2005 Mike McCormack for CodeWeavers
|
* Copyright 2002-2005 Mike McCormack for CodeWeavers
|
||||||
|
* Copyright 2005 Aric Stewart for CodeWeavers
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
@ -116,7 +117,7 @@ typedef struct tagMSIVIEWOPS
|
||||||
* fetch_int - reads one integer from {row,col} in the table
|
* fetch_int - reads one integer from {row,col} in the table
|
||||||
*
|
*
|
||||||
* This function should be called after the execute method.
|
* This function should be called after the execute method.
|
||||||
* Data returned by the function should not change until
|
* Data returned by the function should not change until
|
||||||
* close or delete is called.
|
* close or delete is called.
|
||||||
* To get a string value, query the database's string table with
|
* To get a string value, query the database's string table with
|
||||||
* the integer value returned from this function.
|
* the integer value returned from this function.
|
||||||
|
@ -183,7 +184,7 @@ typedef struct tagMSIVIEWOPS
|
||||||
/*
|
/*
|
||||||
* find_matching_rows - iterates through rows that match a value
|
* find_matching_rows - iterates through rows that match a value
|
||||||
*
|
*
|
||||||
* If the column type is a string then a string ID should be passed in.
|
* If the column type is a string then a string ID should be passed in.
|
||||||
* If the value to be looked up is an integer then no transformation of
|
* If the value to be looked up is an integer then no transformation of
|
||||||
* the input value is required, except if the column is a string, in which
|
* the input value is required, except if the column is a string, in which
|
||||||
* case a string ID should be passed in.
|
* case a string ID should be passed in.
|
||||||
|
@ -260,6 +261,221 @@ typedef struct tagMSISUMMARYINFO
|
||||||
PROPVARIANT property[MSI_MAX_PROPS];
|
PROPVARIANT property[MSI_MAX_PROPS];
|
||||||
} MSISUMMARYINFO;
|
} MSISUMMARYINFO;
|
||||||
|
|
||||||
|
typedef struct tagMSIFEATURE
|
||||||
|
{
|
||||||
|
struct list entry;
|
||||||
|
LPWSTR Feature;
|
||||||
|
LPWSTR Feature_Parent;
|
||||||
|
LPWSTR Title;
|
||||||
|
LPWSTR Description;
|
||||||
|
INT Display;
|
||||||
|
INT Level;
|
||||||
|
LPWSTR Directory;
|
||||||
|
INT Attributes;
|
||||||
|
INSTALLSTATE Installed;
|
||||||
|
INSTALLSTATE ActionRequest;
|
||||||
|
INSTALLSTATE Action;
|
||||||
|
struct list Children;
|
||||||
|
struct list Components;
|
||||||
|
INT Cost;
|
||||||
|
} MSIFEATURE;
|
||||||
|
|
||||||
|
typedef struct tagMSICOMPONENT
|
||||||
|
{
|
||||||
|
struct list entry;
|
||||||
|
DWORD magic;
|
||||||
|
LPWSTR Component;
|
||||||
|
LPWSTR ComponentId;
|
||||||
|
LPWSTR Directory;
|
||||||
|
INT Attributes;
|
||||||
|
LPWSTR Condition;
|
||||||
|
LPWSTR KeyPath;
|
||||||
|
INSTALLSTATE Installed;
|
||||||
|
INSTALLSTATE ActionRequest;
|
||||||
|
INSTALLSTATE Action;
|
||||||
|
BOOL ForceLocalState;
|
||||||
|
BOOL Enabled;
|
||||||
|
INT Cost;
|
||||||
|
INT RefCount;
|
||||||
|
LPWSTR FullKeypath;
|
||||||
|
LPWSTR AdvertiseString;
|
||||||
|
} MSICOMPONENT;
|
||||||
|
|
||||||
|
typedef struct tagComponentList
|
||||||
|
{
|
||||||
|
struct list entry;
|
||||||
|
MSICOMPONENT *component;
|
||||||
|
} ComponentList;
|
||||||
|
|
||||||
|
typedef struct tagFeatureList
|
||||||
|
{
|
||||||
|
struct list entry;
|
||||||
|
MSIFEATURE *feature;
|
||||||
|
} FeatureList;
|
||||||
|
|
||||||
|
typedef struct tagMSIFOLDER
|
||||||
|
{
|
||||||
|
struct list entry;
|
||||||
|
LPWSTR Directory;
|
||||||
|
LPWSTR TargetDefault;
|
||||||
|
LPWSTR SourceLongPath;
|
||||||
|
LPWSTR SourceShortPath;
|
||||||
|
|
||||||
|
LPWSTR ResolvedTarget;
|
||||||
|
LPWSTR ResolvedSource;
|
||||||
|
LPWSTR Property; /* initially set property */
|
||||||
|
struct tagMSIFOLDER *Parent;
|
||||||
|
INT State;
|
||||||
|
/* 0 = uninitialized */
|
||||||
|
/* 1 = existing */
|
||||||
|
/* 2 = created remove if empty */
|
||||||
|
/* 3 = created persist if empty */
|
||||||
|
INT Cost;
|
||||||
|
INT Space;
|
||||||
|
} MSIFOLDER;
|
||||||
|
|
||||||
|
typedef enum _msi_file_state {
|
||||||
|
msifs_invalid,
|
||||||
|
msifs_missing,
|
||||||
|
msifs_overwrite,
|
||||||
|
msifs_present,
|
||||||
|
msifs_installed,
|
||||||
|
msifs_skipped,
|
||||||
|
} msi_file_state;
|
||||||
|
|
||||||
|
typedef struct tagMSIFILE
|
||||||
|
{
|
||||||
|
struct list entry;
|
||||||
|
LPWSTR File;
|
||||||
|
MSICOMPONENT *Component;
|
||||||
|
LPWSTR FileName;
|
||||||
|
LPWSTR ShortName;
|
||||||
|
LPWSTR LongName;
|
||||||
|
INT FileSize;
|
||||||
|
LPWSTR Version;
|
||||||
|
LPWSTR Language;
|
||||||
|
INT Attributes;
|
||||||
|
INT Sequence;
|
||||||
|
msi_file_state state;
|
||||||
|
LPWSTR SourcePath;
|
||||||
|
LPWSTR TargetPath;
|
||||||
|
BOOL IsCompressed;
|
||||||
|
} MSIFILE;
|
||||||
|
|
||||||
|
typedef struct tagMSITEMPFILE
|
||||||
|
{
|
||||||
|
struct list entry;
|
||||||
|
LPWSTR File;
|
||||||
|
LPWSTR Path;
|
||||||
|
} MSITEMPFILE;
|
||||||
|
|
||||||
|
typedef struct tagMSIAPPID
|
||||||
|
{
|
||||||
|
struct list entry;
|
||||||
|
LPWSTR AppID; /* Primary key */
|
||||||
|
LPWSTR RemoteServerName;
|
||||||
|
LPWSTR LocalServer;
|
||||||
|
LPWSTR ServiceParameters;
|
||||||
|
LPWSTR DllSurrogate;
|
||||||
|
BOOL ActivateAtStorage;
|
||||||
|
BOOL RunAsInteractiveUser;
|
||||||
|
} MSIAPPID;
|
||||||
|
|
||||||
|
typedef struct tagMSIPROGID MSIPROGID;
|
||||||
|
|
||||||
|
typedef struct tagMSICLASS
|
||||||
|
{
|
||||||
|
struct list entry;
|
||||||
|
LPWSTR clsid; /* Primary Key */
|
||||||
|
LPWSTR Context; /* Primary Key */
|
||||||
|
MSICOMPONENT *Component;
|
||||||
|
MSIPROGID *ProgID;
|
||||||
|
LPWSTR ProgIDText;
|
||||||
|
LPWSTR Description;
|
||||||
|
MSIAPPID *AppID;
|
||||||
|
LPWSTR FileTypeMask;
|
||||||
|
LPWSTR IconPath;
|
||||||
|
LPWSTR DefInprocHandler;
|
||||||
|
LPWSTR DefInprocHandler32;
|
||||||
|
LPWSTR Argument;
|
||||||
|
MSIFEATURE *Feature;
|
||||||
|
INT Attributes;
|
||||||
|
/* not in the table, set during installation */
|
||||||
|
BOOL Installed;
|
||||||
|
} MSICLASS;
|
||||||
|
|
||||||
|
typedef struct tagMSIMIME MSIMIME;
|
||||||
|
|
||||||
|
typedef struct tagMSIEXTENSION
|
||||||
|
{
|
||||||
|
struct list entry;
|
||||||
|
LPWSTR Extension; /* Primary Key */
|
||||||
|
MSICOMPONENT *Component;
|
||||||
|
MSIPROGID *ProgID;
|
||||||
|
LPWSTR ProgIDText;
|
||||||
|
MSIMIME *Mime;
|
||||||
|
MSIFEATURE *Feature;
|
||||||
|
/* not in the table, set during installation */
|
||||||
|
BOOL Installed;
|
||||||
|
struct list verbs;
|
||||||
|
} MSIEXTENSION;
|
||||||
|
|
||||||
|
struct tagMSIPROGID
|
||||||
|
{
|
||||||
|
struct list entry;
|
||||||
|
LPWSTR ProgID; /* Primary Key */
|
||||||
|
MSIPROGID *Parent;
|
||||||
|
MSICLASS *Class;
|
||||||
|
LPWSTR Description;
|
||||||
|
LPWSTR IconPath;
|
||||||
|
/* not in the table, set during installation */
|
||||||
|
BOOL InstallMe;
|
||||||
|
MSIPROGID *CurVer;
|
||||||
|
MSIPROGID *VersionInd;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct tagMSIVERB
|
||||||
|
{
|
||||||
|
struct list entry;
|
||||||
|
LPWSTR Verb;
|
||||||
|
INT Sequence;
|
||||||
|
LPWSTR Command;
|
||||||
|
LPWSTR Argument;
|
||||||
|
} MSIVERB;
|
||||||
|
|
||||||
|
struct tagMSIMIME
|
||||||
|
{
|
||||||
|
struct list entry;
|
||||||
|
LPWSTR ContentType; /* Primary Key */
|
||||||
|
MSIEXTENSION *Extension;
|
||||||
|
LPWSTR clsid;
|
||||||
|
MSICLASS *Class;
|
||||||
|
/* not in the table, set during installation */
|
||||||
|
BOOL InstallMe;
|
||||||
|
};
|
||||||
|
|
||||||
|
enum SCRIPTS {
|
||||||
|
INSTALL_SCRIPT = 0,
|
||||||
|
COMMIT_SCRIPT = 1,
|
||||||
|
ROLLBACK_SCRIPT = 2,
|
||||||
|
TOTAL_SCRIPTS = 3
|
||||||
|
};
|
||||||
|
|
||||||
|
#define SEQUENCE_UI 0x1
|
||||||
|
#define SEQUENCE_EXEC 0x2
|
||||||
|
#define SEQUENCE_INSTALL 0x10
|
||||||
|
|
||||||
|
typedef struct tagMSISCRIPT
|
||||||
|
{
|
||||||
|
LPWSTR *Actions[TOTAL_SCRIPTS];
|
||||||
|
UINT ActionCount[TOTAL_SCRIPTS];
|
||||||
|
BOOL ExecuteSequenceRun;
|
||||||
|
BOOL CurrentlyScripting;
|
||||||
|
UINT InWhatSequence;
|
||||||
|
LPWSTR *UniqueActions;
|
||||||
|
UINT UniqueActionsCount;
|
||||||
|
} MSISCRIPT;
|
||||||
|
|
||||||
#define MSIHANDLETYPE_ANY 0
|
#define MSIHANDLETYPE_ANY 0
|
||||||
#define MSIHANDLETYPE_DATABASE 1
|
#define MSIHANDLETYPE_DATABASE 1
|
||||||
#define MSIHANDLETYPE_SUMMARYINFO 2
|
#define MSIHANDLETYPE_SUMMARYINFO 2
|
||||||
|
@ -345,7 +561,7 @@ extern UINT read_raw_stream_data( MSIDATABASE*, LPCWSTR stname,
|
||||||
|
|
||||||
/* transform functions */
|
/* transform functions */
|
||||||
extern UINT msi_table_apply_transform( MSIDATABASE *db, IStorage *stg );
|
extern UINT msi_table_apply_transform( MSIDATABASE *db, IStorage *stg );
|
||||||
extern UINT MSI_DatabaseApplyTransformW( MSIDATABASE *db,
|
extern UINT MSI_DatabaseApplyTransformW( MSIDATABASE *db,
|
||||||
LPCWSTR szTransformFile, int iErrorCond );
|
LPCWSTR szTransformFile, int iErrorCond );
|
||||||
|
|
||||||
/* action internals */
|
/* action internals */
|
||||||
|
@ -420,7 +636,7 @@ extern LPCWSTR msi_download_file( LPCWSTR szUrl, LPWSTR filename );
|
||||||
/* for deformating */
|
/* for deformating */
|
||||||
extern UINT MSI_FormatRecordW( MSIPACKAGE *, MSIRECORD *, LPWSTR, DWORD * );
|
extern UINT MSI_FormatRecordW( MSIPACKAGE *, MSIRECORD *, LPWSTR, DWORD * );
|
||||||
extern UINT MSI_FormatRecordA( MSIPACKAGE *, MSIRECORD *, LPSTR, DWORD * );
|
extern UINT MSI_FormatRecordA( MSIPACKAGE *, MSIRECORD *, LPSTR, DWORD * );
|
||||||
|
|
||||||
/* registry data encoding/decoding functions */
|
/* registry data encoding/decoding functions */
|
||||||
extern BOOL unsquash_guid(LPCWSTR in, LPWSTR out);
|
extern BOOL unsquash_guid(LPCWSTR in, LPWSTR out);
|
||||||
extern BOOL squash_guid(LPCWSTR in, LPWSTR out);
|
extern BOOL squash_guid(LPCWSTR in, LPWSTR out);
|
||||||
|
@ -491,6 +707,71 @@ extern LPVOID gUIContext;
|
||||||
extern WCHAR gszLogFile[MAX_PATH];
|
extern WCHAR gszLogFile[MAX_PATH];
|
||||||
extern HINSTANCE msi_hInstance;
|
extern HINSTANCE msi_hInstance;
|
||||||
|
|
||||||
|
/* action related functions */
|
||||||
|
extern UINT ACTION_PerformAction(MSIPACKAGE *package, const WCHAR *action, BOOL force);
|
||||||
|
extern UINT ACTION_PerformUIAction(MSIPACKAGE *package, const WCHAR *action);
|
||||||
|
extern void ACTION_FinishCustomActions( MSIPACKAGE* package);
|
||||||
|
extern UINT ACTION_CustomAction(MSIPACKAGE *package,const WCHAR *action, BOOL execute);
|
||||||
|
|
||||||
|
/* actions in other modules */
|
||||||
|
extern UINT ACTION_AppSearch(MSIPACKAGE *package);
|
||||||
|
extern UINT ACTION_FindRelatedProducts(MSIPACKAGE *package);
|
||||||
|
extern UINT ACTION_InstallFiles(MSIPACKAGE *package);
|
||||||
|
extern UINT ACTION_RemoveFiles(MSIPACKAGE *package);
|
||||||
|
extern UINT ACTION_DuplicateFiles(MSIPACKAGE *package);
|
||||||
|
extern UINT ACTION_RegisterClassInfo(MSIPACKAGE *package);
|
||||||
|
extern UINT ACTION_RegisterProgIdInfo(MSIPACKAGE *package);
|
||||||
|
extern UINT ACTION_RegisterExtensionInfo(MSIPACKAGE *package);
|
||||||
|
extern UINT ACTION_RegisterMIMEInfo(MSIPACKAGE *package);
|
||||||
|
extern UINT ACTION_RegisterFonts(MSIPACKAGE *package);
|
||||||
|
|
||||||
|
/* Helpers */
|
||||||
|
extern DWORD deformat_string(MSIPACKAGE *package, LPCWSTR ptr, WCHAR** data );
|
||||||
|
extern LPWSTR msi_dup_record_field(MSIRECORD *row, INT index);
|
||||||
|
extern LPWSTR msi_dup_property(MSIPACKAGE *package, LPCWSTR prop);
|
||||||
|
extern int msi_get_property_int( MSIPACKAGE *package, LPCWSTR prop, int def );
|
||||||
|
extern LPWSTR resolve_folder(MSIPACKAGE *package, LPCWSTR name, BOOL source,
|
||||||
|
BOOL set_prop, MSIFOLDER **folder);
|
||||||
|
extern MSICOMPONENT *get_loaded_component( MSIPACKAGE* package, LPCWSTR Component );
|
||||||
|
extern MSIFEATURE *get_loaded_feature( MSIPACKAGE* package, LPCWSTR Feature );
|
||||||
|
extern MSIFILE *get_loaded_file( MSIPACKAGE* package, LPCWSTR file );
|
||||||
|
extern MSIFOLDER *get_loaded_folder( MSIPACKAGE *package, LPCWSTR dir );
|
||||||
|
extern int track_tempfile(MSIPACKAGE *package, LPCWSTR name, LPCWSTR path);
|
||||||
|
extern UINT schedule_action(MSIPACKAGE *package, UINT script, LPCWSTR action);
|
||||||
|
extern LPWSTR build_icon_path(MSIPACKAGE *, LPCWSTR);
|
||||||
|
extern LPWSTR build_directory_name(DWORD , ...);
|
||||||
|
extern BOOL create_full_pathW(const WCHAR *path);
|
||||||
|
extern BOOL ACTION_VerifyComponentForAction(MSICOMPONENT*, INSTALLSTATE);
|
||||||
|
extern BOOL ACTION_VerifyFeatureForAction(MSIFEATURE*, INSTALLSTATE);
|
||||||
|
extern void reduce_to_longfilename(WCHAR*);
|
||||||
|
extern void reduce_to_shortfilename(WCHAR*);
|
||||||
|
extern LPWSTR create_component_advertise_string(MSIPACKAGE*, MSICOMPONENT*, LPCWSTR);
|
||||||
|
extern void ACTION_UpdateComponentStates(MSIPACKAGE *package, LPCWSTR szFeature);
|
||||||
|
extern UINT register_unique_action(MSIPACKAGE *, LPCWSTR);
|
||||||
|
extern BOOL check_unique_action(MSIPACKAGE *, LPCWSTR);
|
||||||
|
extern WCHAR* generate_error_string(MSIPACKAGE *, UINT, DWORD, ... );
|
||||||
|
extern UINT msi_create_component_directories( MSIPACKAGE *package );
|
||||||
|
extern void msi_ui_error( DWORD msg_id, DWORD type );
|
||||||
|
|
||||||
|
/* control event stuff */
|
||||||
|
extern VOID ControlEvent_FireSubscribedEvent(MSIPACKAGE *package, LPCWSTR event,
|
||||||
|
MSIRECORD *data);
|
||||||
|
extern VOID ControlEvent_CleanupSubscriptions(MSIPACKAGE *package);
|
||||||
|
extern VOID ControlEvent_SubscribeToEvent(MSIPACKAGE *package, msi_dialog *dialog,
|
||||||
|
LPCWSTR event, LPCWSTR control, LPCWSTR attribute);
|
||||||
|
extern VOID ControlEvent_UnSubscribeToEvent( MSIPACKAGE *package, LPCWSTR event,
|
||||||
|
LPCWSTR control, LPCWSTR attribute );
|
||||||
|
|
||||||
|
/* User Interface messages from the actions */
|
||||||
|
extern void ui_progress(MSIPACKAGE *, int, int, int, int);
|
||||||
|
extern void ui_actiondata(MSIPACKAGE *, LPCWSTR, MSIRECORD *);
|
||||||
|
|
||||||
|
/* string consts use a number of places and defined in helpers.c*/
|
||||||
|
extern const WCHAR cszSourceDir[];
|
||||||
|
extern const WCHAR szProductCode[];
|
||||||
|
extern const WCHAR cszRootDrive[];
|
||||||
|
extern const WCHAR cszbs[];
|
||||||
|
|
||||||
/* memory allocation macro functions */
|
/* memory allocation macro functions */
|
||||||
static inline void *msi_alloc( size_t len )
|
static inline void *msi_alloc( size_t len )
|
||||||
{
|
{
|
||||||
|
|
|
@ -43,7 +43,6 @@
|
||||||
#include "msidefs.h"
|
#include "msidefs.h"
|
||||||
|
|
||||||
#include "msipriv.h"
|
#include "msipriv.h"
|
||||||
#include "action.h"
|
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(msi);
|
WINE_DEFAULT_DEBUG_CHANNEL(msi);
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,6 @@
|
||||||
#include "winver.h"
|
#include "winver.h"
|
||||||
#include "winuser.h"
|
#include "winuser.h"
|
||||||
#include "wine/unicode.h"
|
#include "wine/unicode.h"
|
||||||
#include "action.h"
|
|
||||||
#include "sddl.h"
|
#include "sddl.h"
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(msi);
|
WINE_DEFAULT_DEBUG_CHANNEL(msi);
|
||||||
|
|
|
@ -36,7 +36,6 @@
|
||||||
#include "msidefs.h"
|
#include "msidefs.h"
|
||||||
#include "msipriv.h"
|
#include "msipriv.h"
|
||||||
#include "winuser.h"
|
#include "winuser.h"
|
||||||
#include "action.h"
|
|
||||||
#include "wine/unicode.h"
|
#include "wine/unicode.h"
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(msi);
|
WINE_DEFAULT_DEBUG_CHANNEL(msi);
|
||||||
|
|
Loading…
Reference in New Issue