2016-05-14 88 views
2

我是新的鉻應用程序開發,我已經開發了基於桌面的應用程序幾天回來使用NW,現在我想開發同樣的應用程序的鉻。如何以編程方式訪問Chrome應用安裝目錄?

這裏就是我想實現 -

1,創建文件夾(命名爲應用程序的名稱相同),在用戶的本地文件系統,安裝應用程序時。

2.存儲/訪問上述文件夾內的文件和文件夾。

這些問題可以通過chrome的文件系統API解決嗎?如果是的話請給我建議。

順便說一句,我曾經試圖訪問文件系統的API和我的清單文件看起來像如下─

{ 
    "manifest_version": 2, 
    "name": "sampleApp", 
    "short_name": "sampleApp", 
    "description": "A Sample APP", 
    "version": "0.0.1", 
    "minimum_chrome_version": "38", 

    "icons": { 
    "16": "assets/images/icon_16.png", 
    "128": "assets/images/icon_128.png" 
    }, 
    "permissions": [ 
    {"fileSystem": ["write", "retainEntries", "directory","requestFileSystem"]}, 
    "unlimitedStorage", 
    "system.network", 
    "storage" 
    ], 
    "app": { 
    "background": { 
     "scripts": ["main.js"] 
    } 

    } 
} 

當我運行我的應用程序並嘗試訪問文件系統的API,我看到了Chrome擴展警告面積 -

注:我使用贏得10

fileSystem.requestFileSystem' is not allowed for specified platform 

回答

3

requestFileSystem是錯誤的API使用:

僅適用於在信息亭會話中運行的信息亭應用程序。

您應該致電fileSystem.chooseEntry詢問用戶他想在哪裏創建文件夾,然後保留該條目,這樣就不需要再次申請許可。

沒有辦法不通過chooseEntry詢問用戶,但您只能這樣做一次。

好的fileSystem API樣品是provided by Google


注意,你可以靜靜地請求訪問您的應用程序的安裝文件夾(如你在標題問)與chrome.runtime.getPackageDirectoryEntry。但是,此訪問權限是隻讀的。

如果您修改該文件夾,Chrome會立即禁用您的應用爲「受到攻擊」,因爲它會保留從Chrome網上應用店下載的所有文件的已簽名哈希。


作爲一個潛在的解決方案,可以request a virtual filesystem提示用戶之前,如果你不希望出現這種情況的提示是你的應用程序做的第一件事。但要寫入磁盤,您需要提示。因此,以這種方式對它進行過度複製是沒有意義的 - 向用戶解釋您需要他/她選擇保存位置。

+0

感謝您的回覆,我已經嘗試過早期的文件系統示例,它不符合我的要求,我不想隨時提示保存爲對話框,有沒有其他方法可以實現相同的場景,可能會有一些其他位置不需要在應用程序目錄中。? – Ahtisham

+0

不,在任何情況下,您都不會被允許在沒有提示的情況下直接寫入權限。 – Xan

+0

在Kiosk模式下,您可以在沒有用戶提示的情況下獲得具有寫權限的外部文件系統:https://developer.chrome。com/apps/fileSystem#method-requestFileSystem – kzahel