2015-11-04 170 views
10

我已經開發出一種RShiny應用程序,我想與我的同事分享內部(託管在服務器上的應用程序,是不是在這個階段的一個選項)。部署[R閃亮的應用程序作爲一個獨立的應用程序

我正在探索各種選擇,並且我遇到了一種將您的應用程序作爲獨立桌面應用程序綁定到安裝程序文件的技術,然後您可以分享這些文件。 (該方法是解釋here & here) 這是非常整齊,因爲用戶安裝它不需要有R(以及任何其他所需的軟件包)安裝並運行應用程序(它具有R,鉻等的便攜版本)

我能夠按照該方法創建一個獨立的桌面應用程序,並帶有一個安裝程序文件,我現在可以開始共享。

不過,這是我所關注: 理想情況下,我不希望我的用戶能夠訪問源代碼。有沒有辦法限制這種訪問?在本教程(第一個鏈接,我貼),這就是筆者這樣說:

*

最後,請記住,你的源代碼是很方便。如果 這是您所關心的問題(例如,如果您分發給客戶端 ,那麼應該無法訪問代碼),您可以通過首先將敏感源代碼編譯爲二進制 包來阻止 訪問。也就是說,任何知道R(並具有足夠意圖)的用戶都可以簡單地將代碼轉儲到控制檯。

*

有沒有更好的,更多的防呆的方式來阻止訪問?

謝謝!

回答

2

我不熟悉的做法,是常見的?我個人從未見過它。它看起來基本上就是將R,Shiny,Web瀏覽器和代碼捆綁到一個文件中。就好像客戶端安裝R,Chrome,閃亮,並運行你的代碼,但他只需點擊一下即可完成。你真的給用戶你的代碼。我不知道它是如何工作的,但如果作者自己聲稱客戶端將能夠看到源代碼,那麼這對我來說是有道理的,我認爲你不能避免這種情況。

爲什麼不舉辦一個閃亮的服務器或shinyapps.io上的文件?那麼客戶端將不會看到您的代碼。而且,他們看不到你的代碼真的很重要嗎?很多時候,人們害怕別人看到他們的代碼,但實際上沒有人真正關心別人的代碼並竊取它。除非你有一些非常專有和先進的專利代碼。

+0

感謝您的意見!我確實考慮過shinyapps.io,可能我會進一步探索它。但是我的擔心是成本(在某種程度上),更重要的是數據隱私部分(考慮到應用程序使用的數據非常敏感)。我所工作的組織對數據隱私和相關問題有相當嚴格的指導。所以我可能會遇到一些路障。其次,用戶不應該看到代碼並不是非常重要。因此,如果沒有簡單的方法來屏蔽代碼,那麼我最終只會發佈整個包。 – Dataminer

+0

如果您沒有太多使用它,成本是免費的。如果你擔心成本和隱私,那麼[使用你自己的閃亮服務器](http://deanattali.com/2015/05/09/setup-rstudio-shiny-server-digital-ocean/)。 這樣它仍然由您託管,您可以控制它。我想這取決於你是否希望應用程序完全交付給客戶端,或者如果你想要託管它。它作爲一個獨立的軟件給予他們,這意味着你不能更新它並修復錯誤。 –

2

我不確定它是否適合代碼隱祕問題,但RInno包旨在幫助解決數據安全問題,即當公司不想與第三方共享數據時派對。它還可以自動執行上面引用的過程,並允許您將應用程序連接到GitHub/Bitbucket,以便在啓動時通過API調用將更新推送到本地安裝的閃亮應用程序。

要開始:

install.packages("RInno") 
require(RInno) 
RInno::install_inno() 

然後你只需要調用兩個函數來創建一個安裝框架:

create_app(app_name = "myapp", app_dir = "path/to/myapp") 
compile_iss() 

如果你想:R表示你的同事誰不「T有它安裝,添加include_R = TRUEcreate_app

create_app(app_name = "myapp", app_dir = "path/to/myapp", include_R = TRUE) 

它默認包含閃亮,magrittr和jsonlite,所以如果您使用其他軟件包(如ggplot2)或繪圖,只需將它們添加到pkgs參數。您還可以包括GitHub的軟件包到remotes說法:

create_app(
    app_name = "myapp", 
    app_dir = "path/to/myapp" 
    pkgs  = c("shiny", "jsonlite", "magrittr", "plotly", "ggplot2"), 
    remotes = c("talgalili/installr", "daattali/shinyjs")) 

如果你有興趣在其他功能,請FI Labs - RInno。如果您需要關於如何將其連接到GitHub/Bitbucket的指南,請查看Continuous Installation指南:)。

+1

'install_inno()'是一個障礙,因爲數據安全性不允許我執行下載。你能提出一種解決方法嗎? – Divi

+0

當然!您必須獲得授權才能安裝Inno Setup - http://www.jrsoftware.org/isdl.php。 RInno軟件包需要Inno Setup爲您的Shiny應用程序構建安裝程序。 –

相關問題