簡體   English   中英

設置啟動器以打開關聯的文件類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM