将R Shining应用程序部署为独立应用程序

将R Shining应用程序部署为独立应用程序,r,shiny,R,Shiny,我已经开发了一个RShiny应用程序,我想在内部与我的同事共享(在服务器上托管该应用程序,在现阶段不是一个选项) 我在探索各种选项,发现了一种将应用程序捆绑为独立桌面应用程序的技术,其中包含一个安装程序文件,您可以共享和分发该文件。(解释了该方法&) 这非常简洁,因为安装它的用户不需要R(以及任何其他必需的软件包)来安装和运行应用程序(它有R、chrome等的便携版本) 我能够按照这种方法创建一个独立的桌面应用程序,带有一个安装程序文件,现在可以开始共享 然而,这是我关注的问题: 理想情况下,我

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

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

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

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

*

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

*

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


谢谢

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


为什么不把文件放在闪亮的服务器或shinyapps.io上呢?客户端将看不到您的代码。另外,他们看不到你的代码真的那么重要吗?很多时候,人们害怕别人看到他们的代码,但事实上,没有人真的在乎看别人的代码并偷走它。除非您有一些非常专有和高级的专利代码。

我不确定它是否适合解决代码模糊性问题,但该软件包旨在帮助解决数据安全问题,即当公司不想与第三方共享其数据时。它还自动化了您上面提到的过程,并允许您将应用程序连接到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\u R=TRUE
添加到
create\u app

create_app(app_name = "myapp", app_dir = "path/to/myapp", include_R = TRUE)
它默认包括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"))

如果您对其他功能感兴趣,请查看。如果您想了解如何将其连接到GitHub/Bitbucket的指南,请查看指南:)。

现在有一种方法可以将闪亮的应用程序转变为独立的电子应用程序(这是一种桌面应用程序,用于Slack等应用程序)。要了解更多信息,请参阅《来自用户2018》,其中包含更多链接:

  • 。RStudio插件,利用Electron框架构建闪亮的应用程序

  • “使用Electron将闪亮应用程序部署为桌面应用程序”


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


谢谢您的评论!我确实想到了shinyapps.io..也许我会进一步探索它。但我担心的是成本(某种程度上),更重要的是数据隐私部分(考虑到应用程序使用的数据相当敏感)。我所在的组织对数据隐私和相关问题有一些相当严格的指导方针。所以我可能会在那里遇到一些路障。其次,用户不应该看到代码并不十分重要。因此,如果没有简单的方法来屏蔽代码,我最终只会将整个软件包发送出去。如果您不经常使用它,成本是免费的。如果你担心成本和隐私,那么。这样,它仍然由您托管并由您控制。我想这取决于你是想把应用程序完全发送到客户端,还是想托管它。它是作为一个独立文件提供给他们的,这意味着你不能更新它并修复错误。
install\u inno()
是一个障碍,因为由于数据安全,我不允许下载可执行文件。你能建议一个解决办法吗?当然!你必须找有权限的人来安装Inno安装程序-。RInno软件包需要Inno安装程序为您的闪亮应用程序构建安装程序。同样值得一提的是,这只适用于Windows。下面的任何答案都可以回答您的问题吗?如果是,请接受一个。如果没有,请告诉我们您还需要什么。谢谢