我开发了一个RShiny应用程序,我想与我的同事在内部共享(在服务器上托管应用程序,在这个阶段不是一个选项).
我正在探索各种选项,我遇到了一种技术,可以将您的应用程序捆绑为一个独立的桌面应用程序,并附带一个安装程序文件,然后您可以共享和分发该文件.(这里和这里解释了这种方法)这非常简洁,因为安装它的用户不需要安装和运行应用程序的R(以及任何其他必需的软件包)(它有R的便携版本,chrome等)
我能够按照这种方法创建一个独立的桌面应用程序,带有一个安装程序文件,我现在可以开始共享了.
但是,这是我的担忧:理想情况下,我不希望我的用户能够访问源代码.有没有办法限制这种访问?在教程(我发布的第一个链接)中,这是作者所说的:
*
最后,请记住,您的源代码很容易访问.如果这是您关注的问题(例如,如果您要分发给不应该访问代码的客户端),您可以做的最好的事情是首先将敏感源代码编译为二进制包,从而阻碍访问.也就是说,任何知道R(并且具有足够意图)的用户都可以简单地将代码转储到控制台.
*
是否有更好,更简单的方法来阻止访问?
谢谢!
我不确定它是否适合代码默默无闻的问题,但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 = TRUE到create_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的指南,请查看" 连续安装指南":).
| 归档时间: |
|
| 查看次数: |
16405 次 |
| 最近记录: |