将R闪亮应用程序部署为独立应用程序

时间:2015-11-04 04:12:01

标签: r shiny

我开发了一个RShiny应用程序,我希望与我的同事在内部共享(在服务器上托管应用程序,在此阶段不是一个选项)。

我正在探索各种选项,我遇到了一种技术,可以将您的应用程序捆绑为一个独立的桌面应用程序,并附带一个安装程序文件,然后您可以共享该文件。分发。 (方法解释为here& here) 这非常简洁,因为安装它的用户不需要安装和运行应用程序的R(以及任何其他必需的软件包)(它有便携版本的R,chrome等)

我能够按照这种方法创建一个独立的桌面应用程序,带有一个安装程序文件,我现在可以开始共享了。

然而,这是我关注的问题: 理想情况下,我不希望我的用户能够访问源代码。有没有办法限制这种访问?在教程(我发布的第一个链接)中,这就是作者所说的:

*

  

最后,请记住,您的源代码很容易访问。如果   这是您的担忧(例如,如果您要分发给客户   那些不应该访问代码的代码)你能做的最好就是阻碍   通过首先将敏感源代码编译为二进制文件来进行访问   包。也就是说,任何知道R的用户(并且有足够的意图)   可以简单地将代码转储到控制台。

*

是否有更好,更傻瓜的方法来阻止访问?

谢谢!

5 个答案:

答案 0 :(得分:7)

我不确定它是否非常适合代码隐藏问题,但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的同事添加R,请将include_R = TRUE添加到create_app

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

默认包含shiny,magrittr和jsonlite,因此如果您使用ggplot2或plotly等其他包,只需将它们添加到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 :(得分:6)

现在有一种方法可以将Shiny应用程序变成独立的Electron应用程序(这是台式机应用程序,用于Slack等应用程序)。要了解更多信息,请参阅useR 2018中的this excellent presentation,其中包含指向GitHub存储库的更多链接。

希望对您有帮助。

答案 2 :(得分:4)

我不熟悉这种方法,这是常见的吗?我个人从未见过它。看起来你正在做的就是将R,Shiny,网络浏览器和你的代码捆绑到一个文件中。就像客户端安装R,Chrome,闪亮并运行您的代码一样,但他只需点击一下即可完成所有操作。您实际上是在向用户提供您的代码。我不知道它是如何工作的,但如果作者自己声称客户端能够看到源代码,那么这对我来说是有意义的,我认为你不能避免这种情况。

为什么不将文件托管在闪亮的服务器或shinyapps.io上?然后客户端将看不到您的代码。此外,他们无法看到您的代码真的那么重要吗?很多时候人们害怕别人看到他们的代码,但实际上没有人真正关心别人的代码并窃取它。除非你有一些非常专有和先进的专利代码。

答案 3 :(得分:1)

您可能对 DesktopDeployR (一种用于将自包含的基于R的应用程序部署到桌面的框架)感兴趣。

https://github.com/wleepang/DesktopDeployR

答案 4 :(得分:0)

您还可以从“.bat”可执行文件中运行您的闪亮应用,并使用从命令行运行您的应用的代码。 只需打开一个 txt 编辑器并添加以下行:

R -e "shiny::runApp('app.R',launch.browser=TRUE) 

您可以将其另存为,例如“test.bat”。将 app.R 重命名为您闪亮的应用程序名称。确保您将启动浏览器设置为 TRUE,否则应用程序将只会“收听”。

如果您想确保任何 Rmd 报告都能顺利进行,请将 pandoc 路径添加到您闪亮的应用程序的代码中。例如添加行:

Sys.setenv(RSTUDIO_PANDOC="C:/Program Files/RStudio/bin/pandoc") 

您可以通过运行获得您的 pandoc 路径:rmarkdown::find_pandoc()

还要确保 R 在您的路径环境中(例如,将“C:\Program Files\R\R-4.1.0\bin”添加到您的路径环境中)

如果用户真的愿意,他们将可以访问您的源代码,并且需要在运行 bat 文件的 PC 上安装 R,但这可能是快速部署 Shinyapp 的好方法,例如,对于小型团队有一个共享工作站。而且您无需支付或安装服务器。