2015-11-04 122 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应用程序构建安装程序。 –

相关问题