/* msi.c generated by valac 0.34.8, the Vala compiler
 * generated from msi.vala, do not modify */


#include <glib.h>
#include <glib-object.h>
#include "wixl.h"
#include <libmsi.h>
#include <stdlib.h>
#include <string.h>
#include <libcommon.h>
#include <gio/gio.h>
#include <config.h>
#include <gobject/gvaluecollector.h>

#define __g_list_free__g_object_unref0_0(var) ((var == NULL) ? NULL : (var = (_g_list_free__g_object_unref0_ (var), NULL)))
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))

#define WIXL_TYPE_MSI_TABLE_FILE_HASH (wixl_msi_table_file_hash_get_type ())
#define WIXL_MSI_TABLE_FILE_HASH(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_FILE_HASH, WixlMsiTableFileHash))
#define WIXL_MSI_TABLE_FILE_HASH_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_FILE_HASH, WixlMsiTableFileHashClass))
#define WIXL_IS_MSI_TABLE_FILE_HASH(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_FILE_HASH))
#define WIXL_IS_MSI_TABLE_FILE_HASH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_FILE_HASH))
#define WIXL_MSI_TABLE_FILE_HASH_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_FILE_HASH, WixlMsiTableFileHashClass))

typedef struct _WixlMsiTableFileHash WixlMsiTableFileHash;
typedef struct _WixlMsiTableFileHashClass WixlMsiTableFileHashClass;
typedef struct _WixlMsiTableFileHashPrivate WixlMsiTableFileHashPrivate;
#define _g_free0(var) (var = (g_free (var), NULL))

#define WIXL_TYPE_MSI_TABLE_ICON (wixl_msi_table_icon_get_type ())
#define WIXL_MSI_TABLE_ICON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_ICON, WixlMsiTableIcon))
#define WIXL_MSI_TABLE_ICON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_ICON, WixlMsiTableIconClass))
#define WIXL_IS_MSI_TABLE_ICON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_ICON))
#define WIXL_IS_MSI_TABLE_ICON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_ICON))
#define WIXL_MSI_TABLE_ICON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_ICON, WixlMsiTableIconClass))

typedef struct _WixlMsiTableIcon WixlMsiTableIcon;
typedef struct _WixlMsiTableIconClass WixlMsiTableIconClass;
typedef struct _WixlMsiTableIconPrivate WixlMsiTableIconPrivate;

#define WIXL_TYPE_MSI_TABLE_BINARY (wixl_msi_table_binary_get_type ())
#define WIXL_MSI_TABLE_BINARY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_BINARY, WixlMsiTableBinary))
#define WIXL_MSI_TABLE_BINARY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_BINARY, WixlMsiTableBinaryClass))
#define WIXL_IS_MSI_TABLE_BINARY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_BINARY))
#define WIXL_IS_MSI_TABLE_BINARY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_BINARY))
#define WIXL_MSI_TABLE_BINARY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_BINARY, WixlMsiTableBinaryClass))

typedef struct _WixlMsiTableBinary WixlMsiTableBinary;
typedef struct _WixlMsiTableBinaryClass WixlMsiTableBinaryClass;
typedef struct _WixlMsiTableBinaryPrivate WixlMsiTableBinaryPrivate;
#define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL)))
#define _wixl_msi_table_sequence_action_unref0(var) ((var == NULL) ? NULL : (var = (wixl_msi_table_sequence_action_unref (var), NULL)))
#define __g_list_free__wixl_msi_table_sequence_action_unref0_0(var) ((var == NULL) ? NULL : (var = (_g_list_free__wixl_msi_table_sequence_action_unref0_ (var), NULL)))
#define _g_list_free0(var) ((var == NULL) ? NULL : (var = (g_list_free (var), NULL)))
#define _wixl_msi_default_action_info_free0(var) ((var == NULL) ? NULL : (var = (wixl_msi_default_action_info_free (var), NULL)))
typedef struct _WixlMsiTableSequenceParamSpecAction WixlMsiTableSequenceParamSpecAction;

#define WIXL_TYPE_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE (wixl_msi_table_admin_execute_sequence_get_type ())
#define WIXL_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE, WixlMsiTableAdminExecuteSequence))
#define WIXL_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE, WixlMsiTableAdminExecuteSequenceClass))
#define WIXL_IS_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE))
#define WIXL_IS_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE))
#define WIXL_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE, WixlMsiTableAdminExecuteSequenceClass))

typedef struct _WixlMsiTableAdminExecuteSequence WixlMsiTableAdminExecuteSequence;
typedef struct _WixlMsiTableAdminExecuteSequenceClass WixlMsiTableAdminExecuteSequenceClass;
typedef struct _WixlMsiTableAdminExecuteSequencePrivate WixlMsiTableAdminExecuteSequencePrivate;

#define WIXL_TYPE_MSI_TABLE_ADMIN_UI_SEQUENCE (wixl_msi_table_admin_ui_sequence_get_type ())
#define WIXL_MSI_TABLE_ADMIN_UI_SEQUENCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_ADMIN_UI_SEQUENCE, WixlMsiTableAdminUISequence))
#define WIXL_MSI_TABLE_ADMIN_UI_SEQUENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_ADMIN_UI_SEQUENCE, WixlMsiTableAdminUISequenceClass))
#define WIXL_IS_MSI_TABLE_ADMIN_UI_SEQUENCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_ADMIN_UI_SEQUENCE))
#define WIXL_IS_MSI_TABLE_ADMIN_UI_SEQUENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_ADMIN_UI_SEQUENCE))
#define WIXL_MSI_TABLE_ADMIN_UI_SEQUENCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_ADMIN_UI_SEQUENCE, WixlMsiTableAdminUISequenceClass))

typedef struct _WixlMsiTableAdminUISequence WixlMsiTableAdminUISequence;
typedef struct _WixlMsiTableAdminUISequenceClass WixlMsiTableAdminUISequenceClass;
typedef struct _WixlMsiTableAdminUISequencePrivate WixlMsiTableAdminUISequencePrivate;

#define WIXL_TYPE_MSI_TABLE_ADVT_EXECUTE_SEQUENCE (wixl_msi_table_advt_execute_sequence_get_type ())
#define WIXL_MSI_TABLE_ADVT_EXECUTE_SEQUENCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_ADVT_EXECUTE_SEQUENCE, WixlMsiTableAdvtExecuteSequence))
#define WIXL_MSI_TABLE_ADVT_EXECUTE_SEQUENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_ADVT_EXECUTE_SEQUENCE, WixlMsiTableAdvtExecuteSequenceClass))
#define WIXL_IS_MSI_TABLE_ADVT_EXECUTE_SEQUENCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_ADVT_EXECUTE_SEQUENCE))
#define WIXL_IS_MSI_TABLE_ADVT_EXECUTE_SEQUENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_ADVT_EXECUTE_SEQUENCE))
#define WIXL_MSI_TABLE_ADVT_EXECUTE_SEQUENCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_ADVT_EXECUTE_SEQUENCE, WixlMsiTableAdvtExecuteSequenceClass))

typedef struct _WixlMsiTableAdvtExecuteSequence WixlMsiTableAdvtExecuteSequence;
typedef struct _WixlMsiTableAdvtExecuteSequenceClass WixlMsiTableAdvtExecuteSequenceClass;
typedef struct _WixlMsiTableAdvtExecuteSequencePrivate WixlMsiTableAdvtExecuteSequencePrivate;

#define WIXL_TYPE_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE (wixl_msi_table_install_execute_sequence_get_type ())
#define WIXL_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE, WixlMsiTableInstallExecuteSequence))
#define WIXL_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE, WixlMsiTableInstallExecuteSequenceClass))
#define WIXL_IS_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE))
#define WIXL_IS_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE))
#define WIXL_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE, WixlMsiTableInstallExecuteSequenceClass))

typedef struct _WixlMsiTableInstallExecuteSequence WixlMsiTableInstallExecuteSequence;
typedef struct _WixlMsiTableInstallExecuteSequenceClass WixlMsiTableInstallExecuteSequenceClass;
typedef struct _WixlMsiTableInstallExecuteSequencePrivate WixlMsiTableInstallExecuteSequencePrivate;

#define WIXL_TYPE_MSI_TABLE_INSTALL_UI_SEQUENCE (wixl_msi_table_install_ui_sequence_get_type ())
#define WIXL_MSI_TABLE_INSTALL_UI_SEQUENCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_INSTALL_UI_SEQUENCE, WixlMsiTableInstallUISequence))
#define WIXL_MSI_TABLE_INSTALL_UI_SEQUENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_INSTALL_UI_SEQUENCE, WixlMsiTableInstallUISequenceClass))
#define WIXL_IS_MSI_TABLE_INSTALL_UI_SEQUENCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_INSTALL_UI_SEQUENCE))
#define WIXL_IS_MSI_TABLE_INSTALL_UI_SEQUENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_INSTALL_UI_SEQUENCE))
#define WIXL_MSI_TABLE_INSTALL_UI_SEQUENCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_INSTALL_UI_SEQUENCE, WixlMsiTableInstallUISequenceClass))

typedef struct _WixlMsiTableInstallUISequence WixlMsiTableInstallUISequence;
typedef struct _WixlMsiTableInstallUISequenceClass WixlMsiTableInstallUISequenceClass;
typedef struct _WixlMsiTableInstallUISequencePrivate WixlMsiTableInstallUISequencePrivate;

#define WIXL_TYPE_MSI_TABLE_ERROR (wixl_msi_table_error_get_type ())
#define WIXL_MSI_TABLE_ERROR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_ERROR, WixlMsiTableError))
#define WIXL_MSI_TABLE_ERROR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_ERROR, WixlMsiTableErrorClass))
#define WIXL_IS_MSI_TABLE_ERROR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_ERROR))
#define WIXL_IS_MSI_TABLE_ERROR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_ERROR))
#define WIXL_MSI_TABLE_ERROR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_ERROR, WixlMsiTableErrorClass))

typedef struct _WixlMsiTableError WixlMsiTableError;
typedef struct _WixlMsiTableErrorClass WixlMsiTableErrorClass;
typedef struct _WixlMsiTableErrorPrivate WixlMsiTableErrorPrivate;

#define WIXL_TYPE_MSI_TABLE_FILE (wixl_msi_table_file_get_type ())
#define WIXL_MSI_TABLE_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_FILE, WixlMsiTableFile))
#define WIXL_MSI_TABLE_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_FILE, WixlMsiTableFileClass))
#define WIXL_IS_MSI_TABLE_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_FILE))
#define WIXL_IS_MSI_TABLE_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_FILE))
#define WIXL_MSI_TABLE_FILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_FILE, WixlMsiTableFileClass))

typedef struct _WixlMsiTableFile WixlMsiTableFile;
typedef struct _WixlMsiTableFileClass WixlMsiTableFileClass;
typedef struct _WixlMsiTableFilePrivate WixlMsiTableFilePrivate;

#define WIXL_TYPE_MSI_TABLE_MEDIA (wixl_msi_table_media_get_type ())
#define WIXL_MSI_TABLE_MEDIA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_MEDIA, WixlMsiTableMedia))
#define WIXL_MSI_TABLE_MEDIA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_MEDIA, WixlMsiTableMediaClass))
#define WIXL_IS_MSI_TABLE_MEDIA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_MEDIA))
#define WIXL_IS_MSI_TABLE_MEDIA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_MEDIA))
#define WIXL_MSI_TABLE_MEDIA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_MEDIA, WixlMsiTableMediaClass))

typedef struct _WixlMsiTableMedia WixlMsiTableMedia;
typedef struct _WixlMsiTableMediaClass WixlMsiTableMediaClass;
typedef struct _WixlMsiTableMediaPrivate WixlMsiTableMediaPrivate;

#define WIXL_TYPE_MSI_TABLE_UPGRADE (wixl_msi_table_upgrade_get_type ())
#define WIXL_MSI_TABLE_UPGRADE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_UPGRADE, WixlMsiTableUpgrade))
#define WIXL_MSI_TABLE_UPGRADE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_UPGRADE, WixlMsiTableUpgradeClass))
#define WIXL_IS_MSI_TABLE_UPGRADE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_UPGRADE))
#define WIXL_IS_MSI_TABLE_UPGRADE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_UPGRADE))
#define WIXL_MSI_TABLE_UPGRADE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_UPGRADE, WixlMsiTableUpgradeClass))

typedef struct _WixlMsiTableUpgrade WixlMsiTableUpgrade;
typedef struct _WixlMsiTableUpgradeClass WixlMsiTableUpgradeClass;
typedef struct _WixlMsiTableUpgradePrivate WixlMsiTableUpgradePrivate;

#define WIXL_TYPE_MSI_TABLE_LAUNCH_CONDITION (wixl_msi_table_launch_condition_get_type ())
#define WIXL_MSI_TABLE_LAUNCH_CONDITION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_LAUNCH_CONDITION, WixlMsiTableLaunchCondition))
#define WIXL_MSI_TABLE_LAUNCH_CONDITION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_LAUNCH_CONDITION, WixlMsiTableLaunchConditionClass))
#define WIXL_IS_MSI_TABLE_LAUNCH_CONDITION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_LAUNCH_CONDITION))
#define WIXL_IS_MSI_TABLE_LAUNCH_CONDITION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_LAUNCH_CONDITION))
#define WIXL_MSI_TABLE_LAUNCH_CONDITION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_LAUNCH_CONDITION, WixlMsiTableLaunchConditionClass))

typedef struct _WixlMsiTableLaunchCondition WixlMsiTableLaunchCondition;
typedef struct _WixlMsiTableLaunchConditionClass WixlMsiTableLaunchConditionClass;
typedef struct _WixlMsiTableLaunchConditionPrivate WixlMsiTableLaunchConditionPrivate;

#define WIXL_TYPE_MSI_TABLE_PROPERTY (wixl_msi_table_property_get_type ())
#define WIXL_MSI_TABLE_PROPERTY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_PROPERTY, WixlMsiTableProperty))
#define WIXL_MSI_TABLE_PROPERTY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_PROPERTY, WixlMsiTablePropertyClass))
#define WIXL_IS_MSI_TABLE_PROPERTY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_PROPERTY))
#define WIXL_IS_MSI_TABLE_PROPERTY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_PROPERTY))
#define WIXL_MSI_TABLE_PROPERTY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_PROPERTY, WixlMsiTablePropertyClass))

typedef struct _WixlMsiTableProperty WixlMsiTableProperty;
typedef struct _WixlMsiTablePropertyClass WixlMsiTablePropertyClass;
typedef struct _WixlMsiTablePropertyPrivate WixlMsiTablePropertyPrivate;

#define WIXL_TYPE_MSI_TABLE_DIRECTORY (wixl_msi_table_directory_get_type ())
#define WIXL_MSI_TABLE_DIRECTORY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_DIRECTORY, WixlMsiTableDirectory))
#define WIXL_MSI_TABLE_DIRECTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_DIRECTORY, WixlMsiTableDirectoryClass))
#define WIXL_IS_MSI_TABLE_DIRECTORY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_DIRECTORY))
#define WIXL_IS_MSI_TABLE_DIRECTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_DIRECTORY))
#define WIXL_MSI_TABLE_DIRECTORY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_DIRECTORY, WixlMsiTableDirectoryClass))

typedef struct _WixlMsiTableDirectory WixlMsiTableDirectory;
typedef struct _WixlMsiTableDirectoryClass WixlMsiTableDirectoryClass;
typedef struct _WixlMsiTableDirectoryPrivate WixlMsiTableDirectoryPrivate;

#define WIXL_TYPE_MSI_TABLE_COMPONENT (wixl_msi_table_component_get_type ())
#define WIXL_MSI_TABLE_COMPONENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_COMPONENT, WixlMsiTableComponent))
#define WIXL_MSI_TABLE_COMPONENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_COMPONENT, WixlMsiTableComponentClass))
#define WIXL_IS_MSI_TABLE_COMPONENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_COMPONENT))
#define WIXL_IS_MSI_TABLE_COMPONENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_COMPONENT))
#define WIXL_MSI_TABLE_COMPONENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_COMPONENT, WixlMsiTableComponentClass))

typedef struct _WixlMsiTableComponent WixlMsiTableComponent;
typedef struct _WixlMsiTableComponentClass WixlMsiTableComponentClass;
typedef struct _WixlMsiTableComponentPrivate WixlMsiTableComponentPrivate;

#define WIXL_TYPE_MSI_TABLE_FEATURE_COMPONENTS (wixl_msi_table_feature_components_get_type ())
#define WIXL_MSI_TABLE_FEATURE_COMPONENTS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_FEATURE_COMPONENTS, WixlMsiTableFeatureComponents))
#define WIXL_MSI_TABLE_FEATURE_COMPONENTS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_FEATURE_COMPONENTS, WixlMsiTableFeatureComponentsClass))
#define WIXL_IS_MSI_TABLE_FEATURE_COMPONENTS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_FEATURE_COMPONENTS))
#define WIXL_IS_MSI_TABLE_FEATURE_COMPONENTS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_FEATURE_COMPONENTS))
#define WIXL_MSI_TABLE_FEATURE_COMPONENTS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_FEATURE_COMPONENTS, WixlMsiTableFeatureComponentsClass))

typedef struct _WixlMsiTableFeatureComponents WixlMsiTableFeatureComponents;
typedef struct _WixlMsiTableFeatureComponentsClass WixlMsiTableFeatureComponentsClass;
typedef struct _WixlMsiTableFeatureComponentsPrivate WixlMsiTableFeatureComponentsPrivate;

#define WIXL_TYPE_MSI_TABLE_REGISTRY (wixl_msi_table_registry_get_type ())
#define WIXL_MSI_TABLE_REGISTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_REGISTRY, WixlMsiTableRegistry))
#define WIXL_MSI_TABLE_REGISTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_REGISTRY, WixlMsiTableRegistryClass))
#define WIXL_IS_MSI_TABLE_REGISTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_REGISTRY))
#define WIXL_IS_MSI_TABLE_REGISTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_REGISTRY))
#define WIXL_MSI_TABLE_REGISTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_REGISTRY, WixlMsiTableRegistryClass))

typedef struct _WixlMsiTableRegistry WixlMsiTableRegistry;
typedef struct _WixlMsiTableRegistryClass WixlMsiTableRegistryClass;
typedef struct _WixlMsiTableRegistryPrivate WixlMsiTableRegistryPrivate;

#define WIXL_TYPE_MSI_TABLE_SHORTCUT (wixl_msi_table_shortcut_get_type ())
#define WIXL_MSI_TABLE_SHORTCUT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_SHORTCUT, WixlMsiTableShortcut))
#define WIXL_MSI_TABLE_SHORTCUT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_SHORTCUT, WixlMsiTableShortcutClass))
#define WIXL_IS_MSI_TABLE_SHORTCUT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_SHORTCUT))
#define WIXL_IS_MSI_TABLE_SHORTCUT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_SHORTCUT))
#define WIXL_MSI_TABLE_SHORTCUT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_SHORTCUT, WixlMsiTableShortcutClass))

typedef struct _WixlMsiTableShortcut WixlMsiTableShortcut;
typedef struct _WixlMsiTableShortcutClass WixlMsiTableShortcutClass;
typedef struct _WixlMsiTableShortcutPrivate WixlMsiTableShortcutPrivate;

#define WIXL_TYPE_MSI_TABLE_CREATE_FOLDER (wixl_msi_table_create_folder_get_type ())
#define WIXL_MSI_TABLE_CREATE_FOLDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_CREATE_FOLDER, WixlMsiTableCreateFolder))
#define WIXL_MSI_TABLE_CREATE_FOLDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_CREATE_FOLDER, WixlMsiTableCreateFolderClass))
#define WIXL_IS_MSI_TABLE_CREATE_FOLDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_CREATE_FOLDER))
#define WIXL_IS_MSI_TABLE_CREATE_FOLDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_CREATE_FOLDER))
#define WIXL_MSI_TABLE_CREATE_FOLDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_CREATE_FOLDER, WixlMsiTableCreateFolderClass))

typedef struct _WixlMsiTableCreateFolder WixlMsiTableCreateFolder;
typedef struct _WixlMsiTableCreateFolderClass WixlMsiTableCreateFolderClass;
typedef struct _WixlMsiTableCreateFolderPrivate WixlMsiTableCreateFolderPrivate;

#define WIXL_TYPE_MSI_TABLE_REMOVE_FILE (wixl_msi_table_remove_file_get_type ())
#define WIXL_MSI_TABLE_REMOVE_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_REMOVE_FILE, WixlMsiTableRemoveFile))
#define WIXL_MSI_TABLE_REMOVE_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_REMOVE_FILE, WixlMsiTableRemoveFileClass))
#define WIXL_IS_MSI_TABLE_REMOVE_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_REMOVE_FILE))
#define WIXL_IS_MSI_TABLE_REMOVE_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_REMOVE_FILE))
#define WIXL_MSI_TABLE_REMOVE_FILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_REMOVE_FILE, WixlMsiTableRemoveFileClass))

typedef struct _WixlMsiTableRemoveFile WixlMsiTableRemoveFile;
typedef struct _WixlMsiTableRemoveFileClass WixlMsiTableRemoveFileClass;
typedef struct _WixlMsiTableRemoveFilePrivate WixlMsiTableRemoveFilePrivate;

#define WIXL_TYPE_MSI_TABLE_FEATURE (wixl_msi_table_feature_get_type ())
#define WIXL_MSI_TABLE_FEATURE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_FEATURE, WixlMsiTableFeature))
#define WIXL_MSI_TABLE_FEATURE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_FEATURE, WixlMsiTableFeatureClass))
#define WIXL_IS_MSI_TABLE_FEATURE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_FEATURE))
#define WIXL_IS_MSI_TABLE_FEATURE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_FEATURE))
#define WIXL_MSI_TABLE_FEATURE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_FEATURE, WixlMsiTableFeatureClass))

typedef struct _WixlMsiTableFeature WixlMsiTableFeature;
typedef struct _WixlMsiTableFeatureClass WixlMsiTableFeatureClass;
typedef struct _WixlMsiTableFeaturePrivate WixlMsiTableFeaturePrivate;

#define WIXL_TYPE_MSI_TABLE_SERVICE_CONTROL (wixl_msi_table_service_control_get_type ())
#define WIXL_MSI_TABLE_SERVICE_CONTROL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_SERVICE_CONTROL, WixlMsiTableServiceControl))
#define WIXL_MSI_TABLE_SERVICE_CONTROL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_SERVICE_CONTROL, WixlMsiTableServiceControlClass))
#define WIXL_IS_MSI_TABLE_SERVICE_CONTROL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_SERVICE_CONTROL))
#define WIXL_IS_MSI_TABLE_SERVICE_CONTROL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_SERVICE_CONTROL))
#define WIXL_MSI_TABLE_SERVICE_CONTROL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_SERVICE_CONTROL, WixlMsiTableServiceControlClass))

typedef struct _WixlMsiTableServiceControl WixlMsiTableServiceControl;
typedef struct _WixlMsiTableServiceControlClass WixlMsiTableServiceControlClass;
typedef struct _WixlMsiTableServiceControlPrivate WixlMsiTableServiceControlPrivate;

#define WIXL_TYPE_MSI_TABLE_SERVICE_INSTALL (wixl_msi_table_service_install_get_type ())
#define WIXL_MSI_TABLE_SERVICE_INSTALL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_SERVICE_INSTALL, WixlMsiTableServiceInstall))
#define WIXL_MSI_TABLE_SERVICE_INSTALL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_SERVICE_INSTALL, WixlMsiTableServiceInstallClass))
#define WIXL_IS_MSI_TABLE_SERVICE_INSTALL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_SERVICE_INSTALL))
#define WIXL_IS_MSI_TABLE_SERVICE_INSTALL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_SERVICE_INSTALL))
#define WIXL_MSI_TABLE_SERVICE_INSTALL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_SERVICE_INSTALL, WixlMsiTableServiceInstallClass))

typedef struct _WixlMsiTableServiceInstall WixlMsiTableServiceInstall;
typedef struct _WixlMsiTableServiceInstallClass WixlMsiTableServiceInstallClass;
typedef struct _WixlMsiTableServiceInstallPrivate WixlMsiTableServiceInstallPrivate;

#define WIXL_TYPE_MSI_TABLE_SIGNATURE (wixl_msi_table_signature_get_type ())
#define WIXL_MSI_TABLE_SIGNATURE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_SIGNATURE, WixlMsiTableSignature))
#define WIXL_MSI_TABLE_SIGNATURE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_SIGNATURE, WixlMsiTableSignatureClass))
#define WIXL_IS_MSI_TABLE_SIGNATURE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_SIGNATURE))
#define WIXL_IS_MSI_TABLE_SIGNATURE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_SIGNATURE))
#define WIXL_MSI_TABLE_SIGNATURE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_SIGNATURE, WixlMsiTableSignatureClass))

typedef struct _WixlMsiTableSignature WixlMsiTableSignature;
typedef struct _WixlMsiTableSignatureClass WixlMsiTableSignatureClass;
typedef struct _WixlMsiTableSignaturePrivate WixlMsiTableSignaturePrivate;

#define WIXL_TYPE_MSI_TABLE_APP_SEARCH (wixl_msi_table_app_search_get_type ())
#define WIXL_MSI_TABLE_APP_SEARCH(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_APP_SEARCH, WixlMsiTableAppSearch))
#define WIXL_MSI_TABLE_APP_SEARCH_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_APP_SEARCH, WixlMsiTableAppSearchClass))
#define WIXL_IS_MSI_TABLE_APP_SEARCH(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_APP_SEARCH))
#define WIXL_IS_MSI_TABLE_APP_SEARCH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_APP_SEARCH))
#define WIXL_MSI_TABLE_APP_SEARCH_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_APP_SEARCH, WixlMsiTableAppSearchClass))

typedef struct _WixlMsiTableAppSearch WixlMsiTableAppSearch;
typedef struct _WixlMsiTableAppSearchClass WixlMsiTableAppSearchClass;
typedef struct _WixlMsiTableAppSearchPrivate WixlMsiTableAppSearchPrivate;

#define WIXL_TYPE_MSI_TABLE_CUSTOM_ACTION (wixl_msi_table_custom_action_get_type ())
#define WIXL_MSI_TABLE_CUSTOM_ACTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_CUSTOM_ACTION, WixlMsiTableCustomAction))
#define WIXL_MSI_TABLE_CUSTOM_ACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_CUSTOM_ACTION, WixlMsiTableCustomActionClass))
#define WIXL_IS_MSI_TABLE_CUSTOM_ACTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_CUSTOM_ACTION))
#define WIXL_IS_MSI_TABLE_CUSTOM_ACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_CUSTOM_ACTION))
#define WIXL_MSI_TABLE_CUSTOM_ACTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_CUSTOM_ACTION, WixlMsiTableCustomActionClass))

typedef struct _WixlMsiTableCustomAction WixlMsiTableCustomAction;
typedef struct _WixlMsiTableCustomActionClass WixlMsiTableCustomActionClass;
typedef struct _WixlMsiTableCustomActionPrivate WixlMsiTableCustomActionPrivate;

#define WIXL_TYPE_MSI_TABLE_REG_LOCATOR (wixl_msi_table_reg_locator_get_type ())
#define WIXL_MSI_TABLE_REG_LOCATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_REG_LOCATOR, WixlMsiTableRegLocator))
#define WIXL_MSI_TABLE_REG_LOCATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_REG_LOCATOR, WixlMsiTableRegLocatorClass))
#define WIXL_IS_MSI_TABLE_REG_LOCATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_REG_LOCATOR))
#define WIXL_IS_MSI_TABLE_REG_LOCATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_REG_LOCATOR))
#define WIXL_MSI_TABLE_REG_LOCATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_REG_LOCATOR, WixlMsiTableRegLocatorClass))

typedef struct _WixlMsiTableRegLocator WixlMsiTableRegLocator;
typedef struct _WixlMsiTableRegLocatorClass WixlMsiTableRegLocatorClass;
typedef struct _WixlMsiTableRegLocatorPrivate WixlMsiTableRegLocatorPrivate;

#define WIXL_TYPE_MSI_TABLE_VALIDATION (wixl_msi_table_validation_get_type ())
#define WIXL_MSI_TABLE_VALIDATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_VALIDATION, WixlMsiTableValidation))
#define WIXL_MSI_TABLE_VALIDATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_VALIDATION, WixlMsiTableValidationClass))
#define WIXL_IS_MSI_TABLE_VALIDATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_VALIDATION))
#define WIXL_IS_MSI_TABLE_VALIDATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_VALIDATION))
#define WIXL_MSI_TABLE_VALIDATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_VALIDATION, WixlMsiTableValidationClass))

typedef struct _WixlMsiTableValidation WixlMsiTableValidation;
typedef struct _WixlMsiTableValidationClass WixlMsiTableValidationClass;
typedef struct _WixlMsiTableValidationPrivate WixlMsiTableValidationPrivate;

#define WIXL_TYPE_MSI_TABLE_STREAMS (wixl_msi_table_streams_get_type ())
#define WIXL_MSI_TABLE_STREAMS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_STREAMS, WixlMsiTableStreams))
#define WIXL_MSI_TABLE_STREAMS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_STREAMS, WixlMsiTableStreamsClass))
#define WIXL_IS_MSI_TABLE_STREAMS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_STREAMS))
#define WIXL_IS_MSI_TABLE_STREAMS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_STREAMS))
#define WIXL_MSI_TABLE_STREAMS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_STREAMS, WixlMsiTableStreamsClass))

typedef struct _WixlMsiTableStreams WixlMsiTableStreams;
typedef struct _WixlMsiTableStreamsClass WixlMsiTableStreamsClass;
typedef struct _WixlMsiTableStreamsPrivate WixlMsiTableStreamsPrivate;

#define WIXL_TYPE_MSI_SUMMARY_INFO (wixl_msi_summary_info_get_type ())
#define WIXL_MSI_SUMMARY_INFO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_SUMMARY_INFO, WixlMsiSummaryInfo))
#define WIXL_MSI_SUMMARY_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_SUMMARY_INFO, WixlMsiSummaryInfoClass))
#define WIXL_IS_MSI_SUMMARY_INFO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_SUMMARY_INFO))
#define WIXL_IS_MSI_SUMMARY_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_SUMMARY_INFO))
#define WIXL_MSI_SUMMARY_INFO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_SUMMARY_INFO, WixlMsiSummaryInfoClass))

typedef struct _WixlMsiSummaryInfo WixlMsiSummaryInfo;
typedef struct _WixlMsiSummaryInfoClass WixlMsiSummaryInfoClass;
typedef struct _WixlMsiSummaryInfoPrivate WixlMsiSummaryInfoPrivate;
#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))

#define WIXL_TYPE_MSI_DATABASE (wixl_msi_database_get_type ())
#define WIXL_MSI_DATABASE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_DATABASE, WixlMsiDatabase))
#define WIXL_MSI_DATABASE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_DATABASE, WixlMsiDatabaseClass))
#define WIXL_IS_MSI_DATABASE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_DATABASE))
#define WIXL_IS_MSI_DATABASE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_DATABASE))
#define WIXL_MSI_DATABASE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_DATABASE, WixlMsiDatabaseClass))

typedef struct _WixlMsiDatabase WixlMsiDatabase;
typedef struct _WixlMsiDatabaseClass WixlMsiDatabaseClass;
typedef struct _WixlMsiDatabasePrivate WixlMsiDatabasePrivate;

#define WIXL_TYPE_ARCH (wixl_arch_get_type ())

struct _WixlMsiTableFileHash {
	WixlMsiTable parent_instance;
	WixlMsiTableFileHashPrivate * priv;
};

struct _WixlMsiTableFileHashClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableIcon {
	WixlMsiTable parent_instance;
	WixlMsiTableIconPrivate * priv;
};

struct _WixlMsiTableIconClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableBinary {
	WixlMsiTable parent_instance;
	WixlMsiTableBinaryPrivate * priv;
};

struct _WixlMsiTableBinaryClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableSequencePrivate {
	GHashTable* actions;
};

struct _WixlMsiTableSequenceParamSpecAction {
	GParamSpec parent_instance;
};

struct _WixlMsiTableAdminExecuteSequence {
	WixlMsiTableSequence parent_instance;
	WixlMsiTableAdminExecuteSequencePrivate * priv;
};

struct _WixlMsiTableAdminExecuteSequenceClass {
	WixlMsiTableSequenceClass parent_class;
};

struct _WixlMsiTableAdminUISequence {
	WixlMsiTableSequence parent_instance;
	WixlMsiTableAdminUISequencePrivate * priv;
};

struct _WixlMsiTableAdminUISequenceClass {
	WixlMsiTableSequenceClass parent_class;
};

struct _WixlMsiTableAdvtExecuteSequence {
	WixlMsiTableSequence parent_instance;
	WixlMsiTableAdvtExecuteSequencePrivate * priv;
};

struct _WixlMsiTableAdvtExecuteSequenceClass {
	WixlMsiTableSequenceClass parent_class;
};

struct _WixlMsiTableInstallExecuteSequence {
	WixlMsiTableSequence parent_instance;
	WixlMsiTableInstallExecuteSequencePrivate * priv;
};

struct _WixlMsiTableInstallExecuteSequenceClass {
	WixlMsiTableSequenceClass parent_class;
};

struct _WixlMsiTableInstallUISequence {
	WixlMsiTableSequence parent_instance;
	WixlMsiTableInstallUISequencePrivate * priv;
};

struct _WixlMsiTableInstallUISequenceClass {
	WixlMsiTableSequenceClass parent_class;
};

struct _WixlMsiTableError {
	WixlMsiTable parent_instance;
	WixlMsiTableErrorPrivate * priv;
};

struct _WixlMsiTableErrorClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableFile {
	WixlMsiTable parent_instance;
	WixlMsiTableFilePrivate * priv;
};

struct _WixlMsiTableFileClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableMedia {
	WixlMsiTable parent_instance;
	WixlMsiTableMediaPrivate * priv;
};

struct _WixlMsiTableMediaClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableUpgrade {
	WixlMsiTable parent_instance;
	WixlMsiTableUpgradePrivate * priv;
};

struct _WixlMsiTableUpgradeClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableLaunchCondition {
	WixlMsiTable parent_instance;
	WixlMsiTableLaunchConditionPrivate * priv;
};

struct _WixlMsiTableLaunchConditionClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableProperty {
	WixlMsiTable parent_instance;
	WixlMsiTablePropertyPrivate * priv;
};

struct _WixlMsiTablePropertyClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableDirectory {
	WixlMsiTable parent_instance;
	WixlMsiTableDirectoryPrivate * priv;
};

struct _WixlMsiTableDirectoryClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableComponent {
	WixlMsiTable parent_instance;
	WixlMsiTableComponentPrivate * priv;
};

struct _WixlMsiTableComponentClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableFeatureComponents {
	WixlMsiTable parent_instance;
	WixlMsiTableFeatureComponentsPrivate * priv;
};

struct _WixlMsiTableFeatureComponentsClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableRegistry {
	WixlMsiTable parent_instance;
	WixlMsiTableRegistryPrivate * priv;
};

struct _WixlMsiTableRegistryClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableShortcut {
	WixlMsiTable parent_instance;
	WixlMsiTableShortcutPrivate * priv;
};

struct _WixlMsiTableShortcutClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableCreateFolder {
	WixlMsiTable parent_instance;
	WixlMsiTableCreateFolderPrivate * priv;
};

struct _WixlMsiTableCreateFolderClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableRemoveFile {
	WixlMsiTable parent_instance;
	WixlMsiTableRemoveFilePrivate * priv;
};

struct _WixlMsiTableRemoveFileClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableFeature {
	WixlMsiTable parent_instance;
	WixlMsiTableFeaturePrivate * priv;
};

struct _WixlMsiTableFeatureClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableServiceControl {
	WixlMsiTable parent_instance;
	WixlMsiTableServiceControlPrivate * priv;
};

struct _WixlMsiTableServiceControlClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableServiceInstall {
	WixlMsiTable parent_instance;
	WixlMsiTableServiceInstallPrivate * priv;
};

struct _WixlMsiTableServiceInstallClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableSignature {
	WixlMsiTable parent_instance;
	WixlMsiTableSignaturePrivate * priv;
};

struct _WixlMsiTableSignatureClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableAppSearch {
	WixlMsiTable parent_instance;
	WixlMsiTableAppSearchPrivate * priv;
};

struct _WixlMsiTableAppSearchClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableCustomAction {
	WixlMsiTable parent_instance;
	WixlMsiTableCustomActionPrivate * priv;
};

struct _WixlMsiTableCustomActionClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableRegLocator {
	WixlMsiTable parent_instance;
	WixlMsiTableRegLocatorPrivate * priv;
};

struct _WixlMsiTableRegLocatorClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableValidation {
	WixlMsiTable parent_instance;
	WixlMsiTableValidationPrivate * priv;
};

struct _WixlMsiTableValidationClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableStreams {
	WixlMsiTable parent_instance;
	WixlMsiTableStreamsPrivate * priv;
};

struct _WixlMsiTableStreamsClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiSummaryInfo {
	GObject parent_instance;
	WixlMsiSummaryInfoPrivate * priv;
	LibmsiSummaryInfo* properties;
};

struct _WixlMsiSummaryInfoClass {
	GObjectClass parent_class;
};

struct _WixlMsiDatabase {
	GObject parent_instance;
	WixlMsiDatabasePrivate * priv;
	WixlMsiSummaryInfo* info;
	WixlMsiTableProperty* table_property;
	WixlMsiTableIcon* table_icon;
	WixlMsiTableBinary* table_binary;
	WixlMsiTableMedia* table_media;
	WixlMsiTableDirectory* table_directory;
	WixlMsiTableComponent* table_component;
	WixlMsiTableFeature* table_feature;
	WixlMsiTableFeatureComponents* table_feature_components;
	WixlMsiTableRemoveFile* table_remove_file;
	WixlMsiTableRegistry* table_registry;
	WixlMsiTableServiceControl* table_service_control;
	WixlMsiTableServiceInstall* table_service_install;
	WixlMsiTableFile* table_file;
	WixlMsiTableAdminExecuteSequence* table_admin_execute_sequence;
	WixlMsiTableAdminUISequence* table_admin_ui_sequence;
	WixlMsiTableAdvtExecuteSequence* table_advt_execute_sequence;
	WixlMsiTableInstallExecuteSequence* table_install_execute_sequence;
	WixlMsiTableInstallUISequence* table_install_ui_sequence;
	WixlMsiTableStreams* table_streams;
	WixlMsiTableShortcut* table_shortcut;
	WixlMsiTableUpgrade* table_upgrade;
	WixlMsiTableLaunchCondition* table_launch_condition;
	WixlMsiTableAppSearch* table_app_search;
	WixlMsiTableCustomAction* table_custom_action;
	WixlMsiTableRegLocator* table_reg_locator;
	WixlMsiTableCreateFolder* table_create_folder;
	WixlMsiTableSignature* table_signature;
	WixlMsiTableFileHash* table_file_hash;
	GHashTable* tables;
};

struct _WixlMsiDatabaseClass {
	GObjectClass parent_class;
};

typedef enum  {
	WIXL_ARCH_X86 = 0,
	WIXL_ARCH_INTEL = 0,
	WIXL_ARCH_IA64 = 1,
	WIXL_ARCH_INTEL64 = 1,
	WIXL_ARCH_X64
} WixlArch;

struct _WixlMsiDatabasePrivate {
	WixlArch _arch;
};


static gpointer wixl_msi_table_parent_class = NULL;
static gpointer wixl_msi_table_file_hash_parent_class = NULL;
static gpointer wixl_msi_table_icon_parent_class = NULL;
static gpointer wixl_msi_table_binary_parent_class = NULL;
static gpointer wixl_msi_table_sequence_parent_class = NULL;
static gpointer wixl_msi_table_sequence_action_parent_class = NULL;
static gpointer wixl_msi_table_admin_execute_sequence_parent_class = NULL;
static gpointer wixl_msi_table_admin_ui_sequence_parent_class = NULL;
static gpointer wixl_msi_table_advt_execute_sequence_parent_class = NULL;
static gpointer wixl_msi_table_install_execute_sequence_parent_class = NULL;
static gpointer wixl_msi_table_install_ui_sequence_parent_class = NULL;
static gpointer wixl_msi_table_error_parent_class = NULL;
static gpointer wixl_msi_table_file_parent_class = NULL;
static gpointer wixl_msi_table_media_parent_class = NULL;
static gpointer wixl_msi_table_upgrade_parent_class = NULL;
static gpointer wixl_msi_table_launch_condition_parent_class = NULL;
static gpointer wixl_msi_table_property_parent_class = NULL;
static gpointer wixl_msi_table_directory_parent_class = NULL;
static gpointer wixl_msi_table_component_parent_class = NULL;
static gpointer wixl_msi_table_feature_components_parent_class = NULL;
static gpointer wixl_msi_table_registry_parent_class = NULL;
static gpointer wixl_msi_table_shortcut_parent_class = NULL;
static gpointer wixl_msi_table_create_folder_parent_class = NULL;
static gpointer wixl_msi_table_remove_file_parent_class = NULL;
static gpointer wixl_msi_table_feature_parent_class = NULL;
static gpointer wixl_msi_table_service_control_parent_class = NULL;
static gpointer wixl_msi_table_service_install_parent_class = NULL;
static gpointer wixl_msi_table_signature_parent_class = NULL;
static gpointer wixl_msi_table_app_search_parent_class = NULL;
static gpointer wixl_msi_table_custom_action_parent_class = NULL;
static gpointer wixl_msi_table_reg_locator_parent_class = NULL;
static gpointer wixl_msi_table_validation_parent_class = NULL;
static gpointer wixl_msi_table_streams_parent_class = NULL;
static gpointer wixl_msi_summary_info_parent_class = NULL;
static gpointer wixl_msi_database_parent_class = NULL;

enum  {
	WIXL_MSI_TABLE_DUMMY_PROPERTY
};
static void _g_object_unref0_ (gpointer var);
static void _g_list_free__g_object_unref0_ (GList* self);
static void wixl_msi_table_real_create (WixlMsiTable* self, LibmsiDatabase* db, GError** error);
static void wixl_msi_table_finalize (GObject* obj);
GType wixl_msi_table_file_hash_get_type (void) G_GNUC_CONST;
enum  {
	WIXL_MSI_TABLE_FILE_HASH_DUMMY_PROPERTY
};
void wixl_msi_table_file_hash_add (WixlMsiTableFileHash* self, const gchar* file, gint hash1, gint hash2, gint hash3, gint hash4, gint* options, GError** error);
void wixl_msi_table_file_hash_add_with_file (WixlMsiTableFileHash* self, const gchar* FileId, GFile* file, GError** error);
WixlMsiTableFileHash* wixl_msi_table_file_hash_new (void);
WixlMsiTableFileHash* wixl_msi_table_file_hash_construct (GType object_type);
GType wixl_msi_table_icon_get_type (void) G_GNUC_CONST;
enum  {
	WIXL_MSI_TABLE_ICON_DUMMY_PROPERTY
};
void wixl_msi_table_icon_add (WixlMsiTableIcon* self, const gchar* id, const gchar* filename, GError** error);
WixlMsiTableIcon* wixl_msi_table_icon_new (void);
WixlMsiTableIcon* wixl_msi_table_icon_construct (GType object_type);
GType wixl_msi_table_binary_get_type (void) G_GNUC_CONST;
enum  {
	WIXL_MSI_TABLE_BINARY_DUMMY_PROPERTY
};
void wixl_msi_table_binary_add (WixlMsiTableBinary* self, const gchar* id, const gchar* filename, GError** error);
WixlMsiTableBinary* wixl_msi_table_binary_new (void);
WixlMsiTableBinary* wixl_msi_table_binary_construct (GType object_type);
#define WIXL_MSI_TABLE_SEQUENCE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), WIXL_TYPE_MSI_TABLE_SEQUENCE, WixlMsiTableSequencePrivate))
enum  {
	WIXL_MSI_TABLE_SEQUENCE_DUMMY_PROPERTY
};
static void _g_free0_ (gpointer var);
static void _wixl_msi_table_sequence_action_unref0_ (gpointer var);
static void wixl_msi_table_sequence_add (WixlMsiTableSequence* self, const gchar* action, const gchar* condition, gint sequence, GError** error);
static void wixl_msi_table_sequence_sort_topological_visit (WixlMsiTableSequence* self, WixlMsiTableSequenceAction* action, GList** sorted);
static GList* wixl_msi_table_sequence_sort_topological (WixlMsiTableSequence* self);
static void _g_list_free__wixl_msi_table_sequence_action_unref0_ (GList* self);
static void wixl_msi_table_sequence_add_implicit_deps (WixlMsiTableSequence* self);
static gint __lambda4_ (WixlMsiTableSequenceAction* a, WixlMsiTableSequenceAction* b);
static gint ___lambda4__gcompare_func (gconstpointer a, gconstpointer b);
enum  {
	WIXL_MSI_TABLE_SEQUENCE_ACTION_DUMMY_PROPERTY
};
static void wixl_msi_table_sequence_action_finalize (WixlMsiTableSequenceAction* obj);
static void wixl_msi_table_sequence_finalize (GObject* obj);
GType wixl_msi_table_admin_execute_sequence_get_type (void) G_GNUC_CONST;
enum  {
	WIXL_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE_DUMMY_PROPERTY
};
WixlMsiTableAdminExecuteSequence* wixl_msi_table_admin_execute_sequence_new (void);
WixlMsiTableAdminExecuteSequence* wixl_msi_table_admin_execute_sequence_construct (GType object_type);
GType wixl_msi_table_admin_ui_sequence_get_type (void) G_GNUC_CONST;
enum  {
	WIXL_MSI_TABLE_ADMIN_UI_SEQUENCE_DUMMY_PROPERTY
};
WixlMsiTableAdminUISequence* wixl_msi_table_admin_ui_sequence_new (void);
WixlMsiTableAdminUISequence* wixl_msi_table_admin_ui_sequence_construct (GType object_type);
GType wixl_msi_table_advt_execute_sequence_get_type (void) G_GNUC_CONST;
enum  {
	WIXL_MSI_TABLE_ADVT_EXECUTE_SEQUENCE_DUMMY_PROPERTY
};
WixlMsiTableAdvtExecuteSequence* wixl_msi_table_advt_execute_sequence_new (void);
WixlMsiTableAdvtExecuteSequence* wixl_msi_table_advt_execute_sequence_construct (GType object_type);
GType wixl_msi_table_install_execute_sequence_get_type (void) G_GNUC_CONST;
enum  {
	WIXL_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE_DUMMY_PROPERTY
};
WixlMsiTableInstallExecuteSequence* wixl_msi_table_install_execute_sequence_new (void);
WixlMsiTableInstallExecuteSequence* wixl_msi_table_install_execute_sequence_construct (GType object_type);
GType wixl_msi_table_install_ui_sequence_get_type (void) G_GNUC_CONST;
enum  {
	WIXL_MSI_TABLE_INSTALL_UI_SEQUENCE_DUMMY_PROPERTY
};
WixlMsiTableInstallUISequence* wixl_msi_table_install_ui_sequence_new (void);
WixlMsiTableInstallUISequence* wixl_msi_table_install_ui_sequence_construct (GType object_type);
GType wixl_msi_table_error_get_type (void) G_GNUC_CONST;
enum  {
	WIXL_MSI_TABLE_ERROR_DUMMY_PROPERTY
};
WixlMsiTableError* wixl_msi_table_error_new (void);
WixlMsiTableError* wixl_msi_table_error_construct (GType object_type);
GType wixl_msi_table_file_get_type (void) G_GNUC_CONST;
enum  {
	WIXL_MSI_TABLE_FILE_DUMMY_PROPERTY
};
LibmsiRecord* wixl_msi_table_file_add (WixlMsiTableFile* self, const gchar* File, const gchar* Component, const gchar* FileName, gint FileSize, gint Attributes, gint Sequence, GError** error);
gboolean wixl_msi_table_file_set_sequence (LibmsiRecord* rec, gint Sequence);
WixlMsiTableFile* wixl_msi_table_file_new (void);
WixlMsiTableFile* wixl_msi_table_file_construct (GType object_type);
GType wixl_msi_table_media_get_type (void) G_GNUC_CONST;
enum  {
	WIXL_MSI_TABLE_MEDIA_DUMMY_PROPERTY
};
gboolean wixl_msi_table_media_set_last_sequence (WixlMsiTableMedia* self, LibmsiRecord* rec, gint last_sequence);
LibmsiRecord* wixl_msi_table_media_add (WixlMsiTableMedia* self, const gchar* DiskId, const gchar* DiskPrompt, const gchar* Cabinet, GError** error);
WixlMsiTableMedia* wixl_msi_table_media_new (void);
WixlMsiTableMedia* wixl_msi_table_media_construct (GType object_type);
GType wixl_msi_table_upgrade_get_type (void) G_GNUC_CONST;
enum  {
	WIXL_MSI_TABLE_UPGRADE_DUMMY_PROPERTY
};
void wixl_msi_table_upgrade_add (WixlMsiTableUpgrade* self, const gchar* UpgradeCode, const gchar* VersionMin, const gchar* VersionMax, gint Attributes, const gchar* ActionProperty, GError** error);
WixlMsiTableUpgrade* wixl_msi_table_upgrade_new (void);
WixlMsiTableUpgrade* wixl_msi_table_upgrade_construct (GType object_type);
GType wixl_msi_table_launch_condition_get_type (void) G_GNUC_CONST;
enum  {
	WIXL_MSI_TABLE_LAUNCH_CONDITION_DUMMY_PROPERTY
};
void wixl_msi_table_launch_condition_add (WixlMsiTableLaunchCondition* self, const gchar* condition, const gchar* description, GError** error);
WixlMsiTableLaunchCondition* wixl_msi_table_launch_condition_new (void);
WixlMsiTableLaunchCondition* wixl_msi_table_launch_condition_construct (GType object_type);
GType wixl_msi_table_property_get_type (void) G_GNUC_CONST;
enum  {
	WIXL_MSI_TABLE_PROPERTY_DUMMY_PROPERTY
};
void wixl_msi_table_property_add (WixlMsiTableProperty* self, const gchar* prop, const gchar* value, GError** error);
WixlMsiTableProperty* wixl_msi_table_property_new (void);
WixlMsiTableProperty* wixl_msi_table_property_construct (GType object_type);
GType wixl_msi_table_directory_get_type (void) G_GNUC_CONST;
enum  {
	WIXL_MSI_TABLE_DIRECTORY_DUMMY_PROPERTY
};
void wixl_msi_table_directory_add (WixlMsiTableDirectory* self, const gchar* Directory, const gchar* Parent, const gchar* DefaultDir, GError** error);
WixlMsiTableDirectory* wixl_msi_table_directory_new (void);
WixlMsiTableDirectory* wixl_msi_table_directory_construct (GType object_type);
GType wixl_msi_table_component_get_type (void) G_GNUC_CONST;
enum  {
	WIXL_MSI_TABLE_COMPONENT_DUMMY_PROPERTY
};
void wixl_msi_table_component_add (WixlMsiTableComponent* self, const gchar* Component, const gchar* ComponentId, const gchar* Directory, gint Attributes, const gchar* KeyPath, GError** error);
WixlMsiTableComponent* wixl_msi_table_component_new (void);
WixlMsiTableComponent* wixl_msi_table_component_construct (GType object_type);
GType wixl_msi_table_feature_components_get_type (void) G_GNUC_CONST;
enum  {
	WIXL_MSI_TABLE_FEATURE_COMPONENTS_DUMMY_PROPERTY
};
void wixl_msi_table_feature_components_add (WixlMsiTableFeatureComponents* self, const gchar* Feature, const gchar* Component, GError** error);
WixlMsiTableFeatureComponents* wixl_msi_table_feature_components_new (void);
WixlMsiTableFeatureComponents* wixl_msi_table_feature_components_construct (GType object_type);
GType wixl_msi_table_registry_get_type (void) G_GNUC_CONST;
enum  {
	WIXL_MSI_TABLE_REGISTRY_DUMMY_PROPERTY
};
void wixl_msi_table_registry_add (WixlMsiTableRegistry* self, const gchar* Registry, gint Root, const gchar* Key, const gchar* Component, const gchar* Name, const gchar* Value, GError** error);
WixlMsiTableRegistry* wixl_msi_table_registry_new (void);
WixlMsiTableRegistry* wixl_msi_table_registry_construct (GType object_type);
GType wixl_msi_table_shortcut_get_type (void) G_GNUC_CONST;
enum  {
	WIXL_MSI_TABLE_SHORTCUT_DUMMY_PROPERTY
};
LibmsiRecord* wixl_msi_table_shortcut_add (WixlMsiTableShortcut* self, const gchar* Shortcut, const gchar* Directory, const gchar* Name, const gchar* Component, GError** error);
void wixl_msi_table_shortcut_set_target (LibmsiRecord* rec, const gchar* Target, GError** error);
void wixl_msi_table_shortcut_set_icon (LibmsiRecord* rec, const gchar* Icon, GError** error);
void wixl_msi_table_shortcut_set_icon_index (LibmsiRecord* rec, gint IconIndex, GError** error);
void wixl_msi_table_shortcut_set_working_dir (LibmsiRecord* rec, const gchar* WkDir, GError** error);
void wixl_msi_table_shortcut_set_description (LibmsiRecord* rec, const gchar* Description, GError** error);
WixlMsiTableShortcut* wixl_msi_table_shortcut_new (void);
WixlMsiTableShortcut* wixl_msi_table_shortcut_construct (GType object_type);
GType wixl_msi_table_create_folder_get_type (void) G_GNUC_CONST;
enum  {
	WIXL_MSI_TABLE_CREATE_FOLDER_DUMMY_PROPERTY
};
void wixl_msi_table_create_folder_add (WixlMsiTableCreateFolder* self, const gchar* Directory, const gchar* Component, GError** error);
WixlMsiTableCreateFolder* wixl_msi_table_create_folder_new (void);
WixlMsiTableCreateFolder* wixl_msi_table_create_folder_construct (GType object_type);
GType wixl_msi_table_remove_file_get_type (void) G_GNUC_CONST;
enum  {
	WIXL_MSI_TABLE_REMOVE_FILE_DUMMY_PROPERTY
};
void wixl_msi_table_remove_file_add (WixlMsiTableRemoveFile* self, const gchar* FileKey, const gchar* Component, const gchar* DirProperty, gint InstallMode, GError** error);
WixlMsiTableRemoveFile* wixl_msi_table_remove_file_new (void);
WixlMsiTableRemoveFile* wixl_msi_table_remove_file_construct (GType object_type);
GType wixl_msi_table_feature_get_type (void) G_GNUC_CONST;
enum  {
	WIXL_MSI_TABLE_FEATURE_DUMMY_PROPERTY
};
void wixl_msi_table_feature_add (WixlMsiTableFeature* self, const gchar* Feature, gint Display, gint Level, gint Attributes, const gchar* Parent, const gchar* Title, const gchar* Description, const gchar* ConfigurableDirectory, GError** error);
WixlMsiTableFeature* wixl_msi_table_feature_new (void);
WixlMsiTableFeature* wixl_msi_table_feature_construct (GType object_type);
GType wixl_msi_table_service_control_get_type (void) G_GNUC_CONST;
enum  {
	WIXL_MSI_TABLE_SERVICE_CONTROL_DUMMY_PROPERTY
};
void wixl_msi_table_service_control_add (WixlMsiTableServiceControl* self, const gchar* ServiceControl, const gchar* Name, gint Event, const gchar* Arguments, gboolean* Wait, const gchar* Component, GError** error);
WixlMsiTableServiceControl* wixl_msi_table_service_control_new (void);
WixlMsiTableServiceControl* wixl_msi_table_service_control_construct (GType object_type);
GType wixl_msi_table_service_install_get_type (void) G_GNUC_CONST;
enum  {
	WIXL_MSI_TABLE_SERVICE_INSTALL_DUMMY_PROPERTY
};
void wixl_msi_table_service_install_add (WixlMsiTableServiceInstall* self, const gchar* ServiceInstall, const gchar* Name, const gchar* DisplayName, gint ServiceType, gint StartType, gint ErrorControl, const gchar* LoadOrderGroup, const gchar* Dependencies, const gchar* StartName, const gchar* Password, const gchar* Arguments, const gchar* Component, const gchar* Description, GError** error);
WixlMsiTableServiceInstall* wixl_msi_table_service_install_new (void);
WixlMsiTableServiceInstall* wixl_msi_table_service_install_construct (GType object_type);
GType wixl_msi_table_signature_get_type (void) G_GNUC_CONST;
enum  {
	WIXL_MSI_TABLE_SIGNATURE_DUMMY_PROPERTY
};
WixlMsiTableSignature* wixl_msi_table_signature_new (void);
WixlMsiTableSignature* wixl_msi_table_signature_construct (GType object_type);
GType wixl_msi_table_app_search_get_type (void) G_GNUC_CONST;
enum  {
	WIXL_MSI_TABLE_APP_SEARCH_DUMMY_PROPERTY
};
void wixl_msi_table_app_search_add (WixlMsiTableAppSearch* self, const gchar* Property, const gchar* Signature, GError** error);
WixlMsiTableAppSearch* wixl_msi_table_app_search_new (void);
WixlMsiTableAppSearch* wixl_msi_table_app_search_construct (GType object_type);
GType wixl_msi_table_custom_action_get_type (void) G_GNUC_CONST;
enum  {
	WIXL_MSI_TABLE_CUSTOM_ACTION_DUMMY_PROPERTY
};
void wixl_msi_table_custom_action_add (WixlMsiTableCustomAction* self, const gchar* Action, gint Type, const gchar* Source, const gchar* Target, gint* ExtendedType, GError** error);
WixlMsiTableCustomAction* wixl_msi_table_custom_action_new (void);
WixlMsiTableCustomAction* wixl_msi_table_custom_action_construct (GType object_type);
GType wixl_msi_table_reg_locator_get_type (void) G_GNUC_CONST;
enum  {
	WIXL_MSI_TABLE_REG_LOCATOR_DUMMY_PROPERTY
};
void wixl_msi_table_reg_locator_add (WixlMsiTableRegLocator* self, const gchar* Signature, gint Root, const gchar* Key, const gchar* Name, gint Type, GError** error);
WixlMsiTableRegLocator* wixl_msi_table_reg_locator_new (void);
WixlMsiTableRegLocator* wixl_msi_table_reg_locator_construct (GType object_type);
GType wixl_msi_table_validation_get_type (void) G_GNUC_CONST;
enum  {
	WIXL_MSI_TABLE_VALIDATION_DUMMY_PROPERTY
};
static void wixl_msi_table_validation_real_create (WixlMsiTable* base, LibmsiDatabase* db, GError** error);
WixlMsiTableValidation* wixl_msi_table_validation_new (void);
WixlMsiTableValidation* wixl_msi_table_validation_construct (GType object_type);
GType wixl_msi_table_streams_get_type (void) G_GNUC_CONST;
enum  {
	WIXL_MSI_TABLE_STREAMS_DUMMY_PROPERTY
};
void wixl_msi_table_streams_add (WixlMsiTableStreams* self, const gchar* name, GInputStream* input, gsize count, GError** error);
static void wixl_msi_table_streams_real_create (WixlMsiTable* base, LibmsiDatabase* db, GError** error);
WixlMsiTableStreams* wixl_msi_table_streams_new (void);
WixlMsiTableStreams* wixl_msi_table_streams_construct (GType object_type);
GType wixl_msi_summary_info_get_type (void) G_GNUC_CONST;
enum  {
	WIXL_MSI_SUMMARY_INFO_DUMMY_PROPERTY
};
WixlMsiSummaryInfo* wixl_msi_summary_info_new (void);
WixlMsiSummaryInfo* wixl_msi_summary_info_construct (GType object_type);
void wixl_msi_summary_info_set_property (WixlMsiSummaryInfo* self, LibmsiProperty prop, GValue* value, GError** error);
void wixl_msi_summary_info_save (WixlMsiSummaryInfo* self, LibmsiDatabase* db, GError** error);
void wixl_msi_summary_info_set_codepage (WixlMsiSummaryInfo* self, gint value, GError** error);
void wixl_msi_summary_info_set_author (WixlMsiSummaryInfo* self, const gchar* value, GError** error);
void wixl_msi_summary_info_set_keywords (WixlMsiSummaryInfo* self, const gchar* value, GError** error);
void wixl_msi_summary_info_set_subject (WixlMsiSummaryInfo* self, const gchar* value, GError** error);
gchar* wixl_msi_summary_info_get_subject (WixlMsiSummaryInfo* self);
void wixl_msi_summary_info_set_comments (WixlMsiSummaryInfo* self, const gchar* value, GError** error);
gchar* wixl_msi_summary_info_get_comments (WixlMsiSummaryInfo* self);
static GObject * wixl_msi_summary_info_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties);
static void wixl_msi_summary_info_finalize (GObject* obj);
GType wixl_msi_database_get_type (void) G_GNUC_CONST;
GType wixl_arch_get_type (void) G_GNUC_CONST;
#define WIXL_MSI_DATABASE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), WIXL_TYPE_MSI_DATABASE, WixlMsiDatabasePrivate))
enum  {
	WIXL_MSI_DATABASE_DUMMY_PROPERTY,
	WIXL_MSI_DATABASE_ARCH
};
static gint wixl_msi_database_get_default_version (WixlMsiDatabase* self);
WixlArch wixl_msi_database_get_arch (WixlMsiDatabase* self);
static gchar* wixl_msi_database_get_arch_template (WixlMsiDatabase* self);
WixlMsiDatabase* wixl_msi_database_new (WixlArch arch);
WixlMsiDatabase* wixl_msi_database_construct (GType object_type, WixlArch arch);
void wixl_msi_database_build (WixlMsiDatabase* self, const gchar* filename, GError** error);
void wixl_msi_database_set_arch (WixlMsiDatabase* self, WixlArch value);
static GObject * wixl_msi_database_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties);
static void wixl_msi_database_finalize (GObject* obj);
static void _vala_wixl_msi_database_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
static void _vala_wixl_msi_database_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec);
static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func);
static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func);


static void _g_object_unref0_ (gpointer var) {
	(var == NULL) ? NULL : (var = (g_object_unref (var), NULL));
}


static void _g_list_free__g_object_unref0_ (GList* self) {
	g_list_foreach (self, (GFunc) _g_object_unref0_, NULL);
	g_list_free (self);
}


static gpointer _g_object_ref0 (gpointer self) {
	return self ? g_object_ref (self) : NULL;
}


static void wixl_msi_table_real_create (WixlMsiTable* self, LibmsiDatabase* db, GError** error) {
	LibmsiQuery* query = NULL;
	LibmsiDatabase* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
	LibmsiQuery* _tmp2_ = NULL;
	LibmsiQuery* _tmp3_ = NULL;
	const gchar* _tmp4_ = NULL;
	LibmsiQuery* _tmp5_ = NULL;
	LibmsiDatabase* _tmp6_ = NULL;
	const gchar* _tmp7_ = NULL;
	LibmsiQuery* _tmp8_ = NULL;
	LibmsiQuery* _tmp9_ = NULL;
	GList* _tmp10_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_if_fail (db != NULL);
	_tmp0_ = db;
	_tmp1_ = WIXL_MSI_TABLE_CLASS (G_OBJECT_GET_CLASS (self))->sql_create;
	_tmp2_ = libmsi_query_new (_tmp0_, _tmp1_, &_inner_error_);
	query = _tmp2_;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		return;
	}
	_tmp3_ = query;
	libmsi_query_execute (_tmp3_, NULL, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (query);
		return;
	}
	_tmp4_ = WIXL_MSI_TABLE_CLASS (G_OBJECT_GET_CLASS (self))->sql_insert;
	if (_tmp4_ == NULL) {
		_g_object_unref0 (query);
		return;
	}
	_tmp6_ = db;
	_tmp7_ = WIXL_MSI_TABLE_CLASS (G_OBJECT_GET_CLASS (self))->sql_insert;
	_tmp8_ = libmsi_query_new (_tmp6_, _tmp7_, &_inner_error_);
	_tmp5_ = _tmp8_;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (query);
		return;
	}
	_tmp9_ = _tmp5_;
	_tmp5_ = NULL;
	_g_object_unref0 (query);
	query = _tmp9_;
	_tmp10_ = self->records;
	{
		GList* r_collection = NULL;
		GList* r_it = NULL;
		r_collection = _tmp10_;
		for (r_it = r_collection; r_it != NULL; r_it = r_it->next) {
			LibmsiRecord* _tmp11_ = NULL;
			LibmsiRecord* r = NULL;
			_tmp11_ = _g_object_ref0 ((LibmsiRecord*) r_it->data);
			r = _tmp11_;
			{
				LibmsiQuery* _tmp12_ = NULL;
				LibmsiRecord* _tmp13_ = NULL;
				_tmp12_ = query;
				_tmp13_ = r;
				libmsi_query_execute (_tmp12_, _tmp13_, &_inner_error_);
				if (G_UNLIKELY (_inner_error_ != NULL)) {
					g_propagate_error (error, _inner_error_);
					_g_object_unref0 (r);
					_g_object_unref0 (_tmp5_);
					_g_object_unref0 (query);
					return;
				}
				_g_object_unref0 (r);
			}
		}
	}
	_g_object_unref0 (_tmp5_);
	_g_object_unref0 (query);
}


void wixl_msi_table_create (WixlMsiTable* self, LibmsiDatabase* db, GError** error) {
	g_return_if_fail (self != NULL);
	WIXL_MSI_TABLE_GET_CLASS (self)->create (self, db, error);
}


WixlMsiTable* wixl_msi_table_construct (GType object_type) {
	WixlMsiTable * self = NULL;
	self = (WixlMsiTable*) g_object_new (object_type, NULL);
	return self;
}


static void wixl_msi_table_class_init (WixlMsiTableClass * klass) {
	wixl_msi_table_parent_class = g_type_class_peek_parent (klass);
	((WixlMsiTableClass *) klass)->create = (void (*)(WixlMsiTable*, LibmsiDatabase*, GError**)) wixl_msi_table_real_create;
	G_OBJECT_CLASS (klass)->finalize = wixl_msi_table_finalize;
}


static void wixl_msi_table_instance_init (WixlMsiTable * self) {
}


static void wixl_msi_table_finalize (GObject* obj) {
	WixlMsiTable * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, WIXL_TYPE_MSI_TABLE, WixlMsiTable);
	__g_list_free__g_object_unref0_0 (self->records);
	G_OBJECT_CLASS (wixl_msi_table_parent_class)->finalize (obj);
}


GType wixl_msi_table_get_type (void) {
	static volatile gsize wixl_msi_table_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_table_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTable), 0, (GInstanceInitFunc) wixl_msi_table_instance_init, NULL };
		GType wixl_msi_table_type_id;
		wixl_msi_table_type_id = g_type_register_static (G_TYPE_OBJECT, "WixlMsiTable", &g_define_type_info, G_TYPE_FLAG_ABSTRACT);
		g_once_init_leave (&wixl_msi_table_type_id__volatile, wixl_msi_table_type_id);
	}
	return wixl_msi_table_type_id__volatile;
}


void wixl_msi_table_file_hash_add (WixlMsiTableFileHash* self, const gchar* file, gint hash1, gint hash2, gint hash3, gint hash4, gint* options, GError** error) {
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_ = NULL;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	gboolean _tmp5_ = FALSE;
	LibmsiRecord* _tmp6_ = NULL;
	const gchar* _tmp7_ = NULL;
	gboolean _tmp8_ = FALSE;
	LibmsiRecord* _tmp25_ = NULL;
	LibmsiRecord* _tmp26_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (file != NULL);
	_tmp0_ = libmsi_record_new ((guint) 6);
	rec = _tmp0_;
	_tmp6_ = rec;
	_tmp7_ = file;
	_tmp8_ = libmsi_record_set_string (_tmp6_, (guint) 1, _tmp7_);
	if (!_tmp8_) {
		_tmp5_ = TRUE;
	} else {
		LibmsiRecord* _tmp9_ = NULL;
		gint* _tmp10_ = NULL;
		gboolean _tmp11_ = FALSE;
		_tmp9_ = rec;
		_tmp10_ = options;
		_tmp11_ = libmsi_record_set_int (_tmp9_, (guint) 2, *_tmp10_);
		_tmp5_ = !_tmp11_;
	}
	if (_tmp5_) {
		_tmp4_ = TRUE;
	} else {
		LibmsiRecord* _tmp12_ = NULL;
		gint _tmp13_ = 0;
		gboolean _tmp14_ = FALSE;
		_tmp12_ = rec;
		_tmp13_ = hash1;
		_tmp14_ = libmsi_record_set_int (_tmp12_, (guint) 3, _tmp13_);
		_tmp4_ = !_tmp14_;
	}
	if (_tmp4_) {
		_tmp3_ = TRUE;
	} else {
		LibmsiRecord* _tmp15_ = NULL;
		gint _tmp16_ = 0;
		gboolean _tmp17_ = FALSE;
		_tmp15_ = rec;
		_tmp16_ = hash2;
		_tmp17_ = libmsi_record_set_int (_tmp15_, (guint) 4, _tmp16_);
		_tmp3_ = !_tmp17_;
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		LibmsiRecord* _tmp18_ = NULL;
		gint _tmp19_ = 0;
		gboolean _tmp20_ = FALSE;
		_tmp18_ = rec;
		_tmp19_ = hash3;
		_tmp20_ = libmsi_record_set_int (_tmp18_, (guint) 5, _tmp19_);
		_tmp2_ = !_tmp20_;
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp21_ = NULL;
		gint _tmp22_ = 0;
		gboolean _tmp23_ = FALSE;
		_tmp21_ = rec;
		_tmp22_ = hash4;
		_tmp23_ = libmsi_record_set_int (_tmp21_, (guint) 6, _tmp22_);
		_tmp1_ = !_tmp23_;
	}
	if (_tmp1_) {
		GError* _tmp24_ = NULL;
		_tmp24_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error_ = _tmp24_;
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp25_ = rec;
	_tmp26_ = _g_object_ref0 (_tmp25_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp26_);
	_g_object_unref0 (rec);
}


void wixl_msi_table_file_hash_add_with_file (WixlMsiTableFileHash* self, const gchar* FileId, GFile* file, GError** error) {
	gint hash1 = 0;
	gint hash2 = 0;
	gint hash3 = 0;
	gint hash4 = 0;
	GFile* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
	gint _tmp2_ = 0;
	gint _tmp3_ = 0;
	gint _tmp4_ = 0;
	gint _tmp5_ = 0;
	gint _tmp6_ = 0;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (FileId != NULL);
	g_return_if_fail (file != NULL);
	hash1 = 0;
	hash2 = 0;
	hash3 = 0;
	hash4 = 0;
	_tmp0_ = file;
	wixl_compute_md5 (_tmp0_, &hash1, &hash2, &hash3, &hash4, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		return;
	}
	_tmp1_ = FileId;
	_tmp2_ = hash1;
	_tmp3_ = hash2;
	_tmp4_ = hash3;
	_tmp5_ = hash4;
	_tmp6_ = 0;
	wixl_msi_table_file_hash_add (self, _tmp1_, _tmp2_, _tmp3_, _tmp4_, _tmp5_, &_tmp6_, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		return;
	}
}


WixlMsiTableFileHash* wixl_msi_table_file_hash_construct (GType object_type) {
	WixlMsiTableFileHash * self = NULL;
	self = (WixlMsiTableFileHash*) wixl_msi_table_construct (object_type);
	return self;
}


WixlMsiTableFileHash* wixl_msi_table_file_hash_new (void) {
	return wixl_msi_table_file_hash_construct (WIXL_TYPE_MSI_TABLE_FILE_HASH);
}


static void wixl_msi_table_file_hash_class_init (WixlMsiTableFileHashClass * klass) {
	gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	wixl_msi_table_file_hash_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("MsiFileHash");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `MsiFileHash` (`File_` CHAR(72) NOT NULL, `Options` INT N" \
"OT NULL, `HashPart1` LONG NOT NULL, `HashPart2` LONG NOT NULL, `HashPa" \
"rt3` LONG NOT NULL, `HashPart4` LONG NOT NULL PRIMARY KEY `File_`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `MsiFileHash` (`File_`, `Options`, `HashPart1`, `HashPart2" \
"`, `HashPart3`, `HashPart4`) VALUES (?, ?, ?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}


static void wixl_msi_table_file_hash_instance_init (WixlMsiTableFileHash * self) {
}


GType wixl_msi_table_file_hash_get_type (void) {
	static volatile gsize wixl_msi_table_file_hash_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_table_file_hash_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableFileHashClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_file_hash_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableFileHash), 0, (GInstanceInitFunc) wixl_msi_table_file_hash_instance_init, NULL };
		GType wixl_msi_table_file_hash_type_id;
		wixl_msi_table_file_hash_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableFileHash", &g_define_type_info, 0);
		g_once_init_leave (&wixl_msi_table_file_hash_type_id__volatile, wixl_msi_table_file_hash_type_id);
	}
	return wixl_msi_table_file_hash_type_id__volatile;
}


void wixl_msi_table_icon_add (WixlMsiTableIcon* self, const gchar* id, const gchar* filename, GError** error) {
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_ = NULL;
	gboolean _tmp1_ = FALSE;
	LibmsiRecord* _tmp2_ = NULL;
	const gchar* _tmp3_ = NULL;
	gboolean _tmp4_ = FALSE;
	LibmsiRecord* _tmp9_ = NULL;
	LibmsiRecord* _tmp10_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (id != NULL);
	g_return_if_fail (filename != NULL);
	_tmp0_ = libmsi_record_new ((guint) 2);
	rec = _tmp0_;
	_tmp2_ = rec;
	_tmp3_ = id;
	_tmp4_ = libmsi_record_set_string (_tmp2_, (guint) 1, _tmp3_);
	if (!_tmp4_) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp5_ = NULL;
		const gchar* _tmp6_ = NULL;
		gboolean _tmp7_ = FALSE;
		_tmp5_ = rec;
		_tmp6_ = filename;
		_tmp7_ = libmsi_record_load_stream (_tmp5_, (guint) 2, _tmp6_);
		_tmp1_ = !_tmp7_;
	}
	if (_tmp1_) {
		GError* _tmp8_ = NULL;
		_tmp8_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error_ = _tmp8_;
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp9_ = rec;
	_tmp10_ = _g_object_ref0 (_tmp9_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp10_);
	_g_object_unref0 (rec);
}


WixlMsiTableIcon* wixl_msi_table_icon_construct (GType object_type) {
	WixlMsiTableIcon * self = NULL;
	self = (WixlMsiTableIcon*) wixl_msi_table_construct (object_type);
	return self;
}


WixlMsiTableIcon* wixl_msi_table_icon_new (void) {
	return wixl_msi_table_icon_construct (WIXL_TYPE_MSI_TABLE_ICON);
}


static void wixl_msi_table_icon_class_init (WixlMsiTableIconClass * klass) {
	gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	wixl_msi_table_icon_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("Icon");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `Icon` (`Name` CHAR(72) NOT NULL, `Data` OBJECT NOT NULL " \
"PRIMARY KEY `Name`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `Icon` (`Name`, `Data`) VALUES (?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}


static void wixl_msi_table_icon_instance_init (WixlMsiTableIcon * self) {
}


GType wixl_msi_table_icon_get_type (void) {
	static volatile gsize wixl_msi_table_icon_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_table_icon_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableIconClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_icon_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableIcon), 0, (GInstanceInitFunc) wixl_msi_table_icon_instance_init, NULL };
		GType wixl_msi_table_icon_type_id;
		wixl_msi_table_icon_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableIcon", &g_define_type_info, 0);
		g_once_init_leave (&wixl_msi_table_icon_type_id__volatile, wixl_msi_table_icon_type_id);
	}
	return wixl_msi_table_icon_type_id__volatile;
}


void wixl_msi_table_binary_add (WixlMsiTableBinary* self, const gchar* id, const gchar* filename, GError** error) {
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_ = NULL;
	gboolean _tmp1_ = FALSE;
	LibmsiRecord* _tmp2_ = NULL;
	const gchar* _tmp3_ = NULL;
	gboolean _tmp4_ = FALSE;
	LibmsiRecord* _tmp9_ = NULL;
	LibmsiRecord* _tmp10_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (id != NULL);
	g_return_if_fail (filename != NULL);
	_tmp0_ = libmsi_record_new ((guint) 2);
	rec = _tmp0_;
	_tmp2_ = rec;
	_tmp3_ = id;
	_tmp4_ = libmsi_record_set_string (_tmp2_, (guint) 1, _tmp3_);
	if (!_tmp4_) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp5_ = NULL;
		const gchar* _tmp6_ = NULL;
		gboolean _tmp7_ = FALSE;
		_tmp5_ = rec;
		_tmp6_ = filename;
		_tmp7_ = libmsi_record_load_stream (_tmp5_, (guint) 2, _tmp6_);
		_tmp1_ = !_tmp7_;
	}
	if (_tmp1_) {
		GError* _tmp8_ = NULL;
		_tmp8_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error_ = _tmp8_;
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp9_ = rec;
	_tmp10_ = _g_object_ref0 (_tmp9_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp10_);
	_g_object_unref0 (rec);
}


WixlMsiTableBinary* wixl_msi_table_binary_construct (GType object_type) {
	WixlMsiTableBinary * self = NULL;
	self = (WixlMsiTableBinary*) wixl_msi_table_construct (object_type);
	return self;
}


WixlMsiTableBinary* wixl_msi_table_binary_new (void) {
	return wixl_msi_table_binary_construct (WIXL_TYPE_MSI_TABLE_BINARY);
}


static void wixl_msi_table_binary_class_init (WixlMsiTableBinaryClass * klass) {
	gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	wixl_msi_table_binary_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("Binary");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `Binary` (`Name` CHAR(72) NOT NULL, `Data` OBJECT NOT NUL" \
"L PRIMARY KEY `Name`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `Binary` (`Name`, `Data`) VALUES (?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}


static void wixl_msi_table_binary_instance_init (WixlMsiTableBinary * self) {
}


GType wixl_msi_table_binary_get_type (void) {
	static volatile gsize wixl_msi_table_binary_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_table_binary_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableBinaryClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_binary_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableBinary), 0, (GInstanceInitFunc) wixl_msi_table_binary_instance_init, NULL };
		GType wixl_msi_table_binary_type_id;
		wixl_msi_table_binary_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableBinary", &g_define_type_info, 0);
		g_once_init_leave (&wixl_msi_table_binary_type_id__volatile, wixl_msi_table_binary_type_id);
	}
	return wixl_msi_table_binary_type_id__volatile;
}


static void _g_free0_ (gpointer var) {
	var = (g_free (var), NULL);
}


static void _wixl_msi_table_sequence_action_unref0_ (gpointer var) {
	(var == NULL) ? NULL : (var = (wixl_msi_table_sequence_action_unref (var), NULL));
}


static void wixl_msi_table_sequence_add (WixlMsiTableSequence* self, const gchar* action, const gchar* condition, gint sequence, GError** error) {
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_ = NULL;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	LibmsiRecord* _tmp3_ = NULL;
	const gchar* _tmp4_ = NULL;
	gboolean _tmp5_ = FALSE;
	LibmsiRecord* _tmp15_ = NULL;
	LibmsiRecord* _tmp16_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (action != NULL);
	_tmp0_ = libmsi_record_new ((guint) 3);
	rec = _tmp0_;
	_tmp3_ = rec;
	_tmp4_ = action;
	_tmp5_ = libmsi_record_set_string (_tmp3_, (guint) 1, _tmp4_);
	if (!_tmp5_) {
		_tmp2_ = TRUE;
	} else {
		gboolean _tmp6_ = FALSE;
		const gchar* _tmp7_ = NULL;
		_tmp7_ = condition;
		if (_tmp7_ != NULL) {
			LibmsiRecord* _tmp8_ = NULL;
			const gchar* _tmp9_ = NULL;
			gboolean _tmp10_ = FALSE;
			_tmp8_ = rec;
			_tmp9_ = condition;
			_tmp10_ = libmsi_record_set_string (_tmp8_, (guint) 2, _tmp9_);
			_tmp6_ = !_tmp10_;
		} else {
			_tmp6_ = FALSE;
		}
		_tmp2_ = _tmp6_;
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp11_ = NULL;
		gint _tmp12_ = 0;
		gboolean _tmp13_ = FALSE;
		_tmp11_ = rec;
		_tmp12_ = sequence;
		_tmp13_ = libmsi_record_set_int (_tmp11_, (guint) 3, _tmp12_);
		_tmp1_ = !_tmp13_;
	}
	if (_tmp1_) {
		GError* _tmp14_ = NULL;
		_tmp14_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error_ = _tmp14_;
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp15_ = rec;
	_tmp16_ = _g_object_ref0 (_tmp15_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp16_);
	_g_object_unref0 (rec);
}


void wixl_msi_table_sequence_set_sequence_table_name (WixlMsiTableSequenceClass* klass, const gchar* table) {
	const gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	const gchar* _tmp2_ = NULL;
	gchar* _tmp3_ = NULL;
	const gchar* _tmp4_ = NULL;
	gchar* _tmp5_ = NULL;
	g_return_if_fail (table != NULL);
	_tmp0_ = table;
	_tmp1_ = g_strdup (_tmp0_);
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp1_;
	_tmp2_ = table;
	_tmp3_ = g_strdup_printf ("CREATE TABLE `%s` (`Action` CHAR(72) NOT NULL, `Condition` CHAR(255), " \
"`Sequence` INT PRIMARY KEY `Action`)", _tmp2_);
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp3_;
	_tmp4_ = table;
	_tmp5_ = g_strdup_printf ("INSERT INTO `%s` (`Action`, `Condition`, `Sequence`) VALUES (?, ?, ?)", _tmp4_);
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp5_;
}


static gpointer _wixl_msi_table_sequence_action_ref0 (gpointer self) {
	return self ? wixl_msi_table_sequence_action_ref (self) : NULL;
}


static void wixl_msi_table_sequence_sort_topological_visit (WixlMsiTableSequence* self, WixlMsiTableSequenceAction* action, GList** sorted) {
	WixlMsiTableSequenceAction* _tmp0_ = NULL;
	gboolean _tmp1_ = FALSE;
	WixlMsiTableSequenceAction* _tmp2_ = NULL;
	WixlMsiTableSequenceAction* dep = NULL;
	GHashTableIter it = {0};
	WixlMsiTableSequenceAction* _tmp3_ = NULL;
	GHashTable* _tmp4_ = NULL;
	WixlMsiTableSequenceAction* _tmp9_ = NULL;
	WixlMsiTableSequenceAction* _tmp10_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (action != NULL);
	_tmp0_ = action;
	_tmp1_ = _tmp0_->visited;
	if (_tmp1_) {
		return;
	}
	_tmp2_ = action;
	_tmp2_->visited = TRUE;
	_tmp3_ = action;
	_tmp4_ = _tmp3_->depends_on;
	g_hash_table_iter_init (&it, _tmp4_);
	while (TRUE) {
		gconstpointer _tmp5_ = NULL;
		gboolean _tmp6_ = FALSE;
		WixlMsiTableSequenceAction* _tmp7_ = NULL;
		WixlMsiTableSequenceAction* _tmp8_ = NULL;
		_tmp6_ = g_hash_table_iter_next (&it, (gpointer*) NULL, (gpointer*) (&_tmp5_));
		_wixl_msi_table_sequence_action_unref0 (dep);
		_tmp7_ = _wixl_msi_table_sequence_action_ref0 (_tmp5_);
		dep = _tmp7_;
		if (!_tmp6_) {
			break;
		}
		_tmp8_ = dep;
		wixl_msi_table_sequence_sort_topological_visit (self, _tmp8_, sorted);
	}
	_tmp9_ = action;
	_tmp10_ = _wixl_msi_table_sequence_action_ref0 (_tmp9_);
	*sorted = g_list_append (*sorted, _tmp10_);
	_wixl_msi_table_sequence_action_unref0 (dep);
}


static void _g_list_free__wixl_msi_table_sequence_action_unref0_ (GList* self) {
	g_list_foreach (self, (GFunc) _wixl_msi_table_sequence_action_unref0_, NULL);
	g_list_free (self);
}


static GList* wixl_msi_table_sequence_sort_topological (WixlMsiTableSequence* self) {
	GList* result = NULL;
	GList* sorted = NULL;
	WixlMsiTableSequenceAction* action = NULL;
	GHashTableIter it = {0};
	GHashTable* _tmp0_ = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	sorted = NULL;
	_tmp0_ = self->priv->actions;
	g_hash_table_iter_init (&it, _tmp0_);
	while (TRUE) {
		gconstpointer _tmp1_ = NULL;
		gboolean _tmp2_ = FALSE;
		WixlMsiTableSequenceAction* _tmp3_ = NULL;
		WixlMsiTableSequenceAction* _tmp4_ = NULL;
		gboolean _tmp5_ = FALSE;
		WixlMsiTableSequenceAction* _tmp6_ = NULL;
		_tmp2_ = g_hash_table_iter_next (&it, (gpointer*) NULL, (gpointer*) (&_tmp1_));
		_wixl_msi_table_sequence_action_unref0 (action);
		_tmp3_ = _wixl_msi_table_sequence_action_ref0 (_tmp1_);
		action = _tmp3_;
		if (!_tmp2_) {
			break;
		}
		_tmp4_ = action;
		_tmp5_ = _tmp4_->incoming_deps;
		if (_tmp5_) {
			continue;
		}
		_tmp6_ = action;
		wixl_msi_table_sequence_sort_topological_visit (self, _tmp6_, &sorted);
	}
	result = sorted;
	_wixl_msi_table_sequence_action_unref0 (action);
	return result;
}


static gint __lambda4_ (WixlMsiTableSequenceAction* a, WixlMsiTableSequenceAction* b) {
	gint result = 0;
	WixlMsiTableSequenceAction* _tmp0_ = NULL;
	gint _tmp1_ = 0;
	WixlMsiTableSequenceAction* _tmp2_ = NULL;
	gint _tmp3_ = 0;
	g_return_val_if_fail (a != NULL, 0);
	g_return_val_if_fail (b != NULL, 0);
	_tmp0_ = a;
	_tmp1_ = _tmp0_->sequence;
	_tmp2_ = b;
	_tmp3_ = _tmp2_->sequence;
	result = _tmp1_ - _tmp3_;
	return result;
}


static gint ___lambda4__gcompare_func (gconstpointer a, gconstpointer b) {
	gint result;
	result = __lambda4_ ((WixlMsiTableSequenceAction*) a, (WixlMsiTableSequenceAction*) b);
	return result;
}


static void wixl_msi_table_sequence_add_implicit_deps (WixlMsiTableSequence* self) {
	GCompareFunc cmp = NULL;
	GList* list = NULL;
	GHashTable* _tmp0_ = NULL;
	GList* _tmp1_ = NULL;
	GCompareFunc _tmp2_ = NULL;
	WixlMsiTableSequenceAction* prev = NULL;
	GList* _tmp3_ = NULL;
	g_return_if_fail (self != NULL);
	cmp = ___lambda4__gcompare_func;
	_tmp0_ = self->priv->actions;
	_tmp1_ = g_hash_table_get_values (_tmp0_);
	list = _tmp1_;
	_tmp2_ = cmp;
	list = g_list_sort (list, _tmp2_);
	prev = NULL;
	_tmp3_ = list;
	{
		GList* a_collection = NULL;
		GList* a_it = NULL;
		a_collection = _tmp3_;
		for (a_it = a_collection; a_it != NULL; a_it = a_it->next) {
			WixlMsiTableSequenceAction* a = NULL;
			a = (WixlMsiTableSequenceAction*) a_it->data;
			{
				WixlMsiTableSequenceAction* _tmp4_ = NULL;
				gint _tmp5_ = 0;
				WixlMsiTableSequenceAction* _tmp6_ = NULL;
				WixlMsiTableSequenceAction* _tmp9_ = NULL;
				WixlMsiTableSequenceAction* _tmp10_ = NULL;
				_tmp4_ = a;
				_tmp5_ = _tmp4_->sequence;
				if (_tmp5_ == -1) {
					continue;
				}
				_tmp6_ = prev;
				if (_tmp6_ != NULL) {
					WixlMsiTableSequenceAction* _tmp7_ = NULL;
					WixlMsiTableSequenceAction* _tmp8_ = NULL;
					_tmp7_ = a;
					_tmp8_ = prev;
					wixl_msi_table_sequence_action_add_dep (_tmp7_, _tmp8_);
				}
				_tmp9_ = a;
				_tmp10_ = _wixl_msi_table_sequence_action_ref0 (_tmp9_);
				_wixl_msi_table_sequence_action_unref0 (prev);
				prev = _tmp10_;
			}
		}
	}
	_wixl_msi_table_sequence_action_unref0 (prev);
	_g_list_free0 (list);
}


void wixl_msi_table_sequence_add_sorted_actions (WixlMsiTableSequence* self, GError** error) {
	GList* sorted = NULL;
	GList* _tmp0_ = NULL;
	gint sequence = 0;
	GList* _tmp1_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	wixl_msi_table_sequence_add_implicit_deps (self);
	_tmp0_ = wixl_msi_table_sequence_sort_topological (self);
	sorted = _tmp0_;
	sequence = 0;
	_tmp1_ = sorted;
	{
		GList* action_collection = NULL;
		GList* action_it = NULL;
		action_collection = _tmp1_;
		for (action_it = action_collection; action_it != NULL; action_it = action_it->next) {
			WixlMsiTableSequenceAction* _tmp2_ = NULL;
			WixlMsiTableSequenceAction* action = NULL;
			_tmp2_ = _wixl_msi_table_sequence_action_ref0 ((WixlMsiTableSequenceAction*) action_it->data);
			action = _tmp2_;
			{
				WixlMsiTableSequenceAction* _tmp3_ = NULL;
				gint _tmp4_ = 0;
				WixlMsiTableSequenceAction* _tmp8_ = NULL;
				gint _tmp9_ = 0;
				WixlMsiTableSequenceAction* _tmp10_ = NULL;
				const gchar* _tmp11_ = NULL;
				WixlMsiTableSequenceAction* _tmp12_ = NULL;
				const gchar* _tmp13_ = NULL;
				WixlMsiTableSequenceAction* _tmp14_ = NULL;
				gint _tmp15_ = 0;
				_tmp3_ = action;
				_tmp4_ = _tmp3_->sequence;
				if (_tmp4_ == -1) {
					WixlMsiTableSequenceAction* _tmp5_ = NULL;
					gint _tmp6_ = 0;
					gint _tmp7_ = 0;
					_tmp5_ = action;
					_tmp6_ = sequence;
					sequence = _tmp6_ + 1;
					_tmp7_ = sequence;
					_tmp5_->sequence = _tmp7_;
				}
				_tmp8_ = action;
				_tmp9_ = _tmp8_->sequence;
				sequence = _tmp9_;
				_tmp10_ = action;
				_tmp11_ = _tmp10_->name;
				_tmp12_ = action;
				_tmp13_ = _tmp12_->condition;
				_tmp14_ = action;
				_tmp15_ = _tmp14_->sequence;
				wixl_msi_table_sequence_add (self, _tmp11_, _tmp13_, _tmp15_, &_inner_error_);
				if (G_UNLIKELY (_inner_error_ != NULL)) {
					g_propagate_error (error, _inner_error_);
					_wixl_msi_table_sequence_action_unref0 (action);
					__g_list_free__wixl_msi_table_sequence_action_unref0_0 (sorted);
					return;
				}
				_wixl_msi_table_sequence_action_unref0 (action);
			}
		}
	}
	__g_list_free__wixl_msi_table_sequence_action_unref0_0 (sorted);
}


WixlMsiTableSequenceAction* wixl_msi_table_sequence_get_action (WixlMsiTableSequence* self, const gchar* name) {
	WixlMsiTableSequenceAction* result = NULL;
	WixlMsiTableSequenceAction* action = NULL;
	GHashTable* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
	gconstpointer _tmp2_ = NULL;
	WixlMsiTableSequenceAction* _tmp3_ = NULL;
	WixlMsiTableSequenceAction* _tmp4_ = NULL;
	WixlMsiTableSequenceAction* _tmp5_ = NULL;
	GHashTable* _tmp6_ = NULL;
	const gchar* _tmp7_ = NULL;
	gchar* _tmp8_ = NULL;
	WixlMsiTableSequenceAction* _tmp9_ = NULL;
	WixlMsiTableSequenceAction* _tmp10_ = NULL;
	WixlMsiTableSequenceAction* _tmp11_ = NULL;
	const gchar* _tmp12_ = NULL;
	gchar* _tmp13_ = NULL;
	WixlMSIDefaultActionInfo* _default_ = NULL;
	const gchar* _tmp14_ = NULL;
	WixlMSIDefaultActionInfo* _tmp15_ = NULL;
	WixlMSIDefaultActionInfo* _tmp16_ = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (name != NULL, NULL);
	_tmp0_ = self->priv->actions;
	_tmp1_ = name;
	_tmp2_ = g_hash_table_lookup (_tmp0_, _tmp1_);
	_tmp3_ = _wixl_msi_table_sequence_action_ref0 ((WixlMsiTableSequenceAction*) _tmp2_);
	action = _tmp3_;
	_tmp4_ = action;
	if (_tmp4_ != NULL) {
		result = action;
		return result;
	}
	_tmp5_ = wixl_msi_table_sequence_action_new ();
	_wixl_msi_table_sequence_action_unref0 (action);
	action = _tmp5_;
	_tmp6_ = self->priv->actions;
	_tmp7_ = name;
	_tmp8_ = g_strdup (_tmp7_);
	_tmp9_ = action;
	_tmp10_ = _wixl_msi_table_sequence_action_ref0 (_tmp9_);
	g_hash_table_insert (_tmp6_, _tmp8_, _tmp10_);
	_tmp11_ = action;
	_tmp12_ = name;
	_tmp13_ = g_strdup (_tmp12_);
	_g_free0 (_tmp11_->name);
	_tmp11_->name = _tmp13_;
	_tmp14_ = name;
	_tmp15_ = wixl_msi_default_get_action_by_name (_tmp14_);
	_default_ = _tmp15_;
	_tmp16_ = _default_;
	if (_tmp16_ != NULL) {
		WixlMsiTableSequenceAction* _tmp17_ = NULL;
		WixlMSIDefaultActionInfo* _tmp18_ = NULL;
		gint _tmp19_ = 0;
		_tmp17_ = action;
		_tmp18_ = _default_;
		_tmp19_ = (*_tmp18_).sequence;
		_tmp17_->sequence = _tmp19_;
	}
	result = action;
	_wixl_msi_default_action_info_free0 (_default_);
	return result;
}


void wixl_msi_table_sequence_add_default_action (WixlMsiTableSequence* self, WixlMSIDefaultAction action) {
	WixlMSIDefaultActionInfo _default_ = {0};
	WixlMSIDefaultAction _tmp0_ = 0;
	WixlMSIDefaultActionInfo _tmp1_ = {0};
	WixlMSIDefaultActionFlags _tmp2_ = 0;
	WixlMSIDefaultActionInfo _tmp3_ = {0};
	WixlMSIDefaultActionFlags _tmp4_ = 0;
	WixlMsiTableSequenceAction* seq = NULL;
	GHashTable* _tmp8_ = NULL;
	WixlMSIDefaultActionInfo _tmp9_ = {0};
	const gchar* _tmp10_ = NULL;
	gconstpointer _tmp11_ = NULL;
	WixlMsiTableSequenceAction* _tmp12_ = NULL;
	WixlMsiTableSequenceAction* _tmp13_ = NULL;
	WixlMsiTableSequenceAction* _tmp14_ = NULL;
	GHashTable* _tmp15_ = NULL;
	WixlMSIDefaultActionInfo _tmp16_ = {0};
	const gchar* _tmp17_ = NULL;
	gchar* _tmp18_ = NULL;
	WixlMsiTableSequenceAction* _tmp19_ = NULL;
	WixlMsiTableSequenceAction* _tmp20_ = NULL;
	WixlMsiTableSequenceAction* _tmp21_ = NULL;
	WixlMSIDefaultActionInfo _tmp22_ = {0};
	const gchar* _tmp23_ = NULL;
	gchar* _tmp24_ = NULL;
	WixlMsiTableSequenceAction* _tmp25_ = NULL;
	WixlMSIDefaultActionInfo _tmp26_ = {0};
	gint _tmp27_ = 0;
	WixlMsiTableSequenceAction* _tmp28_ = NULL;
	WixlMSIDefaultActionInfo _tmp29_ = {0};
	const gchar* _tmp30_ = NULL;
	gchar* _tmp31_ = NULL;
	g_return_if_fail (self != NULL);
	_tmp0_ = action;
	wixl_msi_default_get_action (_tmp0_, &_tmp1_);
	_default_ = _tmp1_;
	_tmp2_ = WIXL_MSI_TABLE_SEQUENCE_CLASS (G_OBJECT_GET_CLASS (self))->flags;
	_tmp3_ = _default_;
	_tmp4_ = _tmp3_.flags;
	if (!((_tmp4_ & _tmp2_) == _tmp2_)) {
		WixlMSIDefaultActionInfo _tmp5_ = {0};
		const gchar* _tmp6_ = NULL;
		const gchar* _tmp7_ = NULL;
		_tmp5_ = _default_;
		_tmp6_ = _tmp5_.name;
		_tmp7_ = WIXL_MSI_TABLE_CLASS (G_OBJECT_GET_CLASS (self))->name;
		g_critical ("msi.vala:208: Action %s shouldn't be added in %s", _tmp6_, _tmp7_);
	}
	_tmp8_ = self->priv->actions;
	_tmp9_ = _default_;
	_tmp10_ = _tmp9_.name;
	_tmp11_ = g_hash_table_lookup (_tmp8_, _tmp10_);
	_tmp12_ = _wixl_msi_table_sequence_action_ref0 ((WixlMsiTableSequenceAction*) _tmp11_);
	seq = _tmp12_;
	_tmp13_ = seq;
	if (_tmp13_ != NULL) {
		_wixl_msi_table_sequence_action_unref0 (seq);
		wixl_msi_default_action_info_destroy (&_default_);
		return;
	}
	_tmp14_ = wixl_msi_table_sequence_action_new ();
	_wixl_msi_table_sequence_action_unref0 (seq);
	seq = _tmp14_;
	_tmp15_ = self->priv->actions;
	_tmp16_ = _default_;
	_tmp17_ = _tmp16_.name;
	_tmp18_ = g_strdup (_tmp17_);
	_tmp19_ = seq;
	_tmp20_ = _wixl_msi_table_sequence_action_ref0 (_tmp19_);
	g_hash_table_insert (_tmp15_, _tmp18_, _tmp20_);
	_tmp21_ = seq;
	_tmp22_ = _default_;
	_tmp23_ = _tmp22_.name;
	_tmp24_ = g_strdup (_tmp23_);
	_g_free0 (_tmp21_->name);
	_tmp21_->name = _tmp24_;
	_tmp25_ = seq;
	_tmp26_ = _default_;
	_tmp27_ = _tmp26_.sequence;
	_tmp25_->sequence = _tmp27_;
	_tmp28_ = seq;
	_tmp29_ = _default_;
	_tmp30_ = _tmp29_.condition;
	_tmp31_ = g_strdup (_tmp30_);
	_g_free0 (_tmp28_->condition);
	_tmp28_->condition = _tmp31_;
	_wixl_msi_table_sequence_action_unref0 (seq);
	wixl_msi_default_action_info_destroy (&_default_);
}


WixlMsiTableSequence* wixl_msi_table_sequence_construct (GType object_type) {
	WixlMsiTableSequence * self = NULL;
	self = (WixlMsiTableSequence*) wixl_msi_table_construct (object_type);
	return self;
}


void wixl_msi_table_sequence_action_add_dep (WixlMsiTableSequenceAction* self, WixlMsiTableSequenceAction* a) {
	GHashTable* _tmp0_ = NULL;
	WixlMsiTableSequenceAction* _tmp1_ = NULL;
	WixlMsiTableSequenceAction* _tmp2_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (a != NULL);
	_tmp0_ = self->depends_on;
	_tmp1_ = a;
	wixl_hash_table_add (WIXL_MSI_TABLE_SEQUENCE_TYPE_ACTION, (GBoxedCopyFunc) wixl_msi_table_sequence_action_ref, (GDestroyNotify) wixl_msi_table_sequence_action_unref, _tmp0_, _tmp1_);
	_tmp2_ = a;
	_tmp2_->incoming_deps = TRUE;
}


WixlMsiTableSequenceAction* wixl_msi_table_sequence_action_construct (GType object_type) {
	WixlMsiTableSequenceAction* self = NULL;
	self = (WixlMsiTableSequenceAction*) g_type_create_instance (object_type);
	return self;
}


WixlMsiTableSequenceAction* wixl_msi_table_sequence_action_new (void) {
	return wixl_msi_table_sequence_action_construct (WIXL_MSI_TABLE_SEQUENCE_TYPE_ACTION);
}


static void wixl_msi_table_sequence_value_action_init (GValue* value) {
	value->data[0].v_pointer = NULL;
}


static void wixl_msi_table_sequence_value_action_free_value (GValue* value) {
	if (value->data[0].v_pointer) {
		wixl_msi_table_sequence_action_unref (value->data[0].v_pointer);
	}
}


static void wixl_msi_table_sequence_value_action_copy_value (const GValue* src_value, GValue* dest_value) {
	if (src_value->data[0].v_pointer) {
		dest_value->data[0].v_pointer = wixl_msi_table_sequence_action_ref (src_value->data[0].v_pointer);
	} else {
		dest_value->data[0].v_pointer = NULL;
	}
}


static gpointer wixl_msi_table_sequence_value_action_peek_pointer (const GValue* value) {
	return value->data[0].v_pointer;
}


static gchar* wixl_msi_table_sequence_value_action_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
	if (collect_values[0].v_pointer) {
		WixlMsiTableSequenceAction* object;
		object = collect_values[0].v_pointer;
		if (object->parent_instance.g_class == NULL) {
			return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
		} else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
			return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
		}
		value->data[0].v_pointer = wixl_msi_table_sequence_action_ref (object);
	} else {
		value->data[0].v_pointer = NULL;
	}
	return NULL;
}


static gchar* wixl_msi_table_sequence_value_action_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
	WixlMsiTableSequenceAction** object_p;
	object_p = collect_values[0].v_pointer;
	if (!object_p) {
		return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
	}
	if (!value->data[0].v_pointer) {
		*object_p = NULL;
	} else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
		*object_p = value->data[0].v_pointer;
	} else {
		*object_p = wixl_msi_table_sequence_action_ref (value->data[0].v_pointer);
	}
	return NULL;
}


GParamSpec* wixl_msi_table_sequence_param_spec_action (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) {
	WixlMsiTableSequenceParamSpecAction* spec;
	g_return_val_if_fail (g_type_is_a (object_type, WIXL_MSI_TABLE_SEQUENCE_TYPE_ACTION), NULL);
	spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
	G_PARAM_SPEC (spec)->value_type = object_type;
	return G_PARAM_SPEC (spec);
}


gpointer wixl_msi_table_sequence_value_get_action (const GValue* value) {
	g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, WIXL_MSI_TABLE_SEQUENCE_TYPE_ACTION), NULL);
	return value->data[0].v_pointer;
}


void wixl_msi_table_sequence_value_set_action (GValue* value, gpointer v_object) {
	WixlMsiTableSequenceAction* old;
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, WIXL_MSI_TABLE_SEQUENCE_TYPE_ACTION));
	old = value->data[0].v_pointer;
	if (v_object) {
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, WIXL_MSI_TABLE_SEQUENCE_TYPE_ACTION));
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
		value->data[0].v_pointer = v_object;
		wixl_msi_table_sequence_action_ref (value->data[0].v_pointer);
	} else {
		value->data[0].v_pointer = NULL;
	}
	if (old) {
		wixl_msi_table_sequence_action_unref (old);
	}
}


void wixl_msi_table_sequence_value_take_action (GValue* value, gpointer v_object) {
	WixlMsiTableSequenceAction* old;
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, WIXL_MSI_TABLE_SEQUENCE_TYPE_ACTION));
	old = value->data[0].v_pointer;
	if (v_object) {
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, WIXL_MSI_TABLE_SEQUENCE_TYPE_ACTION));
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
		value->data[0].v_pointer = v_object;
	} else {
		value->data[0].v_pointer = NULL;
	}
	if (old) {
		wixl_msi_table_sequence_action_unref (old);
	}
}


static void wixl_msi_table_sequence_action_class_init (WixlMsiTableSequenceActionClass * klass) {
	wixl_msi_table_sequence_action_parent_class = g_type_class_peek_parent (klass);
	((WixlMsiTableSequenceActionClass *) klass)->finalize = wixl_msi_table_sequence_action_finalize;
}


static void wixl_msi_table_sequence_action_instance_init (WixlMsiTableSequenceAction * self) {
	GHashFunc _tmp0_ = NULL;
	GEqualFunc _tmp1_ = NULL;
	GHashTable* _tmp2_ = NULL;
	self->sequence = -1;
	self->visited = FALSE;
	self->incoming_deps = FALSE;
	_tmp0_ = g_direct_hash;
	_tmp1_ = g_direct_equal;
	_tmp2_ = g_hash_table_new_full (_tmp0_, _tmp1_, _wixl_msi_table_sequence_action_unref0_, NULL);
	self->depends_on = _tmp2_;
	self->ref_count = 1;
}


static void wixl_msi_table_sequence_action_finalize (WixlMsiTableSequenceAction* obj) {
	WixlMsiTableSequenceAction * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, WIXL_MSI_TABLE_SEQUENCE_TYPE_ACTION, WixlMsiTableSequenceAction);
	g_signal_handlers_destroy (self);
	_g_free0 (self->name);
	_g_free0 (self->condition);
	_g_object_unref0 (self->action);
	_g_hash_table_unref0 (self->depends_on);
}


GType wixl_msi_table_sequence_action_get_type (void) {
	static volatile gsize wixl_msi_table_sequence_action_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_table_sequence_action_type_id__volatile)) {
		static const GTypeValueTable g_define_type_value_table = { wixl_msi_table_sequence_value_action_init, wixl_msi_table_sequence_value_action_free_value, wixl_msi_table_sequence_value_action_copy_value, wixl_msi_table_sequence_value_action_peek_pointer, "p", wixl_msi_table_sequence_value_action_collect_value, "p", wixl_msi_table_sequence_value_action_lcopy_value };
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableSequenceActionClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_sequence_action_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableSequenceAction), 0, (GInstanceInitFunc) wixl_msi_table_sequence_action_instance_init, &g_define_type_value_table };
		static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) };
		GType wixl_msi_table_sequence_action_type_id;
		wixl_msi_table_sequence_action_type_id = g_type_register_fundamental (g_type_fundamental_next (), "WixlMsiTableSequenceAction", &g_define_type_info, &g_define_type_fundamental_info, 0);
		g_once_init_leave (&wixl_msi_table_sequence_action_type_id__volatile, wixl_msi_table_sequence_action_type_id);
	}
	return wixl_msi_table_sequence_action_type_id__volatile;
}


gpointer wixl_msi_table_sequence_action_ref (gpointer instance) {
	WixlMsiTableSequenceAction* self;
	self = instance;
	g_atomic_int_inc (&self->ref_count);
	return instance;
}


void wixl_msi_table_sequence_action_unref (gpointer instance) {
	WixlMsiTableSequenceAction* self;
	self = instance;
	if (g_atomic_int_dec_and_test (&self->ref_count)) {
		WIXL_MSI_TABLE_SEQUENCE_ACTION_GET_CLASS (self)->finalize (self);
		g_type_free_instance ((GTypeInstance *) self);
	}
}


static void wixl_msi_table_sequence_class_init (WixlMsiTableSequenceClass * klass) {
	wixl_msi_table_sequence_parent_class = g_type_class_peek_parent (klass);
	g_type_class_add_private (klass, sizeof (WixlMsiTableSequencePrivate));
	G_OBJECT_CLASS (klass)->finalize = wixl_msi_table_sequence_finalize;
}


static void wixl_msi_table_sequence_instance_init (WixlMsiTableSequence * self) {
	GHashFunc _tmp0_ = NULL;
	GEqualFunc _tmp1_ = NULL;
	GHashTable* _tmp2_ = NULL;
	self->priv = WIXL_MSI_TABLE_SEQUENCE_GET_PRIVATE (self);
	_tmp0_ = g_str_hash;
	_tmp1_ = g_str_equal;
	_tmp2_ = g_hash_table_new_full (_tmp0_, _tmp1_, _g_free0_, _wixl_msi_table_sequence_action_unref0_);
	self->priv->actions = _tmp2_;
}


static void wixl_msi_table_sequence_finalize (GObject* obj) {
	WixlMsiTableSequence * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, WIXL_TYPE_MSI_TABLE_SEQUENCE, WixlMsiTableSequence);
	_g_hash_table_unref0 (self->priv->actions);
	G_OBJECT_CLASS (wixl_msi_table_sequence_parent_class)->finalize (obj);
}


GType wixl_msi_table_sequence_get_type (void) {
	static volatile gsize wixl_msi_table_sequence_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_table_sequence_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableSequenceClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_sequence_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableSequence), 0, (GInstanceInitFunc) wixl_msi_table_sequence_instance_init, NULL };
		GType wixl_msi_table_sequence_type_id;
		wixl_msi_table_sequence_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableSequence", &g_define_type_info, G_TYPE_FLAG_ABSTRACT);
		g_once_init_leave (&wixl_msi_table_sequence_type_id__volatile, wixl_msi_table_sequence_type_id);
	}
	return wixl_msi_table_sequence_type_id__volatile;
}


WixlMsiTableAdminExecuteSequence* wixl_msi_table_admin_execute_sequence_construct (GType object_type) {
	WixlMsiTableAdminExecuteSequence * self = NULL;
	self = (WixlMsiTableAdminExecuteSequence*) wixl_msi_table_sequence_construct (object_type);
	return self;
}


WixlMsiTableAdminExecuteSequence* wixl_msi_table_admin_execute_sequence_new (void) {
	return wixl_msi_table_admin_execute_sequence_construct (WIXL_TYPE_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE);
}


static void wixl_msi_table_admin_execute_sequence_class_init (WixlMsiTableAdminExecuteSequenceClass * klass) {
	wixl_msi_table_admin_execute_sequence_parent_class = g_type_class_peek_parent (klass);
	wixl_msi_table_sequence_set_sequence_table_name (WIXL_MSI_TABLE_SEQUENCE_CLASS (klass), "AdminExecuteSequence");
	WIXL_MSI_TABLE_SEQUENCE_CLASS (klass)->flags = WIXL_MSI_DEFAULT_ACTION_FLAGS_ADMIN_EXECUTE_SEQUENCE;
}


static void wixl_msi_table_admin_execute_sequence_instance_init (WixlMsiTableAdminExecuteSequence * self) {
}


GType wixl_msi_table_admin_execute_sequence_get_type (void) {
	static volatile gsize wixl_msi_table_admin_execute_sequence_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_table_admin_execute_sequence_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableAdminExecuteSequenceClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_admin_execute_sequence_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableAdminExecuteSequence), 0, (GInstanceInitFunc) wixl_msi_table_admin_execute_sequence_instance_init, NULL };
		GType wixl_msi_table_admin_execute_sequence_type_id;
		wixl_msi_table_admin_execute_sequence_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE_SEQUENCE, "WixlMsiTableAdminExecuteSequence", &g_define_type_info, 0);
		g_once_init_leave (&wixl_msi_table_admin_execute_sequence_type_id__volatile, wixl_msi_table_admin_execute_sequence_type_id);
	}
	return wixl_msi_table_admin_execute_sequence_type_id__volatile;
}


WixlMsiTableAdminUISequence* wixl_msi_table_admin_ui_sequence_construct (GType object_type) {
	WixlMsiTableAdminUISequence * self = NULL;
	self = (WixlMsiTableAdminUISequence*) wixl_msi_table_sequence_construct (object_type);
	return self;
}


WixlMsiTableAdminUISequence* wixl_msi_table_admin_ui_sequence_new (void) {
	return wixl_msi_table_admin_ui_sequence_construct (WIXL_TYPE_MSI_TABLE_ADMIN_UI_SEQUENCE);
}


static void wixl_msi_table_admin_ui_sequence_class_init (WixlMsiTableAdminUISequenceClass * klass) {
	wixl_msi_table_admin_ui_sequence_parent_class = g_type_class_peek_parent (klass);
	wixl_msi_table_sequence_set_sequence_table_name (WIXL_MSI_TABLE_SEQUENCE_CLASS (klass), "AdminUISequence");
	WIXL_MSI_TABLE_SEQUENCE_CLASS (klass)->flags = WIXL_MSI_DEFAULT_ACTION_FLAGS_ADMIN_UI_SEQUENCE;
}


static void wixl_msi_table_admin_ui_sequence_instance_init (WixlMsiTableAdminUISequence * self) {
}


GType wixl_msi_table_admin_ui_sequence_get_type (void) {
	static volatile gsize wixl_msi_table_admin_ui_sequence_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_table_admin_ui_sequence_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableAdminUISequenceClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_admin_ui_sequence_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableAdminUISequence), 0, (GInstanceInitFunc) wixl_msi_table_admin_ui_sequence_instance_init, NULL };
		GType wixl_msi_table_admin_ui_sequence_type_id;
		wixl_msi_table_admin_ui_sequence_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE_SEQUENCE, "WixlMsiTableAdminUISequence", &g_define_type_info, 0);
		g_once_init_leave (&wixl_msi_table_admin_ui_sequence_type_id__volatile, wixl_msi_table_admin_ui_sequence_type_id);
	}
	return wixl_msi_table_admin_ui_sequence_type_id__volatile;
}


WixlMsiTableAdvtExecuteSequence* wixl_msi_table_advt_execute_sequence_construct (GType object_type) {
	WixlMsiTableAdvtExecuteSequence * self = NULL;
	self = (WixlMsiTableAdvtExecuteSequence*) wixl_msi_table_sequence_construct (object_type);
	return self;
}


WixlMsiTableAdvtExecuteSequence* wixl_msi_table_advt_execute_sequence_new (void) {
	return wixl_msi_table_advt_execute_sequence_construct (WIXL_TYPE_MSI_TABLE_ADVT_EXECUTE_SEQUENCE);
}


static void wixl_msi_table_advt_execute_sequence_class_init (WixlMsiTableAdvtExecuteSequenceClass * klass) {
	wixl_msi_table_advt_execute_sequence_parent_class = g_type_class_peek_parent (klass);
	wixl_msi_table_sequence_set_sequence_table_name (WIXL_MSI_TABLE_SEQUENCE_CLASS (klass), "AdvtExecuteSequence");
	WIXL_MSI_TABLE_SEQUENCE_CLASS (klass)->flags = WIXL_MSI_DEFAULT_ACTION_FLAGS_ADVT_EXECUTE_SEQUENCE;
}


static void wixl_msi_table_advt_execute_sequence_instance_init (WixlMsiTableAdvtExecuteSequence * self) {
}


GType wixl_msi_table_advt_execute_sequence_get_type (void) {
	static volatile gsize wixl_msi_table_advt_execute_sequence_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_table_advt_execute_sequence_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableAdvtExecuteSequenceClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_advt_execute_sequence_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableAdvtExecuteSequence), 0, (GInstanceInitFunc) wixl_msi_table_advt_execute_sequence_instance_init, NULL };
		GType wixl_msi_table_advt_execute_sequence_type_id;
		wixl_msi_table_advt_execute_sequence_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE_SEQUENCE, "WixlMsiTableAdvtExecuteSequence", &g_define_type_info, 0);
		g_once_init_leave (&wixl_msi_table_advt_execute_sequence_type_id__volatile, wixl_msi_table_advt_execute_sequence_type_id);
	}
	return wixl_msi_table_advt_execute_sequence_type_id__volatile;
}


WixlMsiTableInstallExecuteSequence* wixl_msi_table_install_execute_sequence_construct (GType object_type) {
	WixlMsiTableInstallExecuteSequence * self = NULL;
	self = (WixlMsiTableInstallExecuteSequence*) wixl_msi_table_sequence_construct (object_type);
	return self;
}


WixlMsiTableInstallExecuteSequence* wixl_msi_table_install_execute_sequence_new (void) {
	return wixl_msi_table_install_execute_sequence_construct (WIXL_TYPE_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE);
}


static void wixl_msi_table_install_execute_sequence_class_init (WixlMsiTableInstallExecuteSequenceClass * klass) {
	wixl_msi_table_install_execute_sequence_parent_class = g_type_class_peek_parent (klass);
	wixl_msi_table_sequence_set_sequence_table_name (WIXL_MSI_TABLE_SEQUENCE_CLASS (klass), "InstallExecuteSequence");
	WIXL_MSI_TABLE_SEQUENCE_CLASS (klass)->flags = WIXL_MSI_DEFAULT_ACTION_FLAGS_INSTALL_EXECUTE_SEQUENCE;
}


static void wixl_msi_table_install_execute_sequence_instance_init (WixlMsiTableInstallExecuteSequence * self) {
}


GType wixl_msi_table_install_execute_sequence_get_type (void) {
	static volatile gsize wixl_msi_table_install_execute_sequence_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_table_install_execute_sequence_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableInstallExecuteSequenceClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_install_execute_sequence_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableInstallExecuteSequence), 0, (GInstanceInitFunc) wixl_msi_table_install_execute_sequence_instance_init, NULL };
		GType wixl_msi_table_install_execute_sequence_type_id;
		wixl_msi_table_install_execute_sequence_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE_SEQUENCE, "WixlMsiTableInstallExecuteSequence", &g_define_type_info, 0);
		g_once_init_leave (&wixl_msi_table_install_execute_sequence_type_id__volatile, wixl_msi_table_install_execute_sequence_type_id);
	}
	return wixl_msi_table_install_execute_sequence_type_id__volatile;
}


WixlMsiTableInstallUISequence* wixl_msi_table_install_ui_sequence_construct (GType object_type) {
	WixlMsiTableInstallUISequence * self = NULL;
	self = (WixlMsiTableInstallUISequence*) wixl_msi_table_sequence_construct (object_type);
	return self;
}


WixlMsiTableInstallUISequence* wixl_msi_table_install_ui_sequence_new (void) {
	return wixl_msi_table_install_ui_sequence_construct (WIXL_TYPE_MSI_TABLE_INSTALL_UI_SEQUENCE);
}


static void wixl_msi_table_install_ui_sequence_class_init (WixlMsiTableInstallUISequenceClass * klass) {
	wixl_msi_table_install_ui_sequence_parent_class = g_type_class_peek_parent (klass);
	wixl_msi_table_sequence_set_sequence_table_name (WIXL_MSI_TABLE_SEQUENCE_CLASS (klass), "InstallUISequence");
	WIXL_MSI_TABLE_SEQUENCE_CLASS (klass)->flags = WIXL_MSI_DEFAULT_ACTION_FLAGS_INSTALL_UI_SEQUENCE;
}


static void wixl_msi_table_install_ui_sequence_instance_init (WixlMsiTableInstallUISequence * self) {
}


GType wixl_msi_table_install_ui_sequence_get_type (void) {
	static volatile gsize wixl_msi_table_install_ui_sequence_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_table_install_ui_sequence_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableInstallUISequenceClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_install_ui_sequence_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableInstallUISequence), 0, (GInstanceInitFunc) wixl_msi_table_install_ui_sequence_instance_init, NULL };
		GType wixl_msi_table_install_ui_sequence_type_id;
		wixl_msi_table_install_ui_sequence_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE_SEQUENCE, "WixlMsiTableInstallUISequence", &g_define_type_info, 0);
		g_once_init_leave (&wixl_msi_table_install_ui_sequence_type_id__volatile, wixl_msi_table_install_ui_sequence_type_id);
	}
	return wixl_msi_table_install_ui_sequence_type_id__volatile;
}


WixlMsiTableError* wixl_msi_table_error_construct (GType object_type) {
	WixlMsiTableError * self = NULL;
	self = (WixlMsiTableError*) wixl_msi_table_construct (object_type);
	return self;
}


WixlMsiTableError* wixl_msi_table_error_new (void) {
	return wixl_msi_table_error_construct (WIXL_TYPE_MSI_TABLE_ERROR);
}


static void wixl_msi_table_error_class_init (WixlMsiTableErrorClass * klass) {
	gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	wixl_msi_table_error_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("Error");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `Error` (`Error` INT NOT NULL, `Message` CHAR(0) LOCALIZA" \
"BLE PRIMARY KEY `Error`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
}


static void wixl_msi_table_error_instance_init (WixlMsiTableError * self) {
}


GType wixl_msi_table_error_get_type (void) {
	static volatile gsize wixl_msi_table_error_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_table_error_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableErrorClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_error_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableError), 0, (GInstanceInitFunc) wixl_msi_table_error_instance_init, NULL };
		GType wixl_msi_table_error_type_id;
		wixl_msi_table_error_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableError", &g_define_type_info, 0);
		g_once_init_leave (&wixl_msi_table_error_type_id__volatile, wixl_msi_table_error_type_id);
	}
	return wixl_msi_table_error_type_id__volatile;
}


LibmsiRecord* wixl_msi_table_file_add (WixlMsiTableFile* self, const gchar* File, const gchar* Component, const gchar* FileName, gint FileSize, gint Attributes, gint Sequence, GError** error) {
	LibmsiRecord* result = NULL;
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_ = NULL;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	gboolean _tmp5_ = FALSE;
	LibmsiRecord* _tmp6_ = NULL;
	const gchar* _tmp7_ = NULL;
	gboolean _tmp8_ = FALSE;
	LibmsiRecord* _tmp25_ = NULL;
	LibmsiRecord* _tmp26_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (File != NULL, NULL);
	g_return_val_if_fail (Component != NULL, NULL);
	g_return_val_if_fail (FileName != NULL, NULL);
	_tmp0_ = libmsi_record_new ((guint) 6);
	rec = _tmp0_;
	_tmp6_ = rec;
	_tmp7_ = File;
	_tmp8_ = libmsi_record_set_string (_tmp6_, (guint) 1, _tmp7_);
	if (!_tmp8_) {
		_tmp5_ = TRUE;
	} else {
		LibmsiRecord* _tmp9_ = NULL;
		const gchar* _tmp10_ = NULL;
		gboolean _tmp11_ = FALSE;
		_tmp9_ = rec;
		_tmp10_ = Component;
		_tmp11_ = libmsi_record_set_string (_tmp9_, (guint) 2, _tmp10_);
		_tmp5_ = !_tmp11_;
	}
	if (_tmp5_) {
		_tmp4_ = TRUE;
	} else {
		LibmsiRecord* _tmp12_ = NULL;
		const gchar* _tmp13_ = NULL;
		gboolean _tmp14_ = FALSE;
		_tmp12_ = rec;
		_tmp13_ = FileName;
		_tmp14_ = libmsi_record_set_string (_tmp12_, (guint) 3, _tmp13_);
		_tmp4_ = !_tmp14_;
	}
	if (_tmp4_) {
		_tmp3_ = TRUE;
	} else {
		LibmsiRecord* _tmp15_ = NULL;
		gint _tmp16_ = 0;
		gboolean _tmp17_ = FALSE;
		_tmp15_ = rec;
		_tmp16_ = FileSize;
		_tmp17_ = libmsi_record_set_int (_tmp15_, (guint) 4, _tmp16_);
		_tmp3_ = !_tmp17_;
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		LibmsiRecord* _tmp18_ = NULL;
		gint _tmp19_ = 0;
		gboolean _tmp20_ = FALSE;
		_tmp18_ = rec;
		_tmp19_ = Attributes;
		_tmp20_ = libmsi_record_set_int (_tmp18_, (guint) 5, _tmp19_);
		_tmp2_ = !_tmp20_;
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp21_ = NULL;
		gint _tmp22_ = 0;
		gboolean _tmp23_ = FALSE;
		_tmp21_ = rec;
		_tmp22_ = Sequence;
		_tmp23_ = libmsi_record_set_int (_tmp21_, (guint) 6, _tmp22_);
		_tmp1_ = !_tmp23_;
	}
	if (_tmp1_) {
		GError* _tmp24_ = NULL;
		_tmp24_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error_ = _tmp24_;
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (rec);
		return NULL;
	}
	_tmp25_ = rec;
	_tmp26_ = _g_object_ref0 (_tmp25_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp26_);
	result = rec;
	return result;
}


gboolean wixl_msi_table_file_set_sequence (LibmsiRecord* rec, gint Sequence) {
	gboolean result = FALSE;
	LibmsiRecord* _tmp0_ = NULL;
	gint _tmp1_ = 0;
	gboolean _tmp2_ = FALSE;
	g_return_val_if_fail (rec != NULL, FALSE);
	_tmp0_ = rec;
	_tmp1_ = Sequence;
	_tmp2_ = libmsi_record_set_int (_tmp0_, (guint) 6, _tmp1_);
	result = _tmp2_;
	return result;
}


WixlMsiTableFile* wixl_msi_table_file_construct (GType object_type) {
	WixlMsiTableFile * self = NULL;
	self = (WixlMsiTableFile*) wixl_msi_table_construct (object_type);
	return self;
}


WixlMsiTableFile* wixl_msi_table_file_new (void) {
	return wixl_msi_table_file_construct (WIXL_TYPE_MSI_TABLE_FILE);
}


static void wixl_msi_table_file_class_init (WixlMsiTableFileClass * klass) {
	gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	wixl_msi_table_file_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("File");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `File` (`File` CHAR(72) NOT NULL, `Component_` CHAR(72) N" \
"OT NULL, `FileName` CHAR(255) NOT NULL LOCALIZABLE, `FileSize` LONG NO" \
"T NULL, `Version` CHAR(72), `Language` CHAR(20), `Attributes` INT, `Se" \
"quence` LONG NOT NULL PRIMARY KEY `File`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `File` (`File`, `Component_`, `FileName`, `FileSize`, `Att" \
"ributes`, `Sequence`) VALUES (?, ?, ?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}


static void wixl_msi_table_file_instance_init (WixlMsiTableFile * self) {
}


GType wixl_msi_table_file_get_type (void) {
	static volatile gsize wixl_msi_table_file_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_table_file_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableFileClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_file_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableFile), 0, (GInstanceInitFunc) wixl_msi_table_file_instance_init, NULL };
		GType wixl_msi_table_file_type_id;
		wixl_msi_table_file_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableFile", &g_define_type_info, 0);
		g_once_init_leave (&wixl_msi_table_file_type_id__volatile, wixl_msi_table_file_type_id);
	}
	return wixl_msi_table_file_type_id__volatile;
}


gboolean wixl_msi_table_media_set_last_sequence (WixlMsiTableMedia* self, LibmsiRecord* rec, gint last_sequence) {
	gboolean result = FALSE;
	LibmsiRecord* _tmp0_ = NULL;
	gint _tmp1_ = 0;
	gboolean _tmp2_ = FALSE;
	g_return_val_if_fail (self != NULL, FALSE);
	g_return_val_if_fail (rec != NULL, FALSE);
	_tmp0_ = rec;
	_tmp1_ = last_sequence;
	_tmp2_ = libmsi_record_set_int (_tmp0_, (guint) 2, _tmp1_);
	result = _tmp2_;
	return result;
}


LibmsiRecord* wixl_msi_table_media_add (WixlMsiTableMedia* self, const gchar* DiskId, const gchar* DiskPrompt, const gchar* Cabinet, GError** error) {
	LibmsiRecord* result = NULL;
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_ = NULL;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	LibmsiRecord* _tmp4_ = NULL;
	const gchar* _tmp5_ = NULL;
	gint _tmp6_ = 0;
	gboolean _tmp7_ = FALSE;
	LibmsiRecord* _tmp19_ = NULL;
	LibmsiRecord* _tmp20_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (DiskId != NULL, NULL);
	g_return_val_if_fail (Cabinet != NULL, NULL);
	_tmp0_ = libmsi_record_new ((guint) 4);
	rec = _tmp0_;
	_tmp4_ = rec;
	_tmp5_ = DiskId;
	_tmp6_ = atoi (_tmp5_);
	_tmp7_ = libmsi_record_set_int (_tmp4_, (guint) 1, _tmp6_);
	if (!_tmp7_) {
		_tmp3_ = TRUE;
	} else {
		LibmsiRecord* _tmp8_ = NULL;
		gboolean _tmp9_ = FALSE;
		_tmp8_ = rec;
		_tmp9_ = libmsi_record_set_int (_tmp8_, (guint) 2, 0);
		_tmp3_ = !_tmp9_;
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		gboolean _tmp10_ = FALSE;
		const gchar* _tmp11_ = NULL;
		_tmp11_ = DiskPrompt;
		if (_tmp11_ != NULL) {
			LibmsiRecord* _tmp12_ = NULL;
			const gchar* _tmp13_ = NULL;
			gboolean _tmp14_ = FALSE;
			_tmp12_ = rec;
			_tmp13_ = DiskPrompt;
			_tmp14_ = libmsi_record_set_string (_tmp12_, (guint) 3, _tmp13_);
			_tmp10_ = !_tmp14_;
		} else {
			_tmp10_ = FALSE;
		}
		_tmp2_ = _tmp10_;
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp15_ = NULL;
		const gchar* _tmp16_ = NULL;
		gboolean _tmp17_ = FALSE;
		_tmp15_ = rec;
		_tmp16_ = Cabinet;
		_tmp17_ = libmsi_record_set_string (_tmp15_, (guint) 4, _tmp16_);
		_tmp1_ = !_tmp17_;
	}
	if (_tmp1_) {
		GError* _tmp18_ = NULL;
		_tmp18_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error_ = _tmp18_;
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (rec);
		return NULL;
	}
	_tmp19_ = rec;
	_tmp20_ = _g_object_ref0 (_tmp19_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp20_);
	result = rec;
	return result;
}


WixlMsiTableMedia* wixl_msi_table_media_construct (GType object_type) {
	WixlMsiTableMedia * self = NULL;
	self = (WixlMsiTableMedia*) wixl_msi_table_construct (object_type);
	return self;
}


WixlMsiTableMedia* wixl_msi_table_media_new (void) {
	return wixl_msi_table_media_construct (WIXL_TYPE_MSI_TABLE_MEDIA);
}


static void wixl_msi_table_media_class_init (WixlMsiTableMediaClass * klass) {
	gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	wixl_msi_table_media_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("Media");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `Media` (`DiskId` INT NOT NULL, `LastSequence` LONG NOT N" \
"ULL, `DiskPrompt` CHAR(64) LOCALIZABLE, `Cabinet` CHAR(255), `VolumeLa" \
"bel` CHAR(32), `Source` CHAR(72) PRIMARY KEY `DiskId`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `Media` (`DiskId`, `LastSequence`, `DiskPrompt`, `Cabinet`" \
") VALUES (?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}


static void wixl_msi_table_media_instance_init (WixlMsiTableMedia * self) {
}


GType wixl_msi_table_media_get_type (void) {
	static volatile gsize wixl_msi_table_media_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_table_media_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableMediaClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_media_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableMedia), 0, (GInstanceInitFunc) wixl_msi_table_media_instance_init, NULL };
		GType wixl_msi_table_media_type_id;
		wixl_msi_table_media_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableMedia", &g_define_type_info, 0);
		g_once_init_leave (&wixl_msi_table_media_type_id__volatile, wixl_msi_table_media_type_id);
	}
	return wixl_msi_table_media_type_id__volatile;
}


void wixl_msi_table_upgrade_add (WixlMsiTableUpgrade* self, const gchar* UpgradeCode, const gchar* VersionMin, const gchar* VersionMax, gint Attributes, const gchar* ActionProperty, GError** error) {
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_ = NULL;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	LibmsiRecord* _tmp5_ = NULL;
	const gchar* _tmp6_ = NULL;
	gboolean _tmp7_ = FALSE;
	LibmsiRecord* _tmp23_ = NULL;
	LibmsiRecord* _tmp24_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (UpgradeCode != NULL);
	g_return_if_fail (VersionMin != NULL);
	g_return_if_fail (ActionProperty != NULL);
	_tmp0_ = libmsi_record_new ((guint) 5);
	rec = _tmp0_;
	_tmp5_ = rec;
	_tmp6_ = UpgradeCode;
	_tmp7_ = libmsi_record_set_string (_tmp5_, (guint) 1, _tmp6_);
	if (!_tmp7_) {
		_tmp4_ = TRUE;
	} else {
		LibmsiRecord* _tmp8_ = NULL;
		const gchar* _tmp9_ = NULL;
		gboolean _tmp10_ = FALSE;
		_tmp8_ = rec;
		_tmp9_ = VersionMin;
		_tmp10_ = libmsi_record_set_string (_tmp8_, (guint) 2, _tmp9_);
		_tmp4_ = !_tmp10_;
	}
	if (_tmp4_) {
		_tmp3_ = TRUE;
	} else {
		gboolean _tmp11_ = FALSE;
		const gchar* _tmp12_ = NULL;
		_tmp12_ = VersionMax;
		if (_tmp12_ != NULL) {
			LibmsiRecord* _tmp13_ = NULL;
			const gchar* _tmp14_ = NULL;
			gboolean _tmp15_ = FALSE;
			_tmp13_ = rec;
			_tmp14_ = VersionMax;
			_tmp15_ = libmsi_record_set_string (_tmp13_, (guint) 3, _tmp14_);
			_tmp11_ = !_tmp15_;
		} else {
			_tmp11_ = FALSE;
		}
		_tmp3_ = _tmp11_;
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		LibmsiRecord* _tmp16_ = NULL;
		gint _tmp17_ = 0;
		gboolean _tmp18_ = FALSE;
		_tmp16_ = rec;
		_tmp17_ = Attributes;
		_tmp18_ = libmsi_record_set_int (_tmp16_, (guint) 4, _tmp17_);
		_tmp2_ = !_tmp18_;
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp19_ = NULL;
		const gchar* _tmp20_ = NULL;
		gboolean _tmp21_ = FALSE;
		_tmp19_ = rec;
		_tmp20_ = ActionProperty;
		_tmp21_ = libmsi_record_set_string (_tmp19_, (guint) 5, _tmp20_);
		_tmp1_ = !_tmp21_;
	}
	if (_tmp1_) {
		GError* _tmp22_ = NULL;
		_tmp22_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error_ = _tmp22_;
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp23_ = rec;
	_tmp24_ = _g_object_ref0 (_tmp23_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp24_);
	_g_object_unref0 (rec);
}


WixlMsiTableUpgrade* wixl_msi_table_upgrade_construct (GType object_type) {
	WixlMsiTableUpgrade * self = NULL;
	self = (WixlMsiTableUpgrade*) wixl_msi_table_construct (object_type);
	return self;
}


WixlMsiTableUpgrade* wixl_msi_table_upgrade_new (void) {
	return wixl_msi_table_upgrade_construct (WIXL_TYPE_MSI_TABLE_UPGRADE);
}


static void wixl_msi_table_upgrade_class_init (WixlMsiTableUpgradeClass * klass) {
	gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	wixl_msi_table_upgrade_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("Upgrade");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `Upgrade` (`UpgradeCode` CHAR(38) NOT NULL, `VersionMin` " \
"CHAR(20), `VersionMax` CHAR(20), `Language` CHAR(255), `Attributes` LO" \
"NG NOT NULL, `Remove` CHAR(255), `ActionProperty` CHAR(72) NOT NULL PR" \
"IMARY KEY `UpgradeCode`, `VersionMin`, `VersionMax`, `Language`, `Attr" \
"ibutes`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `Upgrade` (`UpgradeCode`, `VersionMin`, `VersionMax`, `Att" \
"ributes`, `ActionProperty`) VALUES (?, ?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}


static void wixl_msi_table_upgrade_instance_init (WixlMsiTableUpgrade * self) {
}


GType wixl_msi_table_upgrade_get_type (void) {
	static volatile gsize wixl_msi_table_upgrade_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_table_upgrade_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableUpgradeClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_upgrade_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableUpgrade), 0, (GInstanceInitFunc) wixl_msi_table_upgrade_instance_init, NULL };
		GType wixl_msi_table_upgrade_type_id;
		wixl_msi_table_upgrade_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableUpgrade", &g_define_type_info, 0);
		g_once_init_leave (&wixl_msi_table_upgrade_type_id__volatile, wixl_msi_table_upgrade_type_id);
	}
	return wixl_msi_table_upgrade_type_id__volatile;
}


void wixl_msi_table_launch_condition_add (WixlMsiTableLaunchCondition* self, const gchar* condition, const gchar* description, GError** error) {
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_ = NULL;
	gboolean _tmp1_ = FALSE;
	LibmsiRecord* _tmp2_ = NULL;
	const gchar* _tmp3_ = NULL;
	gboolean _tmp4_ = FALSE;
	LibmsiRecord* _tmp9_ = NULL;
	LibmsiRecord* _tmp10_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (condition != NULL);
	g_return_if_fail (description != NULL);
	_tmp0_ = libmsi_record_new ((guint) 2);
	rec = _tmp0_;
	_tmp2_ = rec;
	_tmp3_ = condition;
	_tmp4_ = libmsi_record_set_string (_tmp2_, (guint) 1, _tmp3_);
	if (!_tmp4_) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp5_ = NULL;
		const gchar* _tmp6_ = NULL;
		gboolean _tmp7_ = FALSE;
		_tmp5_ = rec;
		_tmp6_ = description;
		_tmp7_ = libmsi_record_set_string (_tmp5_, (guint) 2, _tmp6_);
		_tmp1_ = !_tmp7_;
	}
	if (_tmp1_) {
		GError* _tmp8_ = NULL;
		_tmp8_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error_ = _tmp8_;
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp9_ = rec;
	_tmp10_ = _g_object_ref0 (_tmp9_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp10_);
	_g_object_unref0 (rec);
}


WixlMsiTableLaunchCondition* wixl_msi_table_launch_condition_construct (GType object_type) {
	WixlMsiTableLaunchCondition * self = NULL;
	self = (WixlMsiTableLaunchCondition*) wixl_msi_table_construct (object_type);
	return self;
}


WixlMsiTableLaunchCondition* wixl_msi_table_launch_condition_new (void) {
	return wixl_msi_table_launch_condition_construct (WIXL_TYPE_MSI_TABLE_LAUNCH_CONDITION);
}


static void wixl_msi_table_launch_condition_class_init (WixlMsiTableLaunchConditionClass * klass) {
	gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	wixl_msi_table_launch_condition_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("LaunchCondition");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `LaunchCondition` (`Condition` CHAR(255) NOT NULL, `Descr" \
"iption` CHAR(255) NOT NULL LOCALIZABLE PRIMARY KEY `Condition`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `LaunchCondition` (`Condition`, `Description`) VALUES (?, " \
"?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}


static void wixl_msi_table_launch_condition_instance_init (WixlMsiTableLaunchCondition * self) {
}


GType wixl_msi_table_launch_condition_get_type (void) {
	static volatile gsize wixl_msi_table_launch_condition_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_table_launch_condition_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableLaunchConditionClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_launch_condition_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableLaunchCondition), 0, (GInstanceInitFunc) wixl_msi_table_launch_condition_instance_init, NULL };
		GType wixl_msi_table_launch_condition_type_id;
		wixl_msi_table_launch_condition_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableLaunchCondition", &g_define_type_info, 0);
		g_once_init_leave (&wixl_msi_table_launch_condition_type_id__volatile, wixl_msi_table_launch_condition_type_id);
	}
	return wixl_msi_table_launch_condition_type_id__volatile;
}


void wixl_msi_table_property_add (WixlMsiTableProperty* self, const gchar* prop, const gchar* value, GError** error) {
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_ = NULL;
	gboolean _tmp1_ = FALSE;
	LibmsiRecord* _tmp2_ = NULL;
	const gchar* _tmp3_ = NULL;
	gboolean _tmp4_ = FALSE;
	LibmsiRecord* _tmp9_ = NULL;
	LibmsiRecord* _tmp10_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (prop != NULL);
	g_return_if_fail (value != NULL);
	_tmp0_ = libmsi_record_new ((guint) 2);
	rec = _tmp0_;
	_tmp2_ = rec;
	_tmp3_ = prop;
	_tmp4_ = libmsi_record_set_string (_tmp2_, (guint) 1, _tmp3_);
	if (!_tmp4_) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp5_ = NULL;
		const gchar* _tmp6_ = NULL;
		gboolean _tmp7_ = FALSE;
		_tmp5_ = rec;
		_tmp6_ = value;
		_tmp7_ = libmsi_record_set_string (_tmp5_, (guint) 2, _tmp6_);
		_tmp1_ = !_tmp7_;
	}
	if (_tmp1_) {
		GError* _tmp8_ = NULL;
		_tmp8_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error_ = _tmp8_;
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp9_ = rec;
	_tmp10_ = _g_object_ref0 (_tmp9_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp10_);
	_g_object_unref0 (rec);
}


WixlMsiTableProperty* wixl_msi_table_property_construct (GType object_type) {
	WixlMsiTableProperty * self = NULL;
	self = (WixlMsiTableProperty*) wixl_msi_table_construct (object_type);
	return self;
}


WixlMsiTableProperty* wixl_msi_table_property_new (void) {
	return wixl_msi_table_property_construct (WIXL_TYPE_MSI_TABLE_PROPERTY);
}


static void wixl_msi_table_property_class_init (WixlMsiTablePropertyClass * klass) {
	gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	wixl_msi_table_property_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("Property");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `Property` (`Property` CHAR(72) NOT NULL, `Value` CHAR(0)" \
" NOT NULL LOCALIZABLE PRIMARY KEY `Property`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `Property` (`Property`, `Value`) VALUES (?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}


static void wixl_msi_table_property_instance_init (WixlMsiTableProperty * self) {
}


GType wixl_msi_table_property_get_type (void) {
	static volatile gsize wixl_msi_table_property_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_table_property_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTablePropertyClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_property_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableProperty), 0, (GInstanceInitFunc) wixl_msi_table_property_instance_init, NULL };
		GType wixl_msi_table_property_type_id;
		wixl_msi_table_property_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableProperty", &g_define_type_info, 0);
		g_once_init_leave (&wixl_msi_table_property_type_id__volatile, wixl_msi_table_property_type_id);
	}
	return wixl_msi_table_property_type_id__volatile;
}


void wixl_msi_table_directory_add (WixlMsiTableDirectory* self, const gchar* Directory, const gchar* Parent, const gchar* DefaultDir, GError** error) {
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_ = NULL;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	LibmsiRecord* _tmp3_ = NULL;
	const gchar* _tmp4_ = NULL;
	gboolean _tmp5_ = FALSE;
	LibmsiRecord* _tmp13_ = NULL;
	LibmsiRecord* _tmp14_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (Directory != NULL);
	g_return_if_fail (DefaultDir != NULL);
	_tmp0_ = libmsi_record_new ((guint) 3);
	rec = _tmp0_;
	_tmp3_ = rec;
	_tmp4_ = Directory;
	_tmp5_ = libmsi_record_set_string (_tmp3_, (guint) 1, _tmp4_);
	if (!_tmp5_) {
		_tmp2_ = TRUE;
	} else {
		LibmsiRecord* _tmp6_ = NULL;
		const gchar* _tmp7_ = NULL;
		gboolean _tmp8_ = FALSE;
		_tmp6_ = rec;
		_tmp7_ = Parent;
		_tmp8_ = libmsi_record_set_string (_tmp6_, (guint) 2, _tmp7_);
		_tmp2_ = !_tmp8_;
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp9_ = NULL;
		const gchar* _tmp10_ = NULL;
		gboolean _tmp11_ = FALSE;
		_tmp9_ = rec;
		_tmp10_ = DefaultDir;
		_tmp11_ = libmsi_record_set_string (_tmp9_, (guint) 3, _tmp10_);
		_tmp1_ = !_tmp11_;
	}
	if (_tmp1_) {
		GError* _tmp12_ = NULL;
		_tmp12_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error_ = _tmp12_;
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp13_ = rec;
	_tmp14_ = _g_object_ref0 (_tmp13_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp14_);
	_g_object_unref0 (rec);
}


WixlMsiTableDirectory* wixl_msi_table_directory_construct (GType object_type) {
	WixlMsiTableDirectory * self = NULL;
	self = (WixlMsiTableDirectory*) wixl_msi_table_construct (object_type);
	return self;
}


WixlMsiTableDirectory* wixl_msi_table_directory_new (void) {
	return wixl_msi_table_directory_construct (WIXL_TYPE_MSI_TABLE_DIRECTORY);
}


static void wixl_msi_table_directory_class_init (WixlMsiTableDirectoryClass * klass) {
	gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	wixl_msi_table_directory_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("Directory");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `Directory` (`Directory` CHAR(72) NOT NULL, `Directory_Pa" \
"rent` CHAR(72), `DefaultDir` CHAR(255) NOT NULL LOCALIZABLE PRIMARY KE" \
"Y `Directory`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `Directory` (`Directory`, `Directory_Parent`, `DefaultDir`" \
") VALUES (?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}


static void wixl_msi_table_directory_instance_init (WixlMsiTableDirectory * self) {
}


GType wixl_msi_table_directory_get_type (void) {
	static volatile gsize wixl_msi_table_directory_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_table_directory_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableDirectoryClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_directory_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableDirectory), 0, (GInstanceInitFunc) wixl_msi_table_directory_instance_init, NULL };
		GType wixl_msi_table_directory_type_id;
		wixl_msi_table_directory_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableDirectory", &g_define_type_info, 0);
		g_once_init_leave (&wixl_msi_table_directory_type_id__volatile, wixl_msi_table_directory_type_id);
	}
	return wixl_msi_table_directory_type_id__volatile;
}


void wixl_msi_table_component_add (WixlMsiTableComponent* self, const gchar* Component, const gchar* ComponentId, const gchar* Directory, gint Attributes, const gchar* KeyPath, GError** error) {
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_ = NULL;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	LibmsiRecord* _tmp5_ = NULL;
	const gchar* _tmp6_ = NULL;
	gboolean _tmp7_ = FALSE;
	LibmsiRecord* _tmp21_ = NULL;
	LibmsiRecord* _tmp22_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (Component != NULL);
	g_return_if_fail (ComponentId != NULL);
	g_return_if_fail (Directory != NULL);
	_tmp0_ = libmsi_record_new ((guint) 5);
	rec = _tmp0_;
	_tmp5_ = rec;
	_tmp6_ = Component;
	_tmp7_ = libmsi_record_set_string (_tmp5_, (guint) 1, _tmp6_);
	if (!_tmp7_) {
		_tmp4_ = TRUE;
	} else {
		LibmsiRecord* _tmp8_ = NULL;
		const gchar* _tmp9_ = NULL;
		gboolean _tmp10_ = FALSE;
		_tmp8_ = rec;
		_tmp9_ = ComponentId;
		_tmp10_ = libmsi_record_set_string (_tmp8_, (guint) 2, _tmp9_);
		_tmp4_ = !_tmp10_;
	}
	if (_tmp4_) {
		_tmp3_ = TRUE;
	} else {
		LibmsiRecord* _tmp11_ = NULL;
		const gchar* _tmp12_ = NULL;
		gboolean _tmp13_ = FALSE;
		_tmp11_ = rec;
		_tmp12_ = Directory;
		_tmp13_ = libmsi_record_set_string (_tmp11_, (guint) 3, _tmp12_);
		_tmp3_ = !_tmp13_;
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		LibmsiRecord* _tmp14_ = NULL;
		gint _tmp15_ = 0;
		gboolean _tmp16_ = FALSE;
		_tmp14_ = rec;
		_tmp15_ = Attributes;
		_tmp16_ = libmsi_record_set_int (_tmp14_, (guint) 4, _tmp15_);
		_tmp2_ = !_tmp16_;
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp17_ = NULL;
		const gchar* _tmp18_ = NULL;
		gboolean _tmp19_ = FALSE;
		_tmp17_ = rec;
		_tmp18_ = KeyPath;
		_tmp19_ = libmsi_record_set_string (_tmp17_, (guint) 5, _tmp18_);
		_tmp1_ = !_tmp19_;
	}
	if (_tmp1_) {
		GError* _tmp20_ = NULL;
		_tmp20_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error_ = _tmp20_;
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp21_ = rec;
	_tmp22_ = _g_object_ref0 (_tmp21_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp22_);
	_g_object_unref0 (rec);
}


WixlMsiTableComponent* wixl_msi_table_component_construct (GType object_type) {
	WixlMsiTableComponent * self = NULL;
	self = (WixlMsiTableComponent*) wixl_msi_table_construct (object_type);
	return self;
}


WixlMsiTableComponent* wixl_msi_table_component_new (void) {
	return wixl_msi_table_component_construct (WIXL_TYPE_MSI_TABLE_COMPONENT);
}


static void wixl_msi_table_component_class_init (WixlMsiTableComponentClass * klass) {
	gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	wixl_msi_table_component_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("Component");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `Component` (`Component` CHAR(72) NOT NULL, `ComponentId`" \
" CHAR(38), `Directory_` CHAR(72) NOT NULL, `Attributes` INT NOT NULL, " \
"`Condition` CHAR(255), `KeyPath` CHAR(72) PRIMARY KEY `Component`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `Component` (`Component`, `ComponentId`, `Directory_`, `At" \
"tributes`, `KeyPath`) VALUES (?, ?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}


static void wixl_msi_table_component_instance_init (WixlMsiTableComponent * self) {
}


GType wixl_msi_table_component_get_type (void) {
	static volatile gsize wixl_msi_table_component_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_table_component_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableComponentClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_component_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableComponent), 0, (GInstanceInitFunc) wixl_msi_table_component_instance_init, NULL };
		GType wixl_msi_table_component_type_id;
		wixl_msi_table_component_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableComponent", &g_define_type_info, 0);
		g_once_init_leave (&wixl_msi_table_component_type_id__volatile, wixl_msi_table_component_type_id);
	}
	return wixl_msi_table_component_type_id__volatile;
}


void wixl_msi_table_feature_components_add (WixlMsiTableFeatureComponents* self, const gchar* Feature, const gchar* Component, GError** error) {
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_ = NULL;
	gboolean _tmp1_ = FALSE;
	LibmsiRecord* _tmp2_ = NULL;
	const gchar* _tmp3_ = NULL;
	gboolean _tmp4_ = FALSE;
	LibmsiRecord* _tmp9_ = NULL;
	LibmsiRecord* _tmp10_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (Feature != NULL);
	g_return_if_fail (Component != NULL);
	_tmp0_ = libmsi_record_new ((guint) 2);
	rec = _tmp0_;
	_tmp2_ = rec;
	_tmp3_ = Feature;
	_tmp4_ = libmsi_record_set_string (_tmp2_, (guint) 1, _tmp3_);
	if (!_tmp4_) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp5_ = NULL;
		const gchar* _tmp6_ = NULL;
		gboolean _tmp7_ = FALSE;
		_tmp5_ = rec;
		_tmp6_ = Component;
		_tmp7_ = libmsi_record_set_string (_tmp5_, (guint) 2, _tmp6_);
		_tmp1_ = !_tmp7_;
	}
	if (_tmp1_) {
		GError* _tmp8_ = NULL;
		_tmp8_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error_ = _tmp8_;
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp9_ = rec;
	_tmp10_ = _g_object_ref0 (_tmp9_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp10_);
	_g_object_unref0 (rec);
}


WixlMsiTableFeatureComponents* wixl_msi_table_feature_components_construct (GType object_type) {
	WixlMsiTableFeatureComponents * self = NULL;
	self = (WixlMsiTableFeatureComponents*) wixl_msi_table_construct (object_type);
	return self;
}


WixlMsiTableFeatureComponents* wixl_msi_table_feature_components_new (void) {
	return wixl_msi_table_feature_components_construct (WIXL_TYPE_MSI_TABLE_FEATURE_COMPONENTS);
}


static void wixl_msi_table_feature_components_class_init (WixlMsiTableFeatureComponentsClass * klass) {
	gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	wixl_msi_table_feature_components_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("FeatureComponents");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `FeatureComponents` (`Feature_` CHAR(38) NOT NULL, `Compo" \
"nent_` CHAR(72) NOT NULL PRIMARY KEY `Feature_`, `Component_`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `FeatureComponents` (`Feature_`, `Component_`) VALUES (?, " \
"?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}


static void wixl_msi_table_feature_components_instance_init (WixlMsiTableFeatureComponents * self) {
}


GType wixl_msi_table_feature_components_get_type (void) {
	static volatile gsize wixl_msi_table_feature_components_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_table_feature_components_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableFeatureComponentsClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_feature_components_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableFeatureComponents), 0, (GInstanceInitFunc) wixl_msi_table_feature_components_instance_init, NULL };
		GType wixl_msi_table_feature_components_type_id;
		wixl_msi_table_feature_components_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableFeatureComponents", &g_define_type_info, 0);
		g_once_init_leave (&wixl_msi_table_feature_components_type_id__volatile, wixl_msi_table_feature_components_type_id);
	}
	return wixl_msi_table_feature_components_type_id__volatile;
}


void wixl_msi_table_registry_add (WixlMsiTableRegistry* self, const gchar* Registry, gint Root, const gchar* Key, const gchar* Component, const gchar* Name, const gchar* Value, GError** error) {
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_ = NULL;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	gboolean _tmp5_ = FALSE;
	LibmsiRecord* _tmp6_ = NULL;
	const gchar* _tmp7_ = NULL;
	gboolean _tmp8_ = FALSE;
	LibmsiRecord* _tmp29_ = NULL;
	LibmsiRecord* _tmp30_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (Registry != NULL);
	g_return_if_fail (Key != NULL);
	g_return_if_fail (Component != NULL);
	_tmp0_ = libmsi_record_new ((guint) 6);
	rec = _tmp0_;
	_tmp6_ = rec;
	_tmp7_ = Registry;
	_tmp8_ = libmsi_record_set_string (_tmp6_, (guint) 1, _tmp7_);
	if (!_tmp8_) {
		_tmp5_ = TRUE;
	} else {
		LibmsiRecord* _tmp9_ = NULL;
		gint _tmp10_ = 0;
		gboolean _tmp11_ = FALSE;
		_tmp9_ = rec;
		_tmp10_ = Root;
		_tmp11_ = libmsi_record_set_int (_tmp9_, (guint) 2, _tmp10_);
		_tmp5_ = !_tmp11_;
	}
	if (_tmp5_) {
		_tmp4_ = TRUE;
	} else {
		LibmsiRecord* _tmp12_ = NULL;
		const gchar* _tmp13_ = NULL;
		gboolean _tmp14_ = FALSE;
		_tmp12_ = rec;
		_tmp13_ = Key;
		_tmp14_ = libmsi_record_set_string (_tmp12_, (guint) 3, _tmp13_);
		_tmp4_ = !_tmp14_;
	}
	if (_tmp4_) {
		_tmp3_ = TRUE;
	} else {
		LibmsiRecord* _tmp15_ = NULL;
		const gchar* _tmp16_ = NULL;
		gboolean _tmp17_ = FALSE;
		_tmp15_ = rec;
		_tmp16_ = Component;
		_tmp17_ = libmsi_record_set_string (_tmp15_, (guint) 4, _tmp16_);
		_tmp3_ = !_tmp17_;
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		gboolean _tmp18_ = FALSE;
		const gchar* _tmp19_ = NULL;
		_tmp19_ = Name;
		if (_tmp19_ != NULL) {
			LibmsiRecord* _tmp20_ = NULL;
			const gchar* _tmp21_ = NULL;
			gboolean _tmp22_ = FALSE;
			_tmp20_ = rec;
			_tmp21_ = Name;
			_tmp22_ = libmsi_record_set_string (_tmp20_, (guint) 5, _tmp21_);
			_tmp18_ = !_tmp22_;
		} else {
			_tmp18_ = FALSE;
		}
		_tmp2_ = _tmp18_;
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		gboolean _tmp23_ = FALSE;
		const gchar* _tmp24_ = NULL;
		_tmp24_ = Value;
		if (_tmp24_ != NULL) {
			LibmsiRecord* _tmp25_ = NULL;
			const gchar* _tmp26_ = NULL;
			gboolean _tmp27_ = FALSE;
			_tmp25_ = rec;
			_tmp26_ = Value;
			_tmp27_ = libmsi_record_set_string (_tmp25_, (guint) 6, _tmp26_);
			_tmp23_ = !_tmp27_;
		} else {
			_tmp23_ = FALSE;
		}
		_tmp1_ = _tmp23_;
	}
	if (_tmp1_) {
		GError* _tmp28_ = NULL;
		_tmp28_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error_ = _tmp28_;
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp29_ = rec;
	_tmp30_ = _g_object_ref0 (_tmp29_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp30_);
	_g_object_unref0 (rec);
}


WixlMsiTableRegistry* wixl_msi_table_registry_construct (GType object_type) {
	WixlMsiTableRegistry * self = NULL;
	self = (WixlMsiTableRegistry*) wixl_msi_table_construct (object_type);
	return self;
}


WixlMsiTableRegistry* wixl_msi_table_registry_new (void) {
	return wixl_msi_table_registry_construct (WIXL_TYPE_MSI_TABLE_REGISTRY);
}


static void wixl_msi_table_registry_class_init (WixlMsiTableRegistryClass * klass) {
	gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	wixl_msi_table_registry_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("Registry");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `Registry` (`Registry` CHAR(72) NOT NULL, `Root` INT NOT " \
"NULL, `Key` CHAR(255) NOT NULL LOCALIZABLE, `Name` CHAR(255) LOCALIZAB" \
"LE, `Value` CHAR(0) LOCALIZABLE, `Component_` CHAR(72) NOT NULL PRIMAR" \
"Y KEY `Registry`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `Registry` (`Registry`, `Root`, `Key`, `Component_`, `Name" \
"`, `Value`) VALUES (?, ?, ?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}


static void wixl_msi_table_registry_instance_init (WixlMsiTableRegistry * self) {
}


GType wixl_msi_table_registry_get_type (void) {
	static volatile gsize wixl_msi_table_registry_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_table_registry_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableRegistryClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_registry_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableRegistry), 0, (GInstanceInitFunc) wixl_msi_table_registry_instance_init, NULL };
		GType wixl_msi_table_registry_type_id;
		wixl_msi_table_registry_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableRegistry", &g_define_type_info, 0);
		g_once_init_leave (&wixl_msi_table_registry_type_id__volatile, wixl_msi_table_registry_type_id);
	}
	return wixl_msi_table_registry_type_id__volatile;
}


LibmsiRecord* wixl_msi_table_shortcut_add (WixlMsiTableShortcut* self, const gchar* Shortcut, const gchar* Directory, const gchar* Name, const gchar* Component, GError** error) {
	LibmsiRecord* result = NULL;
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_ = NULL;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	LibmsiRecord* _tmp4_ = NULL;
	const gchar* _tmp5_ = NULL;
	gboolean _tmp6_ = FALSE;
	LibmsiRecord* _tmp17_ = NULL;
	LibmsiRecord* _tmp18_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (Shortcut != NULL, NULL);
	g_return_val_if_fail (Directory != NULL, NULL);
	g_return_val_if_fail (Name != NULL, NULL);
	g_return_val_if_fail (Component != NULL, NULL);
	_tmp0_ = libmsi_record_new ((guint) 9);
	rec = _tmp0_;
	_tmp4_ = rec;
	_tmp5_ = Shortcut;
	_tmp6_ = libmsi_record_set_string (_tmp4_, (guint) 1, _tmp5_);
	if (!_tmp6_) {
		_tmp3_ = TRUE;
	} else {
		LibmsiRecord* _tmp7_ = NULL;
		const gchar* _tmp8_ = NULL;
		gboolean _tmp9_ = FALSE;
		_tmp7_ = rec;
		_tmp8_ = Directory;
		_tmp9_ = libmsi_record_set_string (_tmp7_, (guint) 2, _tmp8_);
		_tmp3_ = !_tmp9_;
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		LibmsiRecord* _tmp10_ = NULL;
		const gchar* _tmp11_ = NULL;
		gboolean _tmp12_ = FALSE;
		_tmp10_ = rec;
		_tmp11_ = Name;
		_tmp12_ = libmsi_record_set_string (_tmp10_, (guint) 3, _tmp11_);
		_tmp2_ = !_tmp12_;
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp13_ = NULL;
		const gchar* _tmp14_ = NULL;
		gboolean _tmp15_ = FALSE;
		_tmp13_ = rec;
		_tmp14_ = Component;
		_tmp15_ = libmsi_record_set_string (_tmp13_, (guint) 4, _tmp14_);
		_tmp1_ = !_tmp15_;
	}
	if (_tmp1_) {
		GError* _tmp16_ = NULL;
		_tmp16_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error_ = _tmp16_;
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (rec);
		return NULL;
	}
	_tmp17_ = rec;
	_tmp18_ = _g_object_ref0 (_tmp17_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp18_);
	result = rec;
	return result;
}


void wixl_msi_table_shortcut_set_target (LibmsiRecord* rec, const gchar* Target, GError** error) {
	LibmsiRecord* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
	gboolean _tmp2_ = FALSE;
	GError * _inner_error_ = NULL;
	g_return_if_fail (rec != NULL);
	g_return_if_fail (Target != NULL);
	_tmp0_ = rec;
	_tmp1_ = Target;
	_tmp2_ = libmsi_record_set_string (_tmp0_, (guint) 5, _tmp1_);
	if (!_tmp2_) {
		GError* _tmp3_ = NULL;
		_tmp3_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to set record");
		_inner_error_ = _tmp3_;
		g_propagate_error (error, _inner_error_);
		return;
	}
}


void wixl_msi_table_shortcut_set_icon (LibmsiRecord* rec, const gchar* Icon, GError** error) {
	LibmsiRecord* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
	gboolean _tmp2_ = FALSE;
	GError * _inner_error_ = NULL;
	g_return_if_fail (rec != NULL);
	g_return_if_fail (Icon != NULL);
	_tmp0_ = rec;
	_tmp1_ = Icon;
	_tmp2_ = libmsi_record_set_string (_tmp0_, (guint) 6, _tmp1_);
	if (!_tmp2_) {
		GError* _tmp3_ = NULL;
		_tmp3_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to set record");
		_inner_error_ = _tmp3_;
		g_propagate_error (error, _inner_error_);
		return;
	}
}


void wixl_msi_table_shortcut_set_icon_index (LibmsiRecord* rec, gint IconIndex, GError** error) {
	LibmsiRecord* _tmp0_ = NULL;
	gint _tmp1_ = 0;
	gboolean _tmp2_ = FALSE;
	GError * _inner_error_ = NULL;
	g_return_if_fail (rec != NULL);
	_tmp0_ = rec;
	_tmp1_ = IconIndex;
	_tmp2_ = libmsi_record_set_int (_tmp0_, (guint) 7, _tmp1_);
	if (!_tmp2_) {
		GError* _tmp3_ = NULL;
		_tmp3_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to set record");
		_inner_error_ = _tmp3_;
		g_propagate_error (error, _inner_error_);
		return;
	}
}


void wixl_msi_table_shortcut_set_working_dir (LibmsiRecord* rec, const gchar* WkDir, GError** error) {
	LibmsiRecord* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
	gboolean _tmp2_ = FALSE;
	GError * _inner_error_ = NULL;
	g_return_if_fail (rec != NULL);
	g_return_if_fail (WkDir != NULL);
	_tmp0_ = rec;
	_tmp1_ = WkDir;
	_tmp2_ = libmsi_record_set_string (_tmp0_, (guint) 8, _tmp1_);
	if (!_tmp2_) {
		GError* _tmp3_ = NULL;
		_tmp3_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to set record");
		_inner_error_ = _tmp3_;
		g_propagate_error (error, _inner_error_);
		return;
	}
}


void wixl_msi_table_shortcut_set_description (LibmsiRecord* rec, const gchar* Description, GError** error) {
	LibmsiRecord* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
	gboolean _tmp2_ = FALSE;
	GError * _inner_error_ = NULL;
	g_return_if_fail (rec != NULL);
	g_return_if_fail (Description != NULL);
	_tmp0_ = rec;
	_tmp1_ = Description;
	_tmp2_ = libmsi_record_set_string (_tmp0_, (guint) 9, _tmp1_);
	if (!_tmp2_) {
		GError* _tmp3_ = NULL;
		_tmp3_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to set record");
		_inner_error_ = _tmp3_;
		g_propagate_error (error, _inner_error_);
		return;
	}
}


WixlMsiTableShortcut* wixl_msi_table_shortcut_construct (GType object_type) {
	WixlMsiTableShortcut * self = NULL;
	self = (WixlMsiTableShortcut*) wixl_msi_table_construct (object_type);
	return self;
}


WixlMsiTableShortcut* wixl_msi_table_shortcut_new (void) {
	return wixl_msi_table_shortcut_construct (WIXL_TYPE_MSI_TABLE_SHORTCUT);
}


static void wixl_msi_table_shortcut_class_init (WixlMsiTableShortcutClass * klass) {
	gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	wixl_msi_table_shortcut_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("Shortcut");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `Shortcut` (`Shortcut` CHAR(72) NOT NULL, `Directory_` CH" \
"AR(72) NOT NULL, `Name` CHAR(128) NOT NULL LOCALIZABLE, `Component_` C" \
"HAR(72) NOT NULL, `Target` CHAR(72) NOT NULL, `Arguments` CHAR(255), `" \
"Description` CHAR(255) LOCALIZABLE, `Hotkey` INT, `Icon_` CHAR(72), `I" \
"conIndex` INT, `ShowCmd` INT, `WkDir` CHAR(72), `DisplayResourceDLL` C" \
"HAR(255), `DisplayResourceId` INT, `DescriptionResourceDLL` CHAR(255)," \
" `DescriptionResourceId` INT PRIMARY KEY `Shortcut`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `Shortcut` (`Shortcut`, `Directory_`, `Name`, `Component_`" \
", `Target`, `Icon_`, `IconIndex`, `WkDir`, `Description`) VALUES (?, ?" \
", ?, ?, ?, ?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}


static void wixl_msi_table_shortcut_instance_init (WixlMsiTableShortcut * self) {
}


GType wixl_msi_table_shortcut_get_type (void) {
	static volatile gsize wixl_msi_table_shortcut_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_table_shortcut_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableShortcutClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_shortcut_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableShortcut), 0, (GInstanceInitFunc) wixl_msi_table_shortcut_instance_init, NULL };
		GType wixl_msi_table_shortcut_type_id;
		wixl_msi_table_shortcut_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableShortcut", &g_define_type_info, 0);
		g_once_init_leave (&wixl_msi_table_shortcut_type_id__volatile, wixl_msi_table_shortcut_type_id);
	}
	return wixl_msi_table_shortcut_type_id__volatile;
}


void wixl_msi_table_create_folder_add (WixlMsiTableCreateFolder* self, const gchar* Directory, const gchar* Component, GError** error) {
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_ = NULL;
	gboolean _tmp1_ = FALSE;
	LibmsiRecord* _tmp2_ = NULL;
	const gchar* _tmp3_ = NULL;
	gboolean _tmp4_ = FALSE;
	LibmsiRecord* _tmp9_ = NULL;
	LibmsiRecord* _tmp10_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (Directory != NULL);
	g_return_if_fail (Component != NULL);
	_tmp0_ = libmsi_record_new ((guint) 2);
	rec = _tmp0_;
	_tmp2_ = rec;
	_tmp3_ = Directory;
	_tmp4_ = libmsi_record_set_string (_tmp2_, (guint) 1, _tmp3_);
	if (!_tmp4_) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp5_ = NULL;
		const gchar* _tmp6_ = NULL;
		gboolean _tmp7_ = FALSE;
		_tmp5_ = rec;
		_tmp6_ = Component;
		_tmp7_ = libmsi_record_set_string (_tmp5_, (guint) 2, _tmp6_);
		_tmp1_ = !_tmp7_;
	}
	if (_tmp1_) {
		GError* _tmp8_ = NULL;
		_tmp8_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error_ = _tmp8_;
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp9_ = rec;
	_tmp10_ = _g_object_ref0 (_tmp9_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp10_);
	_g_object_unref0 (rec);
}


WixlMsiTableCreateFolder* wixl_msi_table_create_folder_construct (GType object_type) {
	WixlMsiTableCreateFolder * self = NULL;
	self = (WixlMsiTableCreateFolder*) wixl_msi_table_construct (object_type);
	return self;
}


WixlMsiTableCreateFolder* wixl_msi_table_create_folder_new (void) {
	return wixl_msi_table_create_folder_construct (WIXL_TYPE_MSI_TABLE_CREATE_FOLDER);
}


static void wixl_msi_table_create_folder_class_init (WixlMsiTableCreateFolderClass * klass) {
	gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	wixl_msi_table_create_folder_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("CreateFolder");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `CreateFolder` (`Directory_` CHAR(72) NOT NULL, `Componen" \
"t_` CHAR(72) NOT NULL PRIMARY KEY `Directory_`, `Component_`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `CreateFolder` (`Directory_`, `Component_`) VALUES (?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}


static void wixl_msi_table_create_folder_instance_init (WixlMsiTableCreateFolder * self) {
}


GType wixl_msi_table_create_folder_get_type (void) {
	static volatile gsize wixl_msi_table_create_folder_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_table_create_folder_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableCreateFolderClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_create_folder_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableCreateFolder), 0, (GInstanceInitFunc) wixl_msi_table_create_folder_instance_init, NULL };
		GType wixl_msi_table_create_folder_type_id;
		wixl_msi_table_create_folder_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableCreateFolder", &g_define_type_info, 0);
		g_once_init_leave (&wixl_msi_table_create_folder_type_id__volatile, wixl_msi_table_create_folder_type_id);
	}
	return wixl_msi_table_create_folder_type_id__volatile;
}


void wixl_msi_table_remove_file_add (WixlMsiTableRemoveFile* self, const gchar* FileKey, const gchar* Component, const gchar* DirProperty, gint InstallMode, GError** error) {
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_ = NULL;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	LibmsiRecord* _tmp4_ = NULL;
	const gchar* _tmp5_ = NULL;
	gboolean _tmp6_ = FALSE;
	LibmsiRecord* _tmp17_ = NULL;
	LibmsiRecord* _tmp18_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (FileKey != NULL);
	g_return_if_fail (Component != NULL);
	g_return_if_fail (DirProperty != NULL);
	_tmp0_ = libmsi_record_new ((guint) 4);
	rec = _tmp0_;
	_tmp4_ = rec;
	_tmp5_ = FileKey;
	_tmp6_ = libmsi_record_set_string (_tmp4_, (guint) 1, _tmp5_);
	if (!_tmp6_) {
		_tmp3_ = TRUE;
	} else {
		LibmsiRecord* _tmp7_ = NULL;
		const gchar* _tmp8_ = NULL;
		gboolean _tmp9_ = FALSE;
		_tmp7_ = rec;
		_tmp8_ = Component;
		_tmp9_ = libmsi_record_set_string (_tmp7_, (guint) 2, _tmp8_);
		_tmp3_ = !_tmp9_;
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		LibmsiRecord* _tmp10_ = NULL;
		const gchar* _tmp11_ = NULL;
		gboolean _tmp12_ = FALSE;
		_tmp10_ = rec;
		_tmp11_ = DirProperty;
		_tmp12_ = libmsi_record_set_string (_tmp10_, (guint) 3, _tmp11_);
		_tmp2_ = !_tmp12_;
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp13_ = NULL;
		gint _tmp14_ = 0;
		gboolean _tmp15_ = FALSE;
		_tmp13_ = rec;
		_tmp14_ = InstallMode;
		_tmp15_ = libmsi_record_set_int (_tmp13_, (guint) 4, _tmp14_);
		_tmp1_ = !_tmp15_;
	}
	if (_tmp1_) {
		GError* _tmp16_ = NULL;
		_tmp16_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error_ = _tmp16_;
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp17_ = rec;
	_tmp18_ = _g_object_ref0 (_tmp17_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp18_);
	_g_object_unref0 (rec);
}


WixlMsiTableRemoveFile* wixl_msi_table_remove_file_construct (GType object_type) {
	WixlMsiTableRemoveFile * self = NULL;
	self = (WixlMsiTableRemoveFile*) wixl_msi_table_construct (object_type);
	return self;
}


WixlMsiTableRemoveFile* wixl_msi_table_remove_file_new (void) {
	return wixl_msi_table_remove_file_construct (WIXL_TYPE_MSI_TABLE_REMOVE_FILE);
}


static void wixl_msi_table_remove_file_class_init (WixlMsiTableRemoveFileClass * klass) {
	gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	wixl_msi_table_remove_file_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("RemoveFile");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `RemoveFile` (`FileKey` CHAR(72) NOT NULL, `Component_` C" \
"HAR(72) NOT NULL, `FileName` CHAR(255) LOCALIZABLE, `DirProperty` CHAR" \
"(72) NOT NULL, `InstallMode` INT NOT NULL PRIMARY KEY `FileKey`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `RemoveFile` (`FileKey`, `Component_`, `DirProperty`, `Ins" \
"tallMode`) VALUES (?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}


static void wixl_msi_table_remove_file_instance_init (WixlMsiTableRemoveFile * self) {
}


GType wixl_msi_table_remove_file_get_type (void) {
	static volatile gsize wixl_msi_table_remove_file_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_table_remove_file_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableRemoveFileClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_remove_file_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableRemoveFile), 0, (GInstanceInitFunc) wixl_msi_table_remove_file_instance_init, NULL };
		GType wixl_msi_table_remove_file_type_id;
		wixl_msi_table_remove_file_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableRemoveFile", &g_define_type_info, 0);
		g_once_init_leave (&wixl_msi_table_remove_file_type_id__volatile, wixl_msi_table_remove_file_type_id);
	}
	return wixl_msi_table_remove_file_type_id__volatile;
}


void wixl_msi_table_feature_add (WixlMsiTableFeature* self, const gchar* Feature, gint Display, gint Level, gint Attributes, const gchar* Parent, const gchar* Title, const gchar* Description, const gchar* ConfigurableDirectory, GError** error) {
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_ = NULL;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	gboolean _tmp5_ = FALSE;
	gboolean _tmp6_ = FALSE;
	gboolean _tmp7_ = FALSE;
	LibmsiRecord* _tmp8_ = NULL;
	const gchar* _tmp9_ = NULL;
	gboolean _tmp10_ = FALSE;
	LibmsiRecord* _tmp41_ = NULL;
	LibmsiRecord* _tmp42_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (Feature != NULL);
	_tmp0_ = libmsi_record_new ((guint) 8);
	rec = _tmp0_;
	_tmp8_ = rec;
	_tmp9_ = Feature;
	_tmp10_ = libmsi_record_set_string (_tmp8_, (guint) 1, _tmp9_);
	if (!_tmp10_) {
		_tmp7_ = TRUE;
	} else {
		LibmsiRecord* _tmp11_ = NULL;
		gint _tmp12_ = 0;
		gboolean _tmp13_ = FALSE;
		_tmp11_ = rec;
		_tmp12_ = Display;
		_tmp13_ = libmsi_record_set_int (_tmp11_, (guint) 2, _tmp12_);
		_tmp7_ = !_tmp13_;
	}
	if (_tmp7_) {
		_tmp6_ = TRUE;
	} else {
		LibmsiRecord* _tmp14_ = NULL;
		gint _tmp15_ = 0;
		gboolean _tmp16_ = FALSE;
		_tmp14_ = rec;
		_tmp15_ = Level;
		_tmp16_ = libmsi_record_set_int (_tmp14_, (guint) 3, _tmp15_);
		_tmp6_ = !_tmp16_;
	}
	if (_tmp6_) {
		_tmp5_ = TRUE;
	} else {
		LibmsiRecord* _tmp17_ = NULL;
		gint _tmp18_ = 0;
		gboolean _tmp19_ = FALSE;
		_tmp17_ = rec;
		_tmp18_ = Attributes;
		_tmp19_ = libmsi_record_set_int (_tmp17_, (guint) 4, _tmp18_);
		_tmp5_ = !_tmp19_;
	}
	if (_tmp5_) {
		_tmp4_ = TRUE;
	} else {
		gboolean _tmp20_ = FALSE;
		const gchar* _tmp21_ = NULL;
		_tmp21_ = Parent;
		if (_tmp21_ != NULL) {
			LibmsiRecord* _tmp22_ = NULL;
			const gchar* _tmp23_ = NULL;
			gboolean _tmp24_ = FALSE;
			_tmp22_ = rec;
			_tmp23_ = Parent;
			_tmp24_ = libmsi_record_set_string (_tmp22_, (guint) 5, _tmp23_);
			_tmp20_ = !_tmp24_;
		} else {
			_tmp20_ = FALSE;
		}
		_tmp4_ = _tmp20_;
	}
	if (_tmp4_) {
		_tmp3_ = TRUE;
	} else {
		gboolean _tmp25_ = FALSE;
		const gchar* _tmp26_ = NULL;
		_tmp26_ = Title;
		if (_tmp26_ != NULL) {
			LibmsiRecord* _tmp27_ = NULL;
			const gchar* _tmp28_ = NULL;
			gboolean _tmp29_ = FALSE;
			_tmp27_ = rec;
			_tmp28_ = Title;
			_tmp29_ = libmsi_record_set_string (_tmp27_, (guint) 6, _tmp28_);
			_tmp25_ = !_tmp29_;
		} else {
			_tmp25_ = FALSE;
		}
		_tmp3_ = _tmp25_;
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		gboolean _tmp30_ = FALSE;
		const gchar* _tmp31_ = NULL;
		_tmp31_ = Description;
		if (_tmp31_ != NULL) {
			LibmsiRecord* _tmp32_ = NULL;
			const gchar* _tmp33_ = NULL;
			gboolean _tmp34_ = FALSE;
			_tmp32_ = rec;
			_tmp33_ = Description;
			_tmp34_ = libmsi_record_set_string (_tmp32_, (guint) 7, _tmp33_);
			_tmp30_ = !_tmp34_;
		} else {
			_tmp30_ = FALSE;
		}
		_tmp2_ = _tmp30_;
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		gboolean _tmp35_ = FALSE;
		const gchar* _tmp36_ = NULL;
		_tmp36_ = ConfigurableDirectory;
		if (_tmp36_ != NULL) {
			LibmsiRecord* _tmp37_ = NULL;
			const gchar* _tmp38_ = NULL;
			gboolean _tmp39_ = FALSE;
			_tmp37_ = rec;
			_tmp38_ = ConfigurableDirectory;
			_tmp39_ = libmsi_record_set_string (_tmp37_, (guint) 8, _tmp38_);
			_tmp35_ = !_tmp39_;
		} else {
			_tmp35_ = FALSE;
		}
		_tmp1_ = _tmp35_;
	}
	if (_tmp1_) {
		GError* _tmp40_ = NULL;
		_tmp40_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error_ = _tmp40_;
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp41_ = rec;
	_tmp42_ = _g_object_ref0 (_tmp41_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp42_);
	_g_object_unref0 (rec);
}


WixlMsiTableFeature* wixl_msi_table_feature_construct (GType object_type) {
	WixlMsiTableFeature * self = NULL;
	self = (WixlMsiTableFeature*) wixl_msi_table_construct (object_type);
	return self;
}


WixlMsiTableFeature* wixl_msi_table_feature_new (void) {
	return wixl_msi_table_feature_construct (WIXL_TYPE_MSI_TABLE_FEATURE);
}


static void wixl_msi_table_feature_class_init (WixlMsiTableFeatureClass * klass) {
	gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	wixl_msi_table_feature_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("Feature");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `Feature` (`Feature` CHAR(38) NOT NULL, `Feature_Parent` " \
"CHAR(38), `Title` CHAR(64) LOCALIZABLE, `Description` CHAR(255) LOCALI" \
"ZABLE, `Display` INT, `Level` INT NOT NULL, `Directory_` CHAR(72), `At" \
"tributes` INT NOT NULL PRIMARY KEY `Feature`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `Feature` (`Feature`, `Display`, `Level`, `Attributes`, `F" \
"eature_Parent`, `Title`, `Description`, `Directory_`) VALUES (?, ?, ?," \
" ?, ?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}


static void wixl_msi_table_feature_instance_init (WixlMsiTableFeature * self) {
}


GType wixl_msi_table_feature_get_type (void) {
	static volatile gsize wixl_msi_table_feature_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_table_feature_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableFeatureClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_feature_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableFeature), 0, (GInstanceInitFunc) wixl_msi_table_feature_instance_init, NULL };
		GType wixl_msi_table_feature_type_id;
		wixl_msi_table_feature_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableFeature", &g_define_type_info, 0);
		g_once_init_leave (&wixl_msi_table_feature_type_id__volatile, wixl_msi_table_feature_type_id);
	}
	return wixl_msi_table_feature_type_id__volatile;
}


void wixl_msi_table_service_control_add (WixlMsiTableServiceControl* self, const gchar* ServiceControl, const gchar* Name, gint Event, const gchar* Arguments, gboolean* Wait, const gchar* Component, GError** error) {
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_ = NULL;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	gboolean _tmp5_ = FALSE;
	LibmsiRecord* _tmp6_ = NULL;
	const gchar* _tmp7_ = NULL;
	gboolean _tmp8_ = FALSE;
	LibmsiRecord* _tmp30_ = NULL;
	LibmsiRecord* _tmp31_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (ServiceControl != NULL);
	g_return_if_fail (Name != NULL);
	g_return_if_fail (Component != NULL);
	_tmp0_ = libmsi_record_new ((guint) 6);
	rec = _tmp0_;
	_tmp6_ = rec;
	_tmp7_ = ServiceControl;
	_tmp8_ = libmsi_record_set_string (_tmp6_, (guint) 1, _tmp7_);
	if (!_tmp8_) {
		_tmp5_ = TRUE;
	} else {
		LibmsiRecord* _tmp9_ = NULL;
		const gchar* _tmp10_ = NULL;
		gboolean _tmp11_ = FALSE;
		_tmp9_ = rec;
		_tmp10_ = Name;
		_tmp11_ = libmsi_record_set_string (_tmp9_, (guint) 2, _tmp10_);
		_tmp5_ = !_tmp11_;
	}
	if (_tmp5_) {
		_tmp4_ = TRUE;
	} else {
		LibmsiRecord* _tmp12_ = NULL;
		gint _tmp13_ = 0;
		gboolean _tmp14_ = FALSE;
		_tmp12_ = rec;
		_tmp13_ = Event;
		_tmp14_ = libmsi_record_set_int (_tmp12_, (guint) 3, _tmp13_);
		_tmp4_ = !_tmp14_;
	}
	if (_tmp4_) {
		_tmp3_ = TRUE;
	} else {
		gboolean _tmp15_ = FALSE;
		const gchar* _tmp16_ = NULL;
		_tmp16_ = Arguments;
		if (_tmp16_ != NULL) {
			LibmsiRecord* _tmp17_ = NULL;
			const gchar* _tmp18_ = NULL;
			gboolean _tmp19_ = FALSE;
			_tmp17_ = rec;
			_tmp18_ = Arguments;
			_tmp19_ = libmsi_record_set_string (_tmp17_, (guint) 4, _tmp18_);
			_tmp15_ = !_tmp19_;
		} else {
			_tmp15_ = FALSE;
		}
		_tmp3_ = _tmp15_;
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		gboolean _tmp20_ = FALSE;
		gboolean* _tmp21_ = NULL;
		_tmp21_ = Wait;
		if (_tmp21_ != NULL) {
			gint _tmp22_ = 0;
			gboolean* _tmp23_ = NULL;
			LibmsiRecord* _tmp24_ = NULL;
			gboolean _tmp25_ = FALSE;
			_tmp23_ = Wait;
			if (*_tmp23_) {
				_tmp22_ = 1;
			} else {
				_tmp22_ = 0;
			}
			_tmp24_ = rec;
			_tmp25_ = libmsi_record_set_int (_tmp24_, (guint) 5, _tmp22_);
			_tmp20_ = !_tmp25_;
		} else {
			_tmp20_ = FALSE;
		}
		_tmp2_ = _tmp20_;
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp26_ = NULL;
		const gchar* _tmp27_ = NULL;
		gboolean _tmp28_ = FALSE;
		_tmp26_ = rec;
		_tmp27_ = Component;
		_tmp28_ = libmsi_record_set_string (_tmp26_, (guint) 6, _tmp27_);
		_tmp1_ = !_tmp28_;
	}
	if (_tmp1_) {
		GError* _tmp29_ = NULL;
		_tmp29_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error_ = _tmp29_;
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp30_ = rec;
	_tmp31_ = _g_object_ref0 (_tmp30_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp31_);
	_g_object_unref0 (rec);
}


WixlMsiTableServiceControl* wixl_msi_table_service_control_construct (GType object_type) {
	WixlMsiTableServiceControl * self = NULL;
	self = (WixlMsiTableServiceControl*) wixl_msi_table_construct (object_type);
	return self;
}


WixlMsiTableServiceControl* wixl_msi_table_service_control_new (void) {
	return wixl_msi_table_service_control_construct (WIXL_TYPE_MSI_TABLE_SERVICE_CONTROL);
}


static void wixl_msi_table_service_control_class_init (WixlMsiTableServiceControlClass * klass) {
	gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	wixl_msi_table_service_control_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("ServiceControl");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `ServiceControl` (`ServiceControl` CHAR(72) NOT NULL, `Na" \
"me` CHAR(255) NOT NULL LOCALIZABLE, `Event` INT NOT NULL, `Arguments` " \
"CHAR(255) LOCALIZABLE, `Wait` INT, `Component_` CHAR(72) NOT NULL PRIM" \
"ARY KEY `ServiceControl`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `ServiceControl` (`ServiceControl`, `Name`, `Event`, `Argu" \
"ments`, `Wait`, `Component_`) VALUES (?, ?, ?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}


static void wixl_msi_table_service_control_instance_init (WixlMsiTableServiceControl * self) {
}


GType wixl_msi_table_service_control_get_type (void) {
	static volatile gsize wixl_msi_table_service_control_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_table_service_control_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableServiceControlClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_service_control_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableServiceControl), 0, (GInstanceInitFunc) wixl_msi_table_service_control_instance_init, NULL };
		GType wixl_msi_table_service_control_type_id;
		wixl_msi_table_service_control_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableServiceControl", &g_define_type_info, 0);
		g_once_init_leave (&wixl_msi_table_service_control_type_id__volatile, wixl_msi_table_service_control_type_id);
	}
	return wixl_msi_table_service_control_type_id__volatile;
}


void wixl_msi_table_service_install_add (WixlMsiTableServiceInstall* self, const gchar* ServiceInstall, const gchar* Name, const gchar* DisplayName, gint ServiceType, gint StartType, gint ErrorControl, const gchar* LoadOrderGroup, const gchar* Dependencies, const gchar* StartName, const gchar* Password, const gchar* Arguments, const gchar* Component, const gchar* Description, GError** error) {
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_ = NULL;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	gboolean _tmp5_ = FALSE;
	gboolean _tmp6_ = FALSE;
	gboolean _tmp7_ = FALSE;
	gboolean _tmp8_ = FALSE;
	gboolean _tmp9_ = FALSE;
	gboolean _tmp10_ = FALSE;
	gboolean _tmp11_ = FALSE;
	gboolean _tmp12_ = FALSE;
	LibmsiRecord* _tmp13_ = NULL;
	const gchar* _tmp14_ = NULL;
	gboolean _tmp15_ = FALSE;
	LibmsiRecord* _tmp67_ = NULL;
	LibmsiRecord* _tmp68_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (ServiceInstall != NULL);
	g_return_if_fail (Name != NULL);
	g_return_if_fail (Component != NULL);
	_tmp0_ = libmsi_record_new ((guint) 13);
	rec = _tmp0_;
	_tmp13_ = rec;
	_tmp14_ = ServiceInstall;
	_tmp15_ = libmsi_record_set_string (_tmp13_, (guint) 1, _tmp14_);
	if (!_tmp15_) {
		_tmp12_ = TRUE;
	} else {
		LibmsiRecord* _tmp16_ = NULL;
		const gchar* _tmp17_ = NULL;
		gboolean _tmp18_ = FALSE;
		_tmp16_ = rec;
		_tmp17_ = Name;
		_tmp18_ = libmsi_record_set_string (_tmp16_, (guint) 2, _tmp17_);
		_tmp12_ = !_tmp18_;
	}
	if (_tmp12_) {
		_tmp11_ = TRUE;
	} else {
		gboolean _tmp19_ = FALSE;
		const gchar* _tmp20_ = NULL;
		_tmp20_ = DisplayName;
		if (_tmp20_ != NULL) {
			LibmsiRecord* _tmp21_ = NULL;
			const gchar* _tmp22_ = NULL;
			gboolean _tmp23_ = FALSE;
			_tmp21_ = rec;
			_tmp22_ = DisplayName;
			_tmp23_ = libmsi_record_set_string (_tmp21_, (guint) 3, _tmp22_);
			_tmp19_ = !_tmp23_;
		} else {
			_tmp19_ = FALSE;
		}
		_tmp11_ = _tmp19_;
	}
	if (_tmp11_) {
		_tmp10_ = TRUE;
	} else {
		LibmsiRecord* _tmp24_ = NULL;
		gint _tmp25_ = 0;
		gboolean _tmp26_ = FALSE;
		_tmp24_ = rec;
		_tmp25_ = ServiceType;
		_tmp26_ = libmsi_record_set_int (_tmp24_, (guint) 4, _tmp25_);
		_tmp10_ = !_tmp26_;
	}
	if (_tmp10_) {
		_tmp9_ = TRUE;
	} else {
		LibmsiRecord* _tmp27_ = NULL;
		gint _tmp28_ = 0;
		gboolean _tmp29_ = FALSE;
		_tmp27_ = rec;
		_tmp28_ = StartType;
		_tmp29_ = libmsi_record_set_int (_tmp27_, (guint) 5, _tmp28_);
		_tmp9_ = !_tmp29_;
	}
	if (_tmp9_) {
		_tmp8_ = TRUE;
	} else {
		LibmsiRecord* _tmp30_ = NULL;
		gint _tmp31_ = 0;
		gboolean _tmp32_ = FALSE;
		_tmp30_ = rec;
		_tmp31_ = ErrorControl;
		_tmp32_ = libmsi_record_set_int (_tmp30_, (guint) 6, _tmp31_);
		_tmp8_ = !_tmp32_;
	}
	if (_tmp8_) {
		_tmp7_ = TRUE;
	} else {
		gboolean _tmp33_ = FALSE;
		const gchar* _tmp34_ = NULL;
		_tmp34_ = LoadOrderGroup;
		if (_tmp34_ != NULL) {
			LibmsiRecord* _tmp35_ = NULL;
			const gchar* _tmp36_ = NULL;
			gboolean _tmp37_ = FALSE;
			_tmp35_ = rec;
			_tmp36_ = LoadOrderGroup;
			_tmp37_ = libmsi_record_set_string (_tmp35_, (guint) 7, _tmp36_);
			_tmp33_ = !_tmp37_;
		} else {
			_tmp33_ = FALSE;
		}
		_tmp7_ = _tmp33_;
	}
	if (_tmp7_) {
		_tmp6_ = TRUE;
	} else {
		gboolean _tmp38_ = FALSE;
		const gchar* _tmp39_ = NULL;
		_tmp39_ = Dependencies;
		if (_tmp39_ != NULL) {
			LibmsiRecord* _tmp40_ = NULL;
			const gchar* _tmp41_ = NULL;
			gboolean _tmp42_ = FALSE;
			_tmp40_ = rec;
			_tmp41_ = Dependencies;
			_tmp42_ = libmsi_record_set_string (_tmp40_, (guint) 8, _tmp41_);
			_tmp38_ = !_tmp42_;
		} else {
			_tmp38_ = FALSE;
		}
		_tmp6_ = _tmp38_;
	}
	if (_tmp6_) {
		_tmp5_ = TRUE;
	} else {
		gboolean _tmp43_ = FALSE;
		const gchar* _tmp44_ = NULL;
		_tmp44_ = StartName;
		if (_tmp44_ != NULL) {
			LibmsiRecord* _tmp45_ = NULL;
			const gchar* _tmp46_ = NULL;
			gboolean _tmp47_ = FALSE;
			_tmp45_ = rec;
			_tmp46_ = StartName;
			_tmp47_ = libmsi_record_set_string (_tmp45_, (guint) 9, _tmp46_);
			_tmp43_ = !_tmp47_;
		} else {
			_tmp43_ = FALSE;
		}
		_tmp5_ = _tmp43_;
	}
	if (_tmp5_) {
		_tmp4_ = TRUE;
	} else {
		gboolean _tmp48_ = FALSE;
		const gchar* _tmp49_ = NULL;
		_tmp49_ = Password;
		if (_tmp49_ != NULL) {
			LibmsiRecord* _tmp50_ = NULL;
			const gchar* _tmp51_ = NULL;
			gboolean _tmp52_ = FALSE;
			_tmp50_ = rec;
			_tmp51_ = Password;
			_tmp52_ = libmsi_record_set_string (_tmp50_, (guint) 10, _tmp51_);
			_tmp48_ = !_tmp52_;
		} else {
			_tmp48_ = FALSE;
		}
		_tmp4_ = _tmp48_;
	}
	if (_tmp4_) {
		_tmp3_ = TRUE;
	} else {
		gboolean _tmp53_ = FALSE;
		const gchar* _tmp54_ = NULL;
		_tmp54_ = Arguments;
		if (_tmp54_ != NULL) {
			LibmsiRecord* _tmp55_ = NULL;
			const gchar* _tmp56_ = NULL;
			gboolean _tmp57_ = FALSE;
			_tmp55_ = rec;
			_tmp56_ = Arguments;
			_tmp57_ = libmsi_record_set_string (_tmp55_, (guint) 11, _tmp56_);
			_tmp53_ = !_tmp57_;
		} else {
			_tmp53_ = FALSE;
		}
		_tmp3_ = _tmp53_;
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		LibmsiRecord* _tmp58_ = NULL;
		const gchar* _tmp59_ = NULL;
		gboolean _tmp60_ = FALSE;
		_tmp58_ = rec;
		_tmp59_ = Component;
		_tmp60_ = libmsi_record_set_string (_tmp58_, (guint) 12, _tmp59_);
		_tmp2_ = !_tmp60_;
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		gboolean _tmp61_ = FALSE;
		const gchar* _tmp62_ = NULL;
		_tmp62_ = Description;
		if (_tmp62_ != NULL) {
			LibmsiRecord* _tmp63_ = NULL;
			const gchar* _tmp64_ = NULL;
			gboolean _tmp65_ = FALSE;
			_tmp63_ = rec;
			_tmp64_ = Description;
			_tmp65_ = libmsi_record_set_string (_tmp63_, (guint) 13, _tmp64_);
			_tmp61_ = !_tmp65_;
		} else {
			_tmp61_ = FALSE;
		}
		_tmp1_ = _tmp61_;
	}
	if (_tmp1_) {
		GError* _tmp66_ = NULL;
		_tmp66_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error_ = _tmp66_;
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp67_ = rec;
	_tmp68_ = _g_object_ref0 (_tmp67_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp68_);
	_g_object_unref0 (rec);
}


WixlMsiTableServiceInstall* wixl_msi_table_service_install_construct (GType object_type) {
	WixlMsiTableServiceInstall * self = NULL;
	self = (WixlMsiTableServiceInstall*) wixl_msi_table_construct (object_type);
	return self;
}


WixlMsiTableServiceInstall* wixl_msi_table_service_install_new (void) {
	return wixl_msi_table_service_install_construct (WIXL_TYPE_MSI_TABLE_SERVICE_INSTALL);
}


static void wixl_msi_table_service_install_class_init (WixlMsiTableServiceInstallClass * klass) {
	gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	wixl_msi_table_service_install_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("ServiceInstall");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `ServiceInstall` (`ServiceInstall` CHAR(72) NOT NULL, `Na" \
"me` CHAR(255) NOT NULL, `DisplayName` CHAR(255) LOCALIZABLE, `ServiceT" \
"ype` LONG NOT NULL, `StartType` LONG NOT NULL, `ErrorControl` LONG NOT" \
" NULL, `LoadOrderGroup` CHAR(255), `Dependencies` CHAR(255), `StartNam" \
"e` CHAR(255), `Password` CHAR(255), `Arguments` CHAR(255), `Component_" \
"` CHAR(72) NOT NULL, `Description` CHAR(255) LOCALIZABLE PRIMARY KEY `" \
"ServiceInstall`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `ServiceInstall` (`ServiceInstall`, `Name`, `DisplayName`," \
" `ServiceType`, `StartType`, `ErrorControl`, `LoadOrderGroup`, `Depend" \
"encies`, `StartName`, `Password`, `Arguments`, `Component_`, `Descript" \
"ion`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}


static void wixl_msi_table_service_install_instance_init (WixlMsiTableServiceInstall * self) {
}


GType wixl_msi_table_service_install_get_type (void) {
	static volatile gsize wixl_msi_table_service_install_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_table_service_install_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableServiceInstallClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_service_install_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableServiceInstall), 0, (GInstanceInitFunc) wixl_msi_table_service_install_instance_init, NULL };
		GType wixl_msi_table_service_install_type_id;
		wixl_msi_table_service_install_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableServiceInstall", &g_define_type_info, 0);
		g_once_init_leave (&wixl_msi_table_service_install_type_id__volatile, wixl_msi_table_service_install_type_id);
	}
	return wixl_msi_table_service_install_type_id__volatile;
}


WixlMsiTableSignature* wixl_msi_table_signature_construct (GType object_type) {
	WixlMsiTableSignature * self = NULL;
	self = (WixlMsiTableSignature*) wixl_msi_table_construct (object_type);
	return self;
}


WixlMsiTableSignature* wixl_msi_table_signature_new (void) {
	return wixl_msi_table_signature_construct (WIXL_TYPE_MSI_TABLE_SIGNATURE);
}


static void wixl_msi_table_signature_class_init (WixlMsiTableSignatureClass * klass) {
	gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	wixl_msi_table_signature_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("Signature");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `Signature` (`Signature` CHAR(72) NOT NULL, `FileName` CH" \
"AR(255) NOT NULL, `MinVersion` CHAR(20), `MaxVersion` CHAR(20), `MinSi" \
"ze` LONG, `MaxSize` LONG, `MinDate` LONG, `MaxDate` LONG, `Languages` " \
"CHAR(255) PRIMARY KEY `Signature`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
}


static void wixl_msi_table_signature_instance_init (WixlMsiTableSignature * self) {
}


GType wixl_msi_table_signature_get_type (void) {
	static volatile gsize wixl_msi_table_signature_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_table_signature_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableSignatureClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_signature_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableSignature), 0, (GInstanceInitFunc) wixl_msi_table_signature_instance_init, NULL };
		GType wixl_msi_table_signature_type_id;
		wixl_msi_table_signature_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableSignature", &g_define_type_info, 0);
		g_once_init_leave (&wixl_msi_table_signature_type_id__volatile, wixl_msi_table_signature_type_id);
	}
	return wixl_msi_table_signature_type_id__volatile;
}


void wixl_msi_table_app_search_add (WixlMsiTableAppSearch* self, const gchar* Property, const gchar* Signature, GError** error) {
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_ = NULL;
	gboolean _tmp1_ = FALSE;
	LibmsiRecord* _tmp2_ = NULL;
	const gchar* _tmp3_ = NULL;
	gboolean _tmp4_ = FALSE;
	LibmsiRecord* _tmp9_ = NULL;
	LibmsiRecord* _tmp10_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (Property != NULL);
	g_return_if_fail (Signature != NULL);
	_tmp0_ = libmsi_record_new ((guint) 2);
	rec = _tmp0_;
	_tmp2_ = rec;
	_tmp3_ = Property;
	_tmp4_ = libmsi_record_set_string (_tmp2_, (guint) 1, _tmp3_);
	if (!_tmp4_) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp5_ = NULL;
		const gchar* _tmp6_ = NULL;
		gboolean _tmp7_ = FALSE;
		_tmp5_ = rec;
		_tmp6_ = Signature;
		_tmp7_ = libmsi_record_set_string (_tmp5_, (guint) 2, _tmp6_);
		_tmp1_ = !_tmp7_;
	}
	if (_tmp1_) {
		GError* _tmp8_ = NULL;
		_tmp8_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error_ = _tmp8_;
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp9_ = rec;
	_tmp10_ = _g_object_ref0 (_tmp9_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp10_);
	_g_object_unref0 (rec);
}


WixlMsiTableAppSearch* wixl_msi_table_app_search_construct (GType object_type) {
	WixlMsiTableAppSearch * self = NULL;
	self = (WixlMsiTableAppSearch*) wixl_msi_table_construct (object_type);
	return self;
}


WixlMsiTableAppSearch* wixl_msi_table_app_search_new (void) {
	return wixl_msi_table_app_search_construct (WIXL_TYPE_MSI_TABLE_APP_SEARCH);
}


static void wixl_msi_table_app_search_class_init (WixlMsiTableAppSearchClass * klass) {
	gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	wixl_msi_table_app_search_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("AppSearch");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `AppSearch` (`Property` CHAR(72) NOT NULL, `Signature_` C" \
"HAR(72) NOT NULL PRIMARY KEY `Property`, `Signature_`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `AppSearch` (`Property`, `Signature_`) VALUES (?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}


static void wixl_msi_table_app_search_instance_init (WixlMsiTableAppSearch * self) {
}


GType wixl_msi_table_app_search_get_type (void) {
	static volatile gsize wixl_msi_table_app_search_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_table_app_search_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableAppSearchClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_app_search_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableAppSearch), 0, (GInstanceInitFunc) wixl_msi_table_app_search_instance_init, NULL };
		GType wixl_msi_table_app_search_type_id;
		wixl_msi_table_app_search_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableAppSearch", &g_define_type_info, 0);
		g_once_init_leave (&wixl_msi_table_app_search_type_id__volatile, wixl_msi_table_app_search_type_id);
	}
	return wixl_msi_table_app_search_type_id__volatile;
}


void wixl_msi_table_custom_action_add (WixlMsiTableCustomAction* self, const gchar* Action, gint Type, const gchar* Source, const gchar* Target, gint* ExtendedType, GError** error) {
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_ = NULL;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	LibmsiRecord* _tmp5_ = NULL;
	const gchar* _tmp6_ = NULL;
	gboolean _tmp7_ = FALSE;
	LibmsiRecord* _tmp23_ = NULL;
	LibmsiRecord* _tmp24_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (Action != NULL);
	g_return_if_fail (Source != NULL);
	g_return_if_fail (Target != NULL);
	_tmp0_ = libmsi_record_new ((guint) 5);
	rec = _tmp0_;
	_tmp5_ = rec;
	_tmp6_ = Action;
	_tmp7_ = libmsi_record_set_string (_tmp5_, (guint) 1, _tmp6_);
	if (!_tmp7_) {
		_tmp4_ = TRUE;
	} else {
		LibmsiRecord* _tmp8_ = NULL;
		gint _tmp9_ = 0;
		gboolean _tmp10_ = FALSE;
		_tmp8_ = rec;
		_tmp9_ = Type;
		_tmp10_ = libmsi_record_set_int (_tmp8_, (guint) 2, _tmp9_);
		_tmp4_ = !_tmp10_;
	}
	if (_tmp4_) {
		_tmp3_ = TRUE;
	} else {
		LibmsiRecord* _tmp11_ = NULL;
		const gchar* _tmp12_ = NULL;
		gboolean _tmp13_ = FALSE;
		_tmp11_ = rec;
		_tmp12_ = Source;
		_tmp13_ = libmsi_record_set_string (_tmp11_, (guint) 3, _tmp12_);
		_tmp3_ = !_tmp13_;
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		LibmsiRecord* _tmp14_ = NULL;
		const gchar* _tmp15_ = NULL;
		gboolean _tmp16_ = FALSE;
		_tmp14_ = rec;
		_tmp15_ = Target;
		_tmp16_ = libmsi_record_set_string (_tmp14_, (guint) 4, _tmp15_);
		_tmp2_ = !_tmp16_;
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		gboolean _tmp17_ = FALSE;
		gint* _tmp18_ = NULL;
		_tmp18_ = ExtendedType;
		if (_tmp18_ != NULL) {
			LibmsiRecord* _tmp19_ = NULL;
			gint* _tmp20_ = NULL;
			gboolean _tmp21_ = FALSE;
			_tmp19_ = rec;
			_tmp20_ = ExtendedType;
			_tmp21_ = libmsi_record_set_int (_tmp19_, (guint) 5, *_tmp20_);
			_tmp17_ = !_tmp21_;
		} else {
			_tmp17_ = FALSE;
		}
		_tmp1_ = _tmp17_;
	}
	if (_tmp1_) {
		GError* _tmp22_ = NULL;
		_tmp22_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error_ = _tmp22_;
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp23_ = rec;
	_tmp24_ = _g_object_ref0 (_tmp23_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp24_);
	_g_object_unref0 (rec);
}


WixlMsiTableCustomAction* wixl_msi_table_custom_action_construct (GType object_type) {
	WixlMsiTableCustomAction * self = NULL;
	self = (WixlMsiTableCustomAction*) wixl_msi_table_construct (object_type);
	return self;
}


WixlMsiTableCustomAction* wixl_msi_table_custom_action_new (void) {
	return wixl_msi_table_custom_action_construct (WIXL_TYPE_MSI_TABLE_CUSTOM_ACTION);
}


static void wixl_msi_table_custom_action_class_init (WixlMsiTableCustomActionClass * klass) {
	gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	wixl_msi_table_custom_action_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("CustomAction");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `CustomAction` (`Action` CHAR(72) NOT NULL, `Type` INT NO" \
"T NULL, `Source` CHAR(72), `Target` CHAR(255), `ExtendedType` LONG PRI" \
"MARY KEY `Action`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `CustomAction` (`Action`, `Type`, `Source`, `Target`, `Ext" \
"endedType`) VALUES (?, ?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}


static void wixl_msi_table_custom_action_instance_init (WixlMsiTableCustomAction * self) {
}


GType wixl_msi_table_custom_action_get_type (void) {
	static volatile gsize wixl_msi_table_custom_action_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_table_custom_action_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableCustomActionClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_custom_action_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableCustomAction), 0, (GInstanceInitFunc) wixl_msi_table_custom_action_instance_init, NULL };
		GType wixl_msi_table_custom_action_type_id;
		wixl_msi_table_custom_action_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableCustomAction", &g_define_type_info, 0);
		g_once_init_leave (&wixl_msi_table_custom_action_type_id__volatile, wixl_msi_table_custom_action_type_id);
	}
	return wixl_msi_table_custom_action_type_id__volatile;
}


void wixl_msi_table_reg_locator_add (WixlMsiTableRegLocator* self, const gchar* Signature, gint Root, const gchar* Key, const gchar* Name, gint Type, GError** error) {
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_ = NULL;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	LibmsiRecord* _tmp5_ = NULL;
	const gchar* _tmp6_ = NULL;
	gboolean _tmp7_ = FALSE;
	LibmsiRecord* _tmp21_ = NULL;
	LibmsiRecord* _tmp22_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (Signature != NULL);
	g_return_if_fail (Key != NULL);
	g_return_if_fail (Name != NULL);
	_tmp0_ = libmsi_record_new ((guint) 5);
	rec = _tmp0_;
	_tmp5_ = rec;
	_tmp6_ = Signature;
	_tmp7_ = libmsi_record_set_string (_tmp5_, (guint) 1, _tmp6_);
	if (!_tmp7_) {
		_tmp4_ = TRUE;
	} else {
		LibmsiRecord* _tmp8_ = NULL;
		gint _tmp9_ = 0;
		gboolean _tmp10_ = FALSE;
		_tmp8_ = rec;
		_tmp9_ = Root;
		_tmp10_ = libmsi_record_set_int (_tmp8_, (guint) 2, _tmp9_);
		_tmp4_ = !_tmp10_;
	}
	if (_tmp4_) {
		_tmp3_ = TRUE;
	} else {
		LibmsiRecord* _tmp11_ = NULL;
		const gchar* _tmp12_ = NULL;
		gboolean _tmp13_ = FALSE;
		_tmp11_ = rec;
		_tmp12_ = Key;
		_tmp13_ = libmsi_record_set_string (_tmp11_, (guint) 3, _tmp12_);
		_tmp3_ = !_tmp13_;
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		LibmsiRecord* _tmp14_ = NULL;
		const gchar* _tmp15_ = NULL;
		gboolean _tmp16_ = FALSE;
		_tmp14_ = rec;
		_tmp15_ = Name;
		_tmp16_ = libmsi_record_set_string (_tmp14_, (guint) 4, _tmp15_);
		_tmp2_ = !_tmp16_;
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp17_ = NULL;
		gint _tmp18_ = 0;
		gboolean _tmp19_ = FALSE;
		_tmp17_ = rec;
		_tmp18_ = Type;
		_tmp19_ = libmsi_record_set_int (_tmp17_, (guint) 5, _tmp18_);
		_tmp1_ = !_tmp19_;
	}
	if (_tmp1_) {
		GError* _tmp20_ = NULL;
		_tmp20_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error_ = _tmp20_;
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp21_ = rec;
	_tmp22_ = _g_object_ref0 (_tmp21_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp22_);
	_g_object_unref0 (rec);
}


WixlMsiTableRegLocator* wixl_msi_table_reg_locator_construct (GType object_type) {
	WixlMsiTableRegLocator * self = NULL;
	self = (WixlMsiTableRegLocator*) wixl_msi_table_construct (object_type);
	return self;
}


WixlMsiTableRegLocator* wixl_msi_table_reg_locator_new (void) {
	return wixl_msi_table_reg_locator_construct (WIXL_TYPE_MSI_TABLE_REG_LOCATOR);
}


static void wixl_msi_table_reg_locator_class_init (WixlMsiTableRegLocatorClass * klass) {
	gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	wixl_msi_table_reg_locator_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("RegLocator");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `RegLocator` (`Signature_` CHAR(72) NOT NULL, `Root` INT " \
"NOT NULL, `Key` CHAR(255) NOT NULL, `Name` CHAR(255), `Type` INT PRIMA" \
"RY KEY `Signature_`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `RegLocator` (`Signature_`, `Root`, `Key`, `Name`, `Type`)" \
" VALUES (?, ?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}


static void wixl_msi_table_reg_locator_instance_init (WixlMsiTableRegLocator * self) {
}


GType wixl_msi_table_reg_locator_get_type (void) {
	static volatile gsize wixl_msi_table_reg_locator_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_table_reg_locator_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableRegLocatorClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_reg_locator_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableRegLocator), 0, (GInstanceInitFunc) wixl_msi_table_reg_locator_instance_init, NULL };
		GType wixl_msi_table_reg_locator_type_id;
		wixl_msi_table_reg_locator_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableRegLocator", &g_define_type_info, 0);
		g_once_init_leave (&wixl_msi_table_reg_locator_type_id__volatile, wixl_msi_table_reg_locator_type_id);
	}
	return wixl_msi_table_reg_locator_type_id__volatile;
}


static void wixl_msi_table_validation_real_create (WixlMsiTable* base, LibmsiDatabase* db, GError** error) {
	WixlMsiTableValidation * self;
	self = (WixlMsiTableValidation*) base;
	g_return_if_fail (db != NULL);
}


WixlMsiTableValidation* wixl_msi_table_validation_construct (GType object_type) {
	WixlMsiTableValidation * self = NULL;
	self = (WixlMsiTableValidation*) wixl_msi_table_construct (object_type);
	return self;
}


WixlMsiTableValidation* wixl_msi_table_validation_new (void) {
	return wixl_msi_table_validation_construct (WIXL_TYPE_MSI_TABLE_VALIDATION);
}


static void wixl_msi_table_validation_class_init (WixlMsiTableValidationClass * klass) {
	gchar* _tmp0_ = NULL;
	wixl_msi_table_validation_parent_class = g_type_class_peek_parent (klass);
	((WixlMsiTableClass *) klass)->create = (void (*)(WixlMsiTable*, LibmsiDatabase*, GError**)) wixl_msi_table_validation_real_create;
	_tmp0_ = g_strdup ("_Validation");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
}


static void wixl_msi_table_validation_instance_init (WixlMsiTableValidation * self) {
}


GType wixl_msi_table_validation_get_type (void) {
	static volatile gsize wixl_msi_table_validation_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_table_validation_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableValidationClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_validation_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableValidation), 0, (GInstanceInitFunc) wixl_msi_table_validation_instance_init, NULL };
		GType wixl_msi_table_validation_type_id;
		wixl_msi_table_validation_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableValidation", &g_define_type_info, 0);
		g_once_init_leave (&wixl_msi_table_validation_type_id__volatile, wixl_msi_table_validation_type_id);
	}
	return wixl_msi_table_validation_type_id__volatile;
}


void wixl_msi_table_streams_add (WixlMsiTableStreams* self, const gchar* name, GInputStream* input, gsize count, GError** error) {
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_ = NULL;
	gboolean _tmp1_ = FALSE;
	LibmsiRecord* _tmp2_ = NULL;
	const gchar* _tmp3_ = NULL;
	gboolean _tmp4_ = FALSE;
	LibmsiRecord* _tmp11_ = NULL;
	LibmsiRecord* _tmp12_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (name != NULL);
	g_return_if_fail (input != NULL);
	_tmp0_ = libmsi_record_new ((guint) 2);
	rec = _tmp0_;
	_tmp2_ = rec;
	_tmp3_ = name;
	_tmp4_ = libmsi_record_set_string (_tmp2_, (guint) 1, _tmp3_);
	if (!_tmp4_) {
		_tmp1_ = TRUE;
	} else {
		gboolean _tmp5_ = FALSE;
		LibmsiRecord* _tmp6_ = NULL;
		GInputStream* _tmp7_ = NULL;
		gsize _tmp8_ = 0UL;
		gboolean _tmp9_ = FALSE;
		_tmp6_ = rec;
		_tmp7_ = input;
		_tmp8_ = count;
		_tmp9_ = libmsi_record_set_stream (_tmp6_, (guint) 2, _tmp7_, _tmp8_, NULL, &_inner_error_);
		_tmp5_ = _tmp9_;
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			_g_object_unref0 (rec);
			return;
		}
		_tmp1_ = !_tmp5_;
	}
	if (_tmp1_) {
		GError* _tmp10_ = NULL;
		_tmp10_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error_ = _tmp10_;
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp11_ = rec;
	_tmp12_ = _g_object_ref0 (_tmp11_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp12_);
	_g_object_unref0 (rec);
}


static void wixl_msi_table_streams_real_create (WixlMsiTable* base, LibmsiDatabase* db, GError** error) {
	WixlMsiTableStreams * self;
	LibmsiQuery* query = NULL;
	LibmsiDatabase* _tmp0_ = NULL;
	LibmsiQuery* _tmp1_ = NULL;
	GList* _tmp2_ = NULL;
	GError * _inner_error_ = NULL;
	self = (WixlMsiTableStreams*) base;
	g_return_if_fail (db != NULL);
	_tmp0_ = db;
	_tmp1_ = libmsi_query_new (_tmp0_, "INSERT INTO `_Streams` (`Name`, `Data`) VALUES (?, ?)", &_inner_error_);
	query = _tmp1_;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		return;
	}
	_tmp2_ = ((WixlMsiTable*) self)->records;
	{
		GList* r_collection = NULL;
		GList* r_it = NULL;
		r_collection = _tmp2_;
		for (r_it = r_collection; r_it != NULL; r_it = r_it->next) {
			LibmsiRecord* _tmp3_ = NULL;
			LibmsiRecord* r = NULL;
			_tmp3_ = _g_object_ref0 ((LibmsiRecord*) r_it->data);
			r = _tmp3_;
			{
				LibmsiQuery* _tmp4_ = NULL;
				LibmsiRecord* _tmp5_ = NULL;
				_tmp4_ = query;
				_tmp5_ = r;
				libmsi_query_execute (_tmp4_, _tmp5_, &_inner_error_);
				if (G_UNLIKELY (_inner_error_ != NULL)) {
					g_propagate_error (error, _inner_error_);
					_g_object_unref0 (r);
					_g_object_unref0 (query);
					return;
				}
				_g_object_unref0 (r);
			}
		}
	}
	_g_object_unref0 (query);
}


WixlMsiTableStreams* wixl_msi_table_streams_construct (GType object_type) {
	WixlMsiTableStreams * self = NULL;
	self = (WixlMsiTableStreams*) wixl_msi_table_construct (object_type);
	return self;
}


WixlMsiTableStreams* wixl_msi_table_streams_new (void) {
	return wixl_msi_table_streams_construct (WIXL_TYPE_MSI_TABLE_STREAMS);
}


static void wixl_msi_table_streams_class_init (WixlMsiTableStreamsClass * klass) {
	gchar* _tmp0_ = NULL;
	wixl_msi_table_streams_parent_class = g_type_class_peek_parent (klass);
	((WixlMsiTableClass *) klass)->create = (void (*)(WixlMsiTable*, LibmsiDatabase*, GError**)) wixl_msi_table_streams_real_create;
	_tmp0_ = g_strdup ("_Streams");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
}


static void wixl_msi_table_streams_instance_init (WixlMsiTableStreams * self) {
}


GType wixl_msi_table_streams_get_type (void) {
	static volatile gsize wixl_msi_table_streams_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_table_streams_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableStreamsClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_streams_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableStreams), 0, (GInstanceInitFunc) wixl_msi_table_streams_instance_init, NULL };
		GType wixl_msi_table_streams_type_id;
		wixl_msi_table_streams_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableStreams", &g_define_type_info, 0);
		g_once_init_leave (&wixl_msi_table_streams_type_id__volatile, wixl_msi_table_streams_type_id);
	}
	return wixl_msi_table_streams_type_id__volatile;
}


WixlMsiSummaryInfo* wixl_msi_summary_info_construct (GType object_type) {
	WixlMsiSummaryInfo * self = NULL;
	self = (WixlMsiSummaryInfo*) g_object_new (object_type, NULL);
	return self;
}


WixlMsiSummaryInfo* wixl_msi_summary_info_new (void) {
	return wixl_msi_summary_info_construct (WIXL_TYPE_MSI_SUMMARY_INFO);
}


void wixl_msi_summary_info_set_property (WixlMsiSummaryInfo* self, LibmsiProperty prop, GValue* value, GError** error) {
	GType _tmp0_ = 0UL;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (value != NULL);
	_tmp0_ = G_VALUE_TYPE (value);
	if (_tmp0_ == G_TYPE_STRING) {
		LibmsiSummaryInfo* _tmp1_ = NULL;
		LibmsiProperty _tmp2_ = 0;
		GValue _tmp3_ = {0};
		_tmp1_ = self->properties;
		_tmp2_ = prop;
		_tmp3_ = *value;
		libmsi_summary_info_set_string (_tmp1_, _tmp2_, g_value_get_string (&_tmp3_), &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			return;
		}
	} else {
		GType _tmp4_ = 0UL;
		_tmp4_ = G_VALUE_TYPE (value);
		if (_tmp4_ == G_TYPE_INT) {
			LibmsiSummaryInfo* _tmp5_ = NULL;
			LibmsiProperty _tmp6_ = 0;
			GValue _tmp7_ = {0};
			_tmp5_ = self->properties;
			_tmp6_ = prop;
			_tmp7_ = *value;
			libmsi_summary_info_set_int (_tmp5_, _tmp6_, g_value_get_int (&_tmp7_), &_inner_error_);
			if (G_UNLIKELY (_inner_error_ != NULL)) {
				g_propagate_error (error, _inner_error_);
				return;
			}
		} else {
			GType _tmp8_ = 0UL;
			_tmp8_ = G_VALUE_TYPE (value);
			if (_tmp8_ == G_TYPE_UINT64) {
				LibmsiSummaryInfo* _tmp9_ = NULL;
				LibmsiProperty _tmp10_ = 0;
				GValue _tmp11_ = {0};
				_tmp9_ = self->properties;
				_tmp10_ = prop;
				_tmp11_ = *value;
				libmsi_summary_info_set_filetime (_tmp9_, _tmp10_, g_value_get_uint64 (&_tmp11_), &_inner_error_);
				if (G_UNLIKELY (_inner_error_ != NULL)) {
					g_propagate_error (error, _inner_error_);
					return;
				}
			} else {
				g_critical ("msi.vala:722: Unhandled property type");
			}
		}
	}
}


void wixl_msi_summary_info_save (WixlMsiSummaryInfo* self, LibmsiDatabase* db, GError** error) {
	LibmsiSummaryInfo* _tmp0_ = NULL;
	LibmsiDatabase* _tmp1_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (db != NULL);
	_tmp0_ = self->properties;
	_tmp1_ = db;
	libmsi_summary_info_save (_tmp0_, _tmp1_, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		return;
	}
}


void wixl_msi_summary_info_set_codepage (WixlMsiSummaryInfo* self, gint value, GError** error) {
	gint _tmp0_ = 0;
	GValue _tmp1_ = {0};
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	_tmp0_ = value;
	g_value_init (&_tmp1_, G_TYPE_INT);
	g_value_set_int (&_tmp1_, _tmp0_);
	wixl_msi_summary_info_set_property (self, LIBMSI_PROPERTY_CODEPAGE, &_tmp1_, &_inner_error_);
	G_IS_VALUE (&_tmp1_) ? (g_value_unset (&_tmp1_), NULL) : NULL;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		return;
	}
}


void wixl_msi_summary_info_set_author (WixlMsiSummaryInfo* self, const gchar* value, GError** error) {
	const gchar* _tmp0_ = NULL;
	GValue _tmp1_ = {0};
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (value != NULL);
	_tmp0_ = value;
	g_value_init (&_tmp1_, G_TYPE_STRING);
	g_value_set_string (&_tmp1_, _tmp0_);
	wixl_msi_summary_info_set_property (self, LIBMSI_PROPERTY_AUTHOR, &_tmp1_, &_inner_error_);
	G_IS_VALUE (&_tmp1_) ? (g_value_unset (&_tmp1_), NULL) : NULL;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		return;
	}
}


void wixl_msi_summary_info_set_keywords (WixlMsiSummaryInfo* self, const gchar* value, GError** error) {
	const gchar* _tmp0_ = NULL;
	GValue _tmp1_ = {0};
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (value != NULL);
	_tmp0_ = value;
	g_value_init (&_tmp1_, G_TYPE_STRING);
	g_value_set_string (&_tmp1_, _tmp0_);
	wixl_msi_summary_info_set_property (self, LIBMSI_PROPERTY_KEYWORDS, &_tmp1_, &_inner_error_);
	G_IS_VALUE (&_tmp1_) ? (g_value_unset (&_tmp1_), NULL) : NULL;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		return;
	}
}


void wixl_msi_summary_info_set_subject (WixlMsiSummaryInfo* self, const gchar* value, GError** error) {
	const gchar* _tmp0_ = NULL;
	GValue _tmp1_ = {0};
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (value != NULL);
	_tmp0_ = value;
	g_value_init (&_tmp1_, G_TYPE_STRING);
	g_value_set_string (&_tmp1_, _tmp0_);
	wixl_msi_summary_info_set_property (self, LIBMSI_PROPERTY_SUBJECT, &_tmp1_, &_inner_error_);
	G_IS_VALUE (&_tmp1_) ? (g_value_unset (&_tmp1_), NULL) : NULL;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		return;
	}
}


gchar* wixl_msi_summary_info_get_subject (WixlMsiSummaryInfo* self) {
	gchar* result = NULL;
	GError * _inner_error_ = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	{
		const gchar* _tmp0_ = NULL;
		LibmsiSummaryInfo* _tmp1_ = NULL;
		const gchar* _tmp2_ = NULL;
		gchar* _tmp3_ = NULL;
		_tmp1_ = self->properties;
		_tmp2_ = libmsi_summary_info_get_string (_tmp1_, LIBMSI_PROPERTY_SUBJECT, &_inner_error_);
		_tmp0_ = _tmp2_;
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			goto __catch3_g_error;
		}
		_tmp3_ = g_strdup (_tmp0_);
		result = _tmp3_;
		return result;
	}
	goto __finally3;
	__catch3_g_error:
	{
		GError* err = NULL;
		err = _inner_error_;
		_inner_error_ = NULL;
		result = NULL;
		_g_error_free0 (err);
		return result;
	}
	__finally3:
	g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
	g_clear_error (&_inner_error_);
	return NULL;
}


void wixl_msi_summary_info_set_comments (WixlMsiSummaryInfo* self, const gchar* value, GError** error) {
	const gchar* _tmp0_ = NULL;
	GValue _tmp1_ = {0};
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (value != NULL);
	_tmp0_ = value;
	g_value_init (&_tmp1_, G_TYPE_STRING);
	g_value_set_string (&_tmp1_, _tmp0_);
	wixl_msi_summary_info_set_property (self, LIBMSI_PROPERTY_COMMENTS, &_tmp1_, &_inner_error_);
	G_IS_VALUE (&_tmp1_) ? (g_value_unset (&_tmp1_), NULL) : NULL;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		return;
	}
}


gchar* wixl_msi_summary_info_get_comments (WixlMsiSummaryInfo* self) {
	gchar* result = NULL;
	GError * _inner_error_ = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	{
		const gchar* _tmp0_ = NULL;
		LibmsiSummaryInfo* _tmp1_ = NULL;
		const gchar* _tmp2_ = NULL;
		gchar* _tmp3_ = NULL;
		_tmp1_ = self->properties;
		_tmp2_ = libmsi_summary_info_get_string (_tmp1_, LIBMSI_PROPERTY_COMMENTS, &_inner_error_);
		_tmp0_ = _tmp2_;
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			goto __catch4_g_error;
		}
		_tmp3_ = g_strdup (_tmp0_);
		result = _tmp3_;
		return result;
	}
	goto __finally4;
	__catch4_g_error:
	{
		GError* err = NULL;
		err = _inner_error_;
		_inner_error_ = NULL;
		result = NULL;
		_g_error_free0 (err);
		return result;
	}
	__finally4:
	g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
	g_clear_error (&_inner_error_);
	return NULL;
}


static GObject * wixl_msi_summary_info_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) {
	GObject * obj;
	GObjectClass * parent_class;
	WixlMsiSummaryInfo * self;
	GError * _inner_error_ = NULL;
	parent_class = G_OBJECT_CLASS (wixl_msi_summary_info_parent_class);
	obj = parent_class->constructor (type, n_construct_properties, construct_properties);
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, WIXL_TYPE_MSI_SUMMARY_INFO, WixlMsiSummaryInfo);
	{
		LibmsiSummaryInfo* _tmp0_ = NULL;
		LibmsiSummaryInfo* _tmp1_ = NULL;
		LibmsiSummaryInfo* _tmp2_ = NULL;
		_tmp1_ = libmsi_summary_info_new (NULL, G_MAXUINT, &_inner_error_);
		_tmp0_ = _tmp1_;
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			goto __catch5_g_error;
		}
		_tmp2_ = _tmp0_;
		_tmp0_ = NULL;
		_g_object_unref0 (self->properties);
		self->properties = _tmp2_;
		_g_object_unref0 (_tmp0_);
	}
	goto __finally5;
	__catch5_g_error:
	{
		GError* _error_ = NULL;
		GError* _tmp3_ = NULL;
		const gchar* _tmp4_ = NULL;
		_error_ = _inner_error_;
		_inner_error_ = NULL;
		_tmp3_ = _error_;
		_tmp4_ = _tmp3_->message;
		g_critical ("msi.vala:707: %s", _tmp4_);
		_g_error_free0 (_error_);
	}
	__finally5:
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
		g_clear_error (&_inner_error_);
	}
	return obj;
}


static void wixl_msi_summary_info_class_init (WixlMsiSummaryInfoClass * klass) {
	wixl_msi_summary_info_parent_class = g_type_class_peek_parent (klass);
	G_OBJECT_CLASS (klass)->constructor = wixl_msi_summary_info_constructor;
	G_OBJECT_CLASS (klass)->finalize = wixl_msi_summary_info_finalize;
}


static void wixl_msi_summary_info_instance_init (WixlMsiSummaryInfo * self) {
}


static void wixl_msi_summary_info_finalize (GObject* obj) {
	WixlMsiSummaryInfo * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, WIXL_TYPE_MSI_SUMMARY_INFO, WixlMsiSummaryInfo);
	_g_object_unref0 (self->properties);
	G_OBJECT_CLASS (wixl_msi_summary_info_parent_class)->finalize (obj);
}


GType wixl_msi_summary_info_get_type (void) {
	static volatile gsize wixl_msi_summary_info_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_summary_info_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiSummaryInfoClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_summary_info_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiSummaryInfo), 0, (GInstanceInitFunc) wixl_msi_summary_info_instance_init, NULL };
		GType wixl_msi_summary_info_type_id;
		wixl_msi_summary_info_type_id = g_type_register_static (G_TYPE_OBJECT, "WixlMsiSummaryInfo", &g_define_type_info, 0);
		g_once_init_leave (&wixl_msi_summary_info_type_id__volatile, wixl_msi_summary_info_type_id);
	}
	return wixl_msi_summary_info_type_id__volatile;
}


static gint wixl_msi_database_get_default_version (WixlMsiDatabase* self) {
	gint result = 0;
	WixlArch _tmp0_ = 0;
	g_return_val_if_fail (self != NULL, 0);
	_tmp0_ = self->priv->_arch;
	if (_tmp0_ == WIXL_ARCH_X86) {
		result = 100;
		return result;
	} else {
		result = 200;
		return result;
	}
}


static gchar* wixl_msi_database_get_arch_template (WixlMsiDatabase* self) {
	gchar* result = NULL;
	WixlArch _tmp0_ = 0;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_arch;
	if (_tmp0_ == WIXL_ARCH_X86) {
		gchar* _tmp1_ = NULL;
		_tmp1_ = g_strdup ("Intel");
		result = _tmp1_;
		return result;
	} else {
		gchar* _tmp2_ = NULL;
		_tmp2_ = g_strdup ("x64");
		result = _tmp2_;
		return result;
	}
}


WixlMsiDatabase* wixl_msi_database_construct (GType object_type, WixlArch arch) {
	WixlMsiDatabase * self = NULL;
	WixlArch _tmp0_ = 0;
	_tmp0_ = arch;
	self = (WixlMsiDatabase*) g_object_new (object_type, "arch", _tmp0_, NULL);
	return self;
}


WixlMsiDatabase* wixl_msi_database_new (WixlArch arch) {
	return wixl_msi_database_construct (WIXL_TYPE_MSI_DATABASE, arch);
}


void wixl_msi_database_build (WixlMsiDatabase* self, const gchar* filename, GError** error) {
	gchar* name = NULL;
	WixlMsiTable* table = NULL;
	LibmsiDatabase* db = NULL;
	const gchar* _tmp0_ = NULL;
	LibmsiDatabase* _tmp1_ = NULL;
	WixlMsiSummaryInfo* _tmp2_ = NULL;
	LibmsiDatabase* _tmp3_ = NULL;
	GHashTableIter it = {0};
	GHashTable* _tmp4_ = NULL;
	LibmsiDatabase* _tmp12_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (filename != NULL);
	_tmp0_ = filename;
	_tmp1_ = libmsi_database_new (_tmp0_, (guint) LIBMSI_DB_FLAGS_CREATE, NULL, &_inner_error_);
	db = _tmp1_;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (table);
		_g_free0 (name);
		return;
	}
	_tmp2_ = self->info;
	_tmp3_ = db;
	wixl_msi_summary_info_save (_tmp2_, _tmp3_, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (db);
		_g_object_unref0 (table);
		_g_free0 (name);
		return;
	}
	_tmp4_ = self->tables;
	g_hash_table_iter_init (&it, _tmp4_);
	while (TRUE) {
		gconstpointer _tmp5_ = NULL;
		gconstpointer _tmp6_ = NULL;
		gboolean _tmp7_ = FALSE;
		gchar* _tmp8_ = NULL;
		WixlMsiTable* _tmp9_ = NULL;
		WixlMsiTable* _tmp10_ = NULL;
		LibmsiDatabase* _tmp11_ = NULL;
		_tmp7_ = g_hash_table_iter_next (&it, (gpointer*) (&_tmp5_), (gpointer*) (&_tmp6_));
		_g_free0 (name);
		_tmp8_ = g_strdup (_tmp5_);
		name = _tmp8_;
		_g_object_unref0 (table);
		_tmp9_ = _g_object_ref0 (_tmp6_);
		table = _tmp9_;
		if (!_tmp7_) {
			break;
		}
		_tmp10_ = table;
		_tmp11_ = db;
		wixl_msi_table_create (_tmp10_, _tmp11_, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			_g_object_unref0 (db);
			_g_object_unref0 (table);
			_g_free0 (name);
			return;
		}
	}
	_tmp12_ = db;
	libmsi_database_commit (_tmp12_, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (db);
		_g_object_unref0 (table);
		_g_free0 (name);
		return;
	}
	_g_object_unref0 (db);
	_g_object_unref0 (table);
	_g_free0 (name);
}


WixlArch wixl_msi_database_get_arch (WixlMsiDatabase* self) {
	WixlArch result;
	WixlArch _tmp0_ = 0;
	g_return_val_if_fail (self != NULL, 0);
	_tmp0_ = self->priv->_arch;
	result = _tmp0_;
	return result;
}


void wixl_msi_database_set_arch (WixlMsiDatabase* self, WixlArch value) {
	WixlArch _tmp0_ = 0;
	g_return_if_fail (self != NULL);
	_tmp0_ = value;
	self->priv->_arch = _tmp0_;
	g_object_notify ((GObject *) self, "arch");
}


static GObject * wixl_msi_database_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) {
	GObject * obj;
	GObjectClass * parent_class;
	WixlMsiDatabase * self;
	WixlMsiSummaryInfo* _tmp0_ = NULL;
	GHashFunc _tmp34_ = NULL;
	GEqualFunc _tmp35_ = NULL;
	GHashTable* _tmp36_ = NULL;
	WixlMsiTableProperty* _tmp37_ = NULL;
	WixlMsiTableIcon* _tmp38_ = NULL;
	WixlMsiTableBinary* _tmp39_ = NULL;
	WixlMsiTableMedia* _tmp40_ = NULL;
	WixlMsiTableDirectory* _tmp41_ = NULL;
	WixlMsiTableComponent* _tmp42_ = NULL;
	WixlMsiTableFeature* _tmp43_ = NULL;
	WixlMsiTableFeatureComponents* _tmp44_ = NULL;
	WixlMsiTableRemoveFile* _tmp45_ = NULL;
	WixlMsiTableRegistry* _tmp46_ = NULL;
	WixlMsiTableServiceControl* _tmp47_ = NULL;
	WixlMsiTableServiceInstall* _tmp48_ = NULL;
	WixlMsiTableFile* _tmp49_ = NULL;
	WixlMsiTableAdminExecuteSequence* _tmp50_ = NULL;
	WixlMsiTableAdminUISequence* _tmp51_ = NULL;
	WixlMsiTableAdvtExecuteSequence* _tmp52_ = NULL;
	WixlMsiTableInstallExecuteSequence* _tmp53_ = NULL;
	WixlMsiTableInstallUISequence* _tmp54_ = NULL;
	WixlMsiTableStreams* _tmp55_ = NULL;
	WixlMsiTableShortcut* _tmp56_ = NULL;
	WixlMsiTableUpgrade* _tmp57_ = NULL;
	WixlMsiTableLaunchCondition* _tmp58_ = NULL;
	WixlMsiTableAppSearch* _tmp59_ = NULL;
	WixlMsiTableSignature* _tmp60_ = NULL;
	WixlMsiTableCustomAction* _tmp61_ = NULL;
	WixlMsiTableRegLocator* _tmp62_ = NULL;
	WixlMsiTableCreateFolder* _tmp63_ = NULL;
	WixlMsiTableFileHash* _tmp64_ = NULL;
	WixlMsiTableAdminExecuteSequence* _tmp65_ = NULL;
	WixlMsiTable* _tmp66_ = NULL;
	WixlMsiTableAdminUISequence* _tmp67_ = NULL;
	WixlMsiTable* _tmp68_ = NULL;
	WixlMsiTableAdvtExecuteSequence* _tmp69_ = NULL;
	WixlMsiTable* _tmp70_ = NULL;
	WixlMsiTableInstallExecuteSequence* _tmp71_ = NULL;
	WixlMsiTable* _tmp72_ = NULL;
	WixlMsiTableInstallUISequence* _tmp73_ = NULL;
	WixlMsiTable* _tmp74_ = NULL;
	WixlMsiTableDirectory* _tmp75_ = NULL;
	WixlMsiTable* _tmp76_ = NULL;
	WixlMsiTableMedia* _tmp77_ = NULL;
	WixlMsiTable* _tmp78_ = NULL;
	WixlMsiTableProperty* _tmp79_ = NULL;
	WixlMsiTable* _tmp80_ = NULL;
	WixlMsiTableIcon* _tmp81_ = NULL;
	WixlMsiTable* _tmp82_ = NULL;
	WixlMsiTableBinary* _tmp83_ = NULL;
	WixlMsiTable* _tmp84_ = NULL;
	WixlMsiTableComponent* _tmp85_ = NULL;
	WixlMsiTable* _tmp86_ = NULL;
	WixlMsiTableFeature* _tmp87_ = NULL;
	WixlMsiTable* _tmp88_ = NULL;
	WixlMsiTableFeatureComponents* _tmp89_ = NULL;
	WixlMsiTable* _tmp90_ = NULL;
	WixlMsiTableRemoveFile* _tmp91_ = NULL;
	WixlMsiTable* _tmp92_ = NULL;
	WixlMsiTableRegistry* _tmp93_ = NULL;
	WixlMsiTable* _tmp94_ = NULL;
	WixlMsiTableServiceControl* _tmp95_ = NULL;
	WixlMsiTable* _tmp96_ = NULL;
	WixlMsiTableServiceInstall* _tmp97_ = NULL;
	WixlMsiTable* _tmp98_ = NULL;
	WixlMsiTableFile* _tmp99_ = NULL;
	WixlMsiTable* _tmp100_ = NULL;
	WixlMsiTableStreams* _tmp101_ = NULL;
	WixlMsiTable* _tmp102_ = NULL;
	WixlMsiTableShortcut* _tmp103_ = NULL;
	WixlMsiTable* _tmp104_ = NULL;
	WixlMsiTableUpgrade* _tmp105_ = NULL;
	WixlMsiTable* _tmp106_ = NULL;
	WixlMsiTableLaunchCondition* _tmp107_ = NULL;
	WixlMsiTable* _tmp108_ = NULL;
	WixlMsiTableAppSearch* _tmp109_ = NULL;
	WixlMsiTable* _tmp110_ = NULL;
	WixlMsiTableSignature* _tmp111_ = NULL;
	WixlMsiTable* _tmp112_ = NULL;
	WixlMsiTableCustomAction* _tmp113_ = NULL;
	WixlMsiTable* _tmp114_ = NULL;
	WixlMsiTableRegLocator* _tmp115_ = NULL;
	WixlMsiTable* _tmp116_ = NULL;
	WixlMsiTableCreateFolder* _tmp117_ = NULL;
	WixlMsiTable* _tmp118_ = NULL;
	WixlMsiTableFileHash* _tmp119_ = NULL;
	WixlMsiTable* _tmp120_ = NULL;
	WixlMsiTableError* _tmp121_ = NULL;
	WixlMsiTableValidation* _tmp122_ = NULL;
	WixlMsiTable** _tmp123_ = NULL;
	GError * _inner_error_ = NULL;
	parent_class = G_OBJECT_CLASS (wixl_msi_database_parent_class);
	obj = parent_class->constructor (type, n_construct_properties, construct_properties);
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, WIXL_TYPE_MSI_DATABASE, WixlMsiDatabase);
	_tmp0_ = wixl_msi_summary_info_new ();
	_g_object_unref0 (self->info);
	self->info = _tmp0_;
	{
		WixlMsiSummaryInfo* _tmp1_ = NULL;
		GValue _tmp2_ = {0};
		WixlMsiSummaryInfo* _tmp3_ = NULL;
		gchar* _tmp4_ = NULL;
		gchar* _tmp5_ = NULL;
		gchar* _tmp6_ = NULL;
		GValue _tmp7_ = {0};
		WixlMsiSummaryInfo* _tmp8_ = NULL;
		GValue _tmp9_ = {0};
		WixlMsiSummaryInfo* _tmp10_ = NULL;
		GValue _tmp11_ = {0};
		gchar* _tmp12_ = NULL;
		gchar* _tmp13_ = NULL;
		gchar* _tmp14_ = NULL;
		WixlMsiSummaryInfo* _tmp15_ = NULL;
		GValue _tmp16_ = {0};
		WixlMsiSummaryInfo* _tmp17_ = NULL;
		glong _tmp18_ = 0L;
		guint64 _tmp19_ = 0ULL;
		GValue _tmp20_ = {0};
		WixlMsiSummaryInfo* _tmp21_ = NULL;
		glong _tmp22_ = 0L;
		guint64 _tmp23_ = 0ULL;
		GValue _tmp24_ = {0};
		WixlMsiSummaryInfo* _tmp25_ = NULL;
		gint _tmp26_ = 0;
		GValue _tmp27_ = {0};
		WixlMsiSummaryInfo* _tmp28_ = NULL;
		GValue _tmp29_ = {0};
		WixlMsiSummaryInfo* _tmp30_ = NULL;
		GValue _tmp31_ = {0};
		_tmp1_ = self->info;
		g_value_init (&_tmp2_, G_TYPE_STRING);
		g_value_set_string (&_tmp2_, "Installation Database");
		wixl_msi_summary_info_set_property (_tmp1_, LIBMSI_PROPERTY_TITLE, &_tmp2_, &_inner_error_);
		G_IS_VALUE (&_tmp2_) ? (g_value_unset (&_tmp2_), NULL) : NULL;
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			goto __catch6_g_error;
		}
		_tmp3_ = self->info;
		_tmp4_ = wixl_msi_database_get_arch_template (self);
		_tmp5_ = _tmp4_;
		_tmp6_ = g_strdup_printf ("%s;1033", _tmp5_);
		g_value_init (&_tmp7_, G_TYPE_STRING);
		g_value_take_string (&_tmp7_, _tmp6_);
		wixl_msi_summary_info_set_property (_tmp3_, LIBMSI_PROPERTY_TEMPLATE, &_tmp7_, &_inner_error_);
		G_IS_VALUE (&_tmp7_) ? (g_value_unset (&_tmp7_), NULL) : NULL;
		_g_free0 (_tmp5_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			goto __catch6_g_error;
		}
		_tmp8_ = self->info;
		g_value_init (&_tmp9_, G_TYPE_STRING);
		g_value_set_string (&_tmp9_, "Installer");
		wixl_msi_summary_info_set_property (_tmp8_, LIBMSI_PROPERTY_KEYWORDS, &_tmp9_, &_inner_error_);
		G_IS_VALUE (&_tmp9_) ? (g_value_unset (&_tmp9_), NULL) : NULL;
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			goto __catch6_g_error;
		}
		_tmp10_ = self->info;
		g_value_init (&_tmp11_, G_TYPE_INT);
		g_value_set_int (&_tmp11_, 1252);
		wixl_msi_summary_info_set_property (_tmp10_, LIBMSI_PROPERTY_CODEPAGE, &_tmp11_, &_inner_error_);
		G_IS_VALUE (&_tmp11_) ? (g_value_unset (&_tmp11_), NULL) : NULL;
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			goto __catch6_g_error;
		}
		_tmp13_ = g_strdup ("*");
		_tmp14_ = wixl_get_uuid (_tmp13_, &_inner_error_);
		_tmp12_ = _tmp14_;
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			goto __catch6_g_error;
		}
		_tmp15_ = self->info;
		g_value_init (&_tmp16_, G_TYPE_STRING);
		g_value_set_string (&_tmp16_, _tmp12_);
		wixl_msi_summary_info_set_property (_tmp15_, LIBMSI_PROPERTY_UUID, &_tmp16_, &_inner_error_);
		G_IS_VALUE (&_tmp16_) ? (g_value_unset (&_tmp16_), NULL) : NULL;
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			_g_free0 (_tmp12_);
			goto __catch6_g_error;
		}
		_tmp17_ = self->info;
		_tmp18_ = wixl_now ();
		_tmp19_ = wixl_time_to_filetime (_tmp18_);
		g_value_init (&_tmp20_, G_TYPE_UINT64);
		g_value_set_uint64 (&_tmp20_, _tmp19_);
		wixl_msi_summary_info_set_property (_tmp17_, LIBMSI_PROPERTY_CREATED_TM, &_tmp20_, &_inner_error_);
		G_IS_VALUE (&_tmp20_) ? (g_value_unset (&_tmp20_), NULL) : NULL;
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			_g_free0 (_tmp12_);
			goto __catch6_g_error;
		}
		_tmp21_ = self->info;
		_tmp22_ = wixl_now ();
		_tmp23_ = wixl_time_to_filetime (_tmp22_);
		g_value_init (&_tmp24_, G_TYPE_UINT64);
		g_value_set_uint64 (&_tmp24_, _tmp23_);
		wixl_msi_summary_info_set_property (_tmp21_, LIBMSI_PROPERTY_LASTSAVED_TM, &_tmp24_, &_inner_error_);
		G_IS_VALUE (&_tmp24_) ? (g_value_unset (&_tmp24_), NULL) : NULL;
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			_g_free0 (_tmp12_);
			goto __catch6_g_error;
		}
		_tmp25_ = self->info;
		_tmp26_ = wixl_msi_database_get_default_version (self);
		g_value_init (&_tmp27_, G_TYPE_INT);
		g_value_set_int (&_tmp27_, _tmp26_);
		wixl_msi_summary_info_set_property (_tmp25_, LIBMSI_PROPERTY_VERSION, &_tmp27_, &_inner_error_);
		G_IS_VALUE (&_tmp27_) ? (g_value_unset (&_tmp27_), NULL) : NULL;
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			_g_free0 (_tmp12_);
			goto __catch6_g_error;
		}
		_tmp28_ = self->info;
		g_value_init (&_tmp29_, G_TYPE_STRING);
		g_value_set_string (&_tmp29_, PACKAGE_STRING);
		wixl_msi_summary_info_set_property (_tmp28_, LIBMSI_PROPERTY_APPNAME, &_tmp29_, &_inner_error_);
		G_IS_VALUE (&_tmp29_) ? (g_value_unset (&_tmp29_), NULL) : NULL;
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			_g_free0 (_tmp12_);
			goto __catch6_g_error;
		}
		_tmp30_ = self->info;
		g_value_init (&_tmp31_, G_TYPE_INT);
		g_value_set_int (&_tmp31_, 2);
		wixl_msi_summary_info_set_property (_tmp30_, LIBMSI_PROPERTY_SECURITY, &_tmp31_, &_inner_error_);
		G_IS_VALUE (&_tmp31_) ? (g_value_unset (&_tmp31_), NULL) : NULL;
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			_g_free0 (_tmp12_);
			goto __catch6_g_error;
		}
		_g_free0 (_tmp12_);
	}
	goto __finally6;
	__catch6_g_error:
	{
		GError* _error_ = NULL;
		GError* _tmp32_ = NULL;
		const gchar* _tmp33_ = NULL;
		_error_ = _inner_error_;
		_inner_error_ = NULL;
		_tmp32_ = _error_;
		_tmp33_ = _tmp32_->message;
		g_critical ("msi.vala:832: %s", _tmp33_);
		_g_error_free0 (_error_);
	}
	__finally6:
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
		g_clear_error (&_inner_error_);
	}
	_tmp34_ = g_str_hash;
	_tmp35_ = g_str_equal;
	_tmp36_ = g_hash_table_new_full (_tmp34_, _tmp35_, _g_free0_, _g_object_unref0_);
	_g_hash_table_unref0 (self->tables);
	self->tables = _tmp36_;
	_tmp37_ = wixl_msi_table_property_new ();
	_g_object_unref0 (self->table_property);
	self->table_property = _tmp37_;
	_tmp38_ = wixl_msi_table_icon_new ();
	_g_object_unref0 (self->table_icon);
	self->table_icon = _tmp38_;
	_tmp39_ = wixl_msi_table_binary_new ();
	_g_object_unref0 (self->table_binary);
	self->table_binary = _tmp39_;
	_tmp40_ = wixl_msi_table_media_new ();
	_g_object_unref0 (self->table_media);
	self->table_media = _tmp40_;
	_tmp41_ = wixl_msi_table_directory_new ();
	_g_object_unref0 (self->table_directory);
	self->table_directory = _tmp41_;
	_tmp42_ = wixl_msi_table_component_new ();
	_g_object_unref0 (self->table_component);
	self->table_component = _tmp42_;
	_tmp43_ = wixl_msi_table_feature_new ();
	_g_object_unref0 (self->table_feature);
	self->table_feature = _tmp43_;
	_tmp44_ = wixl_msi_table_feature_components_new ();
	_g_object_unref0 (self->table_feature_components);
	self->table_feature_components = _tmp44_;
	_tmp45_ = wixl_msi_table_remove_file_new ();
	_g_object_unref0 (self->table_remove_file);
	self->table_remove_file = _tmp45_;
	_tmp46_ = wixl_msi_table_registry_new ();
	_g_object_unref0 (self->table_registry);
	self->table_registry = _tmp46_;
	_tmp47_ = wixl_msi_table_service_control_new ();
	_g_object_unref0 (self->table_service_control);
	self->table_service_control = _tmp47_;
	_tmp48_ = wixl_msi_table_service_install_new ();
	_g_object_unref0 (self->table_service_install);
	self->table_service_install = _tmp48_;
	_tmp49_ = wixl_msi_table_file_new ();
	_g_object_unref0 (self->table_file);
	self->table_file = _tmp49_;
	_tmp50_ = wixl_msi_table_admin_execute_sequence_new ();
	_g_object_unref0 (self->table_admin_execute_sequence);
	self->table_admin_execute_sequence = _tmp50_;
	_tmp51_ = wixl_msi_table_admin_ui_sequence_new ();
	_g_object_unref0 (self->table_admin_ui_sequence);
	self->table_admin_ui_sequence = _tmp51_;
	_tmp52_ = wixl_msi_table_advt_execute_sequence_new ();
	_g_object_unref0 (self->table_advt_execute_sequence);
	self->table_advt_execute_sequence = _tmp52_;
	_tmp53_ = wixl_msi_table_install_execute_sequence_new ();
	_g_object_unref0 (self->table_install_execute_sequence);
	self->table_install_execute_sequence = _tmp53_;
	_tmp54_ = wixl_msi_table_install_ui_sequence_new ();
	_g_object_unref0 (self->table_install_ui_sequence);
	self->table_install_ui_sequence = _tmp54_;
	_tmp55_ = wixl_msi_table_streams_new ();
	_g_object_unref0 (self->table_streams);
	self->table_streams = _tmp55_;
	_tmp56_ = wixl_msi_table_shortcut_new ();
	_g_object_unref0 (self->table_shortcut);
	self->table_shortcut = _tmp56_;
	_tmp57_ = wixl_msi_table_upgrade_new ();
	_g_object_unref0 (self->table_upgrade);
	self->table_upgrade = _tmp57_;
	_tmp58_ = wixl_msi_table_launch_condition_new ();
	_g_object_unref0 (self->table_launch_condition);
	self->table_launch_condition = _tmp58_;
	_tmp59_ = wixl_msi_table_app_search_new ();
	_g_object_unref0 (self->table_app_search);
	self->table_app_search = _tmp59_;
	_tmp60_ = wixl_msi_table_signature_new ();
	_g_object_unref0 (self->table_signature);
	self->table_signature = _tmp60_;
	_tmp61_ = wixl_msi_table_custom_action_new ();
	_g_object_unref0 (self->table_custom_action);
	self->table_custom_action = _tmp61_;
	_tmp62_ = wixl_msi_table_reg_locator_new ();
	_g_object_unref0 (self->table_reg_locator);
	self->table_reg_locator = _tmp62_;
	_tmp63_ = wixl_msi_table_create_folder_new ();
	_g_object_unref0 (self->table_create_folder);
	self->table_create_folder = _tmp63_;
	_tmp64_ = wixl_msi_table_file_hash_new ();
	_g_object_unref0 (self->table_file_hash);
	self->table_file_hash = _tmp64_;
	_tmp65_ = self->table_admin_execute_sequence;
	_tmp66_ = _g_object_ref0 ((WixlMsiTable*) _tmp65_);
	_tmp67_ = self->table_admin_ui_sequence;
	_tmp68_ = _g_object_ref0 ((WixlMsiTable*) _tmp67_);
	_tmp69_ = self->table_advt_execute_sequence;
	_tmp70_ = _g_object_ref0 ((WixlMsiTable*) _tmp69_);
	_tmp71_ = self->table_install_execute_sequence;
	_tmp72_ = _g_object_ref0 ((WixlMsiTable*) _tmp71_);
	_tmp73_ = self->table_install_ui_sequence;
	_tmp74_ = _g_object_ref0 ((WixlMsiTable*) _tmp73_);
	_tmp75_ = self->table_directory;
	_tmp76_ = _g_object_ref0 ((WixlMsiTable*) _tmp75_);
	_tmp77_ = self->table_media;
	_tmp78_ = _g_object_ref0 ((WixlMsiTable*) _tmp77_);
	_tmp79_ = self->table_property;
	_tmp80_ = _g_object_ref0 ((WixlMsiTable*) _tmp79_);
	_tmp81_ = self->table_icon;
	_tmp82_ = _g_object_ref0 ((WixlMsiTable*) _tmp81_);
	_tmp83_ = self->table_binary;
	_tmp84_ = _g_object_ref0 ((WixlMsiTable*) _tmp83_);
	_tmp85_ = self->table_component;
	_tmp86_ = _g_object_ref0 ((WixlMsiTable*) _tmp85_);
	_tmp87_ = self->table_feature;
	_tmp88_ = _g_object_ref0 ((WixlMsiTable*) _tmp87_);
	_tmp89_ = self->table_feature_components;
	_tmp90_ = _g_object_ref0 ((WixlMsiTable*) _tmp89_);
	_tmp91_ = self->table_remove_file;
	_tmp92_ = _g_object_ref0 ((WixlMsiTable*) _tmp91_);
	_tmp93_ = self->table_registry;
	_tmp94_ = _g_object_ref0 ((WixlMsiTable*) _tmp93_);
	_tmp95_ = self->table_service_control;
	_tmp96_ = _g_object_ref0 ((WixlMsiTable*) _tmp95_);
	_tmp97_ = self->table_service_install;
	_tmp98_ = _g_object_ref0 ((WixlMsiTable*) _tmp97_);
	_tmp99_ = self->table_file;
	_tmp100_ = _g_object_ref0 ((WixlMsiTable*) _tmp99_);
	_tmp101_ = self->table_streams;
	_tmp102_ = _g_object_ref0 ((WixlMsiTable*) _tmp101_);
	_tmp103_ = self->table_shortcut;
	_tmp104_ = _g_object_ref0 ((WixlMsiTable*) _tmp103_);
	_tmp105_ = self->table_upgrade;
	_tmp106_ = _g_object_ref0 ((WixlMsiTable*) _tmp105_);
	_tmp107_ = self->table_launch_condition;
	_tmp108_ = _g_object_ref0 ((WixlMsiTable*) _tmp107_);
	_tmp109_ = self->table_app_search;
	_tmp110_ = _g_object_ref0 ((WixlMsiTable*) _tmp109_);
	_tmp111_ = self->table_signature;
	_tmp112_ = _g_object_ref0 ((WixlMsiTable*) _tmp111_);
	_tmp113_ = self->table_custom_action;
	_tmp114_ = _g_object_ref0 ((WixlMsiTable*) _tmp113_);
	_tmp115_ = self->table_reg_locator;
	_tmp116_ = _g_object_ref0 ((WixlMsiTable*) _tmp115_);
	_tmp117_ = self->table_create_folder;
	_tmp118_ = _g_object_ref0 ((WixlMsiTable*) _tmp117_);
	_tmp119_ = self->table_file_hash;
	_tmp120_ = _g_object_ref0 ((WixlMsiTable*) _tmp119_);
	_tmp121_ = wixl_msi_table_error_new ();
	_tmp122_ = wixl_msi_table_validation_new ();
	_tmp123_ = g_new0 (WixlMsiTable*, 30 + 1);
	_tmp123_[0] = _tmp66_;
	_tmp123_[1] = _tmp68_;
	_tmp123_[2] = _tmp70_;
	_tmp123_[3] = _tmp72_;
	_tmp123_[4] = _tmp74_;
	_tmp123_[5] = _tmp76_;
	_tmp123_[6] = _tmp78_;
	_tmp123_[7] = _tmp80_;
	_tmp123_[8] = _tmp82_;
	_tmp123_[9] = _tmp84_;
	_tmp123_[10] = _tmp86_;
	_tmp123_[11] = _tmp88_;
	_tmp123_[12] = _tmp90_;
	_tmp123_[13] = _tmp92_;
	_tmp123_[14] = _tmp94_;
	_tmp123_[15] = _tmp96_;
	_tmp123_[16] = _tmp98_;
	_tmp123_[17] = _tmp100_;
	_tmp123_[18] = _tmp102_;
	_tmp123_[19] = _tmp104_;
	_tmp123_[20] = _tmp106_;
	_tmp123_[21] = _tmp108_;
	_tmp123_[22] = _tmp110_;
	_tmp123_[23] = _tmp112_;
	_tmp123_[24] = _tmp114_;
	_tmp123_[25] = _tmp116_;
	_tmp123_[26] = _tmp118_;
	_tmp123_[27] = _tmp120_;
	_tmp123_[28] = (WixlMsiTable*) _tmp121_;
	_tmp123_[29] = (WixlMsiTable*) _tmp122_;
	{
		WixlMsiTable** t_collection = NULL;
		gint t_collection_length1 = 0;
		gint _t_collection_size_ = 0;
		gint t_it = 0;
		t_collection = _tmp123_;
		t_collection_length1 = 30;
		for (t_it = 0; t_it < 30; t_it = t_it + 1) {
			WixlMsiTable* _tmp124_ = NULL;
			WixlMsiTable* t = NULL;
			_tmp124_ = _g_object_ref0 (t_collection[t_it]);
			t = _tmp124_;
			{
				GHashTable* _tmp125_ = NULL;
				WixlMsiTable* _tmp126_ = NULL;
				const gchar* _tmp127_ = NULL;
				gchar* _tmp128_ = NULL;
				WixlMsiTable* _tmp129_ = NULL;
				WixlMsiTable* _tmp130_ = NULL;
				_tmp125_ = self->tables;
				_tmp126_ = t;
				_tmp127_ = WIXL_MSI_TABLE_CLASS (G_OBJECT_GET_CLASS (_tmp126_))->name;
				_tmp128_ = g_strdup (_tmp127_);
				_tmp129_ = t;
				_tmp130_ = _g_object_ref0 (_tmp129_);
				g_hash_table_insert (_tmp125_, _tmp128_, _tmp130_);
				_g_object_unref0 (t);
			}
		}
		t_collection = (_vala_array_free (t_collection, t_collection_length1, (GDestroyNotify) g_object_unref), NULL);
	}
	return obj;
}


static void wixl_msi_database_class_init (WixlMsiDatabaseClass * klass) {
	wixl_msi_database_parent_class = g_type_class_peek_parent (klass);
	g_type_class_add_private (klass, sizeof (WixlMsiDatabasePrivate));
	G_OBJECT_CLASS (klass)->get_property = _vala_wixl_msi_database_get_property;
	G_OBJECT_CLASS (klass)->set_property = _vala_wixl_msi_database_set_property;
	G_OBJECT_CLASS (klass)->constructor = wixl_msi_database_constructor;
	G_OBJECT_CLASS (klass)->finalize = wixl_msi_database_finalize;
	g_object_class_install_property (G_OBJECT_CLASS (klass), WIXL_MSI_DATABASE_ARCH, g_param_spec_enum ("arch", "arch", "arch", WIXL_TYPE_ARCH, 0, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
}


static void wixl_msi_database_instance_init (WixlMsiDatabase * self) {
	self->priv = WIXL_MSI_DATABASE_GET_PRIVATE (self);
}


static void wixl_msi_database_finalize (GObject* obj) {
	WixlMsiDatabase * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, WIXL_TYPE_MSI_DATABASE, WixlMsiDatabase);
	_g_object_unref0 (self->info);
	_g_object_unref0 (self->table_property);
	_g_object_unref0 (self->table_icon);
	_g_object_unref0 (self->table_binary);
	_g_object_unref0 (self->table_media);
	_g_object_unref0 (self->table_directory);
	_g_object_unref0 (self->table_component);
	_g_object_unref0 (self->table_feature);
	_g_object_unref0 (self->table_feature_components);
	_g_object_unref0 (self->table_remove_file);
	_g_object_unref0 (self->table_registry);
	_g_object_unref0 (self->table_service_control);
	_g_object_unref0 (self->table_service_install);
	_g_object_unref0 (self->table_file);
	_g_object_unref0 (self->table_admin_execute_sequence);
	_g_object_unref0 (self->table_admin_ui_sequence);
	_g_object_unref0 (self->table_advt_execute_sequence);
	_g_object_unref0 (self->table_install_execute_sequence);
	_g_object_unref0 (self->table_install_ui_sequence);
	_g_object_unref0 (self->table_streams);
	_g_object_unref0 (self->table_shortcut);
	_g_object_unref0 (self->table_upgrade);
	_g_object_unref0 (self->table_launch_condition);
	_g_object_unref0 (self->table_app_search);
	_g_object_unref0 (self->table_custom_action);
	_g_object_unref0 (self->table_reg_locator);
	_g_object_unref0 (self->table_create_folder);
	_g_object_unref0 (self->table_signature);
	_g_object_unref0 (self->table_file_hash);
	_g_hash_table_unref0 (self->tables);
	G_OBJECT_CLASS (wixl_msi_database_parent_class)->finalize (obj);
}


GType wixl_msi_database_get_type (void) {
	static volatile gsize wixl_msi_database_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_msi_database_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlMsiDatabaseClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_database_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiDatabase), 0, (GInstanceInitFunc) wixl_msi_database_instance_init, NULL };
		GType wixl_msi_database_type_id;
		wixl_msi_database_type_id = g_type_register_static (G_TYPE_OBJECT, "WixlMsiDatabase", &g_define_type_info, 0);
		g_once_init_leave (&wixl_msi_database_type_id__volatile, wixl_msi_database_type_id);
	}
	return wixl_msi_database_type_id__volatile;
}


static void _vala_wixl_msi_database_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
	WixlMsiDatabase * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, WIXL_TYPE_MSI_DATABASE, WixlMsiDatabase);
	switch (property_id) {
		case WIXL_MSI_DATABASE_ARCH:
		g_value_set_enum (value, wixl_msi_database_get_arch (self));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}


static void _vala_wixl_msi_database_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) {
	WixlMsiDatabase * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, WIXL_TYPE_MSI_DATABASE, WixlMsiDatabase);
	switch (property_id) {
		case WIXL_MSI_DATABASE_ARCH:
		wixl_msi_database_set_arch (self, g_value_get_enum (value));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}


static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) {
	if ((array != NULL) && (destroy_func != NULL)) {
		int i;
		for (i = 0; i < array_length; i = i + 1) {
			if (((gpointer*) array)[i] != NULL) {
				destroy_func (((gpointer*) array)[i]);
			}
		}
	}
}


static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) {
	_vala_array_destroy (array, array_length, destroy_func);
	g_free (array);
}



