I am trying to read the properties from the .msi file using java programmatically.
Used
CryptCodecOpener
.jar files:
ucanaccess-4.0.4.jar
hsqldb-2.3.1.jar
jackcess-2.1.11.jar
commons-lang-2.6.jar
commons-logging-1.1.3.jar
What i get :
Exception in thread "main" net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::4.0.4 null
at net.ucanaccess.jdbc.UcanaccessDriver.connect(UcanaccessDriver.java:231)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:208)
at msipro.Msipro.main(Msipro.java:22)
Caused by: java.lang.IndexOutOfBoundsException
at java.nio.Buffer.checkIndex(Buffer.java:540)
at java.nio.HeapByteBuffer.get(HeapByteBuffer.java:139)
at com.healthmarketscience.jackcess.impl.UsageMap.read(UsageMap.java:134)
at com.healthmarketscience.jackcess.impl.PageChannel.initialize(PageChannel.java:117)
at com.healthmarketscience.jackcess.impl.DatabaseImpl.<init>(DatabaseImpl.java:554)
at com.healthmarketscience.jackcess.impl.DatabaseImpl.open(DatabaseImpl.java:415)
at com.healthmarketscience.jackcess.DatabaseBuilder.open(DatabaseBuilder.java:267)
at msipro.CryptCodecOpener.open(CryptCodecOpener.java:22)
at net.ucanaccess.jdbc.DBReference.<init>(DBReference.java:171)
at net.ucanaccess.jdbc.DBReferenceSingleton.loadReference(DBReferenceSingleton.java:51)
at net.ucanaccess.jdbc.UcanaccessDriver.connect(UcanaccessDriver.java:91)
... 3 more
What I have tried:
try {
String url="jdbc:ucanaccess://D:/msifile.msi;jackcessOpener=msipro.CryptCodecOpener";
Connection connection= DriverManager.getConnection(url,"","");
Statement s = connection.createStatement();
ResultSet rs = s.executeQuery("SELECT * FROM File");
while (rs.next()) {
System.out.println("ss"+rs.getString(1));
}
connection.close();
boolean status = connection.isClosed();
System.out.println("Conn closed = "+status);
} catch (Exception e)
{
System.out.println(""+e);
}