[英]Setup launcher to open an associated file type
我希望我的 java 應用程序在用戶選擇具有該文件類型的任何內容時自動啟動並顯示 .txt 文件(Microsoft word 在您選擇 .docx 文件時具有相同的行為)
我在這里遵循了 jpackage 文檔: https : //docs.oracle.com/en/java/javase/14/jpackage/support-application-features.html#GUID-8D9F0607-91F4-4070-8823-02FCAB12238D
設置與我的 java 應用程序的文件關聯。 我使用這個屬性文件來指定當用戶選擇一個 .txt 文件時我的應用程序應該打開:
FAtext.properties:
mime-type=text/txt
extension=txt
description=Text source
這有效。 安裝后,我的應用程序會在用戶選擇 .txt 文件時啟動。
但是,我的應用程序實際上並沒有打開 .txt 文件,因為我不確定如何向我的應用程序提供文件名/位置。
我相信解決方案是使用新的 args 指定另一種類型的啟動器。 例如:
OpenTxtFile.properties:
arguments=openTextFile locationOfTextFile
但是我怎樣才能真正將 locationOfTextFile 參數傳遞給啟動器呢?
要設置文件關聯,您的jpackage
命令需要包含--file-associations FAtext.properties
。 請注意,上面的 mime 類型是錯誤的 - 應該是text/plain
安裝新的 MSI 文件后,您可以檢查新 CMD.EXE 中的關聯:
assoc |findstr .txt
.txt=progid.........
查看ftype
是否提到了“=”之后的部分:
ftype | findstr {part after "=" above}
這應該打印如下內容:
progid.........="C:\Program Files\YOURAPP\YOURAPP.exe" %1
請注意,Windows 可能已經為“txt”設置了默認應用程序,因此除非您訪問“設置”>“應用程序”>“默認應用程序”,然后“按文件類型選擇默認應用程序”,否則您的應用程序可能不會啟動。
如果您的應用程序在雙擊 txt 文件后啟動,您應該將 TXT 文件作為第一個參數傳遞。 JavaFX start() 將打印參數,您需要使用:
List<String> args = getParameters().getUnnamed();
System.out.println("start() args="+args);
Path txt = Path.of(args.get(0));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.