Commit Graph

10 Commits

Author SHA1 Message Date
Erich E. Hoover 4e2f48ce2c msidb: Add support for wildcard table import.
msidb allows multiple tables to be imported with the use of
standard wildcards.  For example, both Feature and
FeatureComponent tables can be imported simultaneously like so:
msidb -d package.msi -f . -i 'Feature*'

Please note that it is important to quote the wildcard to prevent
files from being passed instead of the intended pattern.

Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-19 18:31:15 +01:00
Erich E. Hoover dcb3747f5e msidb: Permit specifying tables to import by filename.
msidb permits tables to be imported by filename (rather than just
the name of the table) when the '.idt' extension is specified.
This feature also allows specifying tables with long filenames:
msidb -d package.msi -f . -i InstallExecuteSequence.idt

Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-19 18:31:04 +01:00
Erich E. Hoover 63e03de9c7 msidb: Add support for wildcard (full database) export.
msidb allows a full database export with the special "*" database
name.  Note: It does not support true wildcards, just this special
indication that you wish to export all the tables in the database.

Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-15 20:02:26 +01:00
Erich E. Hoover 2820738b29 msidb: Add support for exporting with short (DOS) filenames.
msidb's "-s" flag modifies the database export to use short (DOS)
filenames instead of full table names.  This flag is convenient
because it uses the same filenames that the import (-i) option
expects.  For example, the InstallExecuteSequence table gets imported
(or exported with this flag) as InstallE.idt where the normal export
option uses InstallExecuteSequence.idt.

Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-15 20:02:22 +01:00
Erich E. Hoover e7cc147f9e msidb: Add support for exporting database tables.
msidb allows developers to export tables from a database with the "-e"
mode flag followed by a list of tables.  For example, this call would
export three tables to the current directory:
msidb -d package.msi -f . -e ActionText Component InstallExecuteSequence

Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-15 20:02:17 +01:00
Erich E. Hoover d4a362dda7 msidb: Add support for extracting stream/cabinet files from MSI databases.
msidb allows developers to extract "streams" (cabinet files) from a
database with the "-x" mode flag followed by the filename for the
stream in the database, example:
msidb -d package.msi -x cabinet.cab

Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-15 20:02:11 +01:00
Erich E. Hoover 0cf6cd00ce msidb: Add support for removing stream/cabinet files from MSI databases.
msidb allows developers to remove "streams" (cabinet files) from a
database with the "-k" mode flag followed by the filename for the
stream in the database, example:
msidb -d package.msi -k cabinet.cab

Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-15 20:02:04 +01:00
Erich E. Hoover 344bd3b1cc msidb: Add support for adding stream/cabinet files to MSI databases.
msidb allows developers to add "streams" (cabinet files) to a database
with the "-a" mode flag followed by a filename, example:
msidb -d package.msi -a cabinet.cab

Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-11 17:52:24 +01:00
Erich E. Hoover 68e1ad0775 msidb: Add support for importing database tables.
msidb uses a nice CLI syntax for adding multiple database tables in
one call with the "-i" mode flag, this patch implements that syntax.
For example, this call would import three tables from the current
directory (ActionTe.idt, Componen.idt, and InstallE.idt):
msidb -d package.msi -f . -i ActionText Component InstallExecuteSequence

Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-11 17:52:19 +01:00
Erich E. Hoover 3d5b606dde msidb: Add stub tool for manipulating MSI databases.
The "Windows SDK Components for Windows Installer Developers" has a
command line tool called msidb that is incredibly useful for creating,
editing, and exporting MSI installer databases, think of it as
winemsibuilder on steroids.  This patch series implements much of the
functionality of the msidb tool, maintains compatible CLI flags, and
the underlying MSI functionality necessary to support these features.
Jacek expressed an interest in having these patches resurrected for
use by the Gecko build scripts and Austin's VS builds of Valgrind.
With this patch series all the existing winemsibuilder functionality
is available, plus the ability to drop streams, export the
_SummaryInformation table, and export binary streams (Binary/Icon
tables).  A big feature of the implementation is that it allows you to
edit existing installer databases, rather than just creating new ones.

Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-11 17:52:08 +01:00