を使用してパッチのエラー110を返しI以下JNAのインタフェースを持っている:MsiOpendatabaseはJNA
public interface MsiVersion extends StdCallLibrary {
MsiVersion INSTANCE = (MsiVersion)Native.loadLibrary("msi", MsiVersion.class,
W32APIOptions.UNICODE_OPTIONS);
int MsiOpenDatabase(String szDatabasePath,
String szPersist,
Memory phDatabase);
}
このすべてがうまくているように私は、MSIを開く場合:
int oparationResult = MsiVersion.INSTANCE.MsiOpenDatabase("example.msi", "0",
dbPointerMemory);
私はパッチを開こうとすると私はエラーコード110を取得します。ドキュメントでは、パッチを開こうとしている場合は、何とかMSIDBOPEN_READONLY + MSIDBOPEN_PATCHFILEを "0"ではなく "szPersist"として渡す必要があることがわかりました。
私はこれに基づいて、次を呼び出そうとしました:http://archives.miloush.net/michkap/archive/2006/04/16/577108.html
int oparationResult = MsiVersion.INSTANCE.MsiOpenDatabase("example.msp", "32",
dbPointerMemory);
しかし、まだエラーコード110を取得し、誰かが正しいパラメータを見つけるために私を助けることはできますか?
おかげで、 バリント
MSI/MSMデータベースファイル用に設計されたAPIを使用してパッチを開くことはできません。パッチはCABが埋め込まれたトランスフォームによく似ています。あなたは何をしようとしているのですか? – PhilDW
@PhilDW MSI/MSMデータベースファイル用に設計されたAPIを使用してパッチを開くことはできません - 実際は[APIドキュメント](https://msdn.microsoft.com/en-us/library/windows/desktop/aa370338) (v = vs.85).aspx)では、パッチを開くことができます。これが意味をなさないかどうかは、OPの質問ではありません。 – zett42
こんにちは、私はmsi /パッチに関連するバージョン番号を取得しようとしています。 "msi"の場合はうまく動作します。 –