補丁,我有以下JNA接口:MsiOpendatabase返回錯誤110使用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作爲「szPersist」而不是「0」傳遞給我,如果我想打開補丁。
我試着撥打在此基礎上以下內容: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」的情況。 –