Считайте файл MSI с Java

Я нашел, как считать файлы MSI с .NET. Некоторые из них пользуются некоторыми библиотеками, которые идут с Wix. Есть ли способ, которым я считал данные MSI с помощью Java. Я хотел бы получить доступ к таблицам и получить текстовые значения.

5
задан Carlos Blanco 1 February 2010 в 16:55
поделиться

3 ответа

Файлы MSI являются COM-структурированным хранилищем. http://en.wikipedia.org/wiki/COM_Structured_Storage

существует несколько опций. Вы могли попытаться получить доступ к нему с чем-то вроде этого: http://poi.apache.org/poifs/index.html

Вы могли использовать JNI для доступа к собственным API MSI.

Или, вы могли выйти из оболочки к чему-то как vbscript. Сценарий выводит результаты, которые вы хотите к stdout, который вы затем получаете и анализируете в своем приложении Java.

1
ответ дан 15 December 2019 в 06:26
поделиться

.MSI - это, по сути, база данных. Если вы можете прочитать .MDB файл MS Access с помощью JdbcOdbc драйвера Java, вы можете использовать тот же самый код, чтобы открыть .MSI и прочитать его таблицы.

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String msiFileName= "d:/java/test.msi";
String connectString = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=";
connectString += msiFileName.trim() + ";DriverID=22;READONLY=true}";
Connection con = DriverManager.getConnection( connectString ,"",""); 

По крайней мере, в теории. :)

1
ответ дан 15 December 2019 в 06:26
поделиться

Можно ли использовать API установщика Windows через Java?

API - единственный поддерживаемый способ управления файлами MSI. Если вы используете .NET или WiX, вы будете либо использовать эти функции, либо функции, которые их вызывают.

Формат двоичного файла MSI недокументирован и может меняться между версиями, поэтому попытка чтения / записи двоичного формата напрямую вызовет у вас настоящую головную боль.

1
ответ дан 15 December 2019 в 06:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: