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

Dat*_*ner 26 r shiny

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

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

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

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

*

最后,请记住,您的源代码很容易访问.如果这是您关注的问题(例如,如果您要分发给不应该访问代码的客户端),您可以做的最好的事情是首先将敏感源代码编译为二进制包,从而阻碍访问.也就是说,任何知道R(并且具有足够意图)的用户都可以简单地将代码转储到控制台.

*

是否有更好,更简单的方法来阻止访问?

谢谢!

Luc*_*Luc 8

您可能对DesktopDeployR感兴趣,这是一个用于将独立的基于 R 的应用程序部署到桌面的框架。

https://github.com/wlepang/DesktopDeployR


Jon*_*ill 7

我不确定它是否适合代码默默无闻的问题,但RInno包旨在帮助解决数据安全问题,即当公司不想与第三方共享数据时.它还可以自动执行上面引用的过程,并允许您将应用程序连接到GitHub/Bitbucket,以便在启动时通过API调用将更新推送到本地安装的闪亮应用程序.

开始:

install.packages("RInno")
require(RInno)
RInno::install_inno()
Run Code Online (Sandbox Code Playgroud)

然后你只需要调用两个函数来创建一个安装框架:

create_app(app_name = "myapp", app_dir = "path/to/myapp")
compile_iss()
Run Code Online (Sandbox Code Playgroud)

如果您想为未安装R的同事添加R,请添加include_R = TRUEcreate_app:

create_app(app_name = "myapp", app_dir = "path/to/myapp", include_R = TRUE)
Run Code Online (Sandbox Code Playgroud)

它默认包含shiny,magrittr和jsonlite,所以如果你使用ggplot2或plotly等其他包,只需将它们添加到pkgs参数中即可.您还可以在remotes参数中包含GitHub包:

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

如果您对其他功能感兴趣,请查看FI Labs - RInno.如果您想了解如何将其连接到GitHub/Bitbucket的指南,请查看" 连续安装指南":).


p0b*_*0bs 7

现在有办法将Shiny应用程序变成一个独立的Electron应用程序(这是一个桌面应用程序,用于像Slack这样的应用程序).要了解更多信息,请参阅useR 2018的优秀演示文稿,其中包含指向GitHub repos的更多链接.

我希望这可以帮助你.