如何将Shiny应用制作成无需R环境即可运行的独立应用程序
纯R包实现Shiny本地独立应用的可行方案
以下方案完全基于官方CRAN R包实现,无需额外安装任何外部软件,生成的文件可直接给未安装R的同事本地运行,支持指定Chrome打开,全程无需上传应用到公网。
方案1:shinyShortcut包快速打包(适合单/多个独立Shiny应用)
- 第一步:安装依赖包
install.packages("shinyShortcut") - 第二步:将每个Shiny应用单独存放在独立文件夹中,根目录需包含
app.R(单文件应用)或ui.R+server.R(多文件应用) - 第三步:运行打包命令,替换为对应应用路径:
shinyShortcut::shinyShortcut(appDir = "你的Shiny应用文件夹路径", include_R = TRUE) - 第四步:打包完成后会在应用文件夹下生成Windows系统的
shiny_runner.bat或对应系统的可执行脚本,同时封装了便携版R运行环境 - 自定义Chrome打开配置:打开生成的运行脚本,在
shiny::runApp参数中添加launch.browser = function(url) utils::browseURL(url, browser = "chrome")即可指定唤起Chrome打开应用
你只需将整个应用文件夹打包发给同事,对方解压后双击运行脚本即可直接使用,无需安装任何额外程序。
方案2:packrat+RPortable整合打包(适合多应用聚合、依赖复杂的场景)
如果你的应用依赖包较多、需要把多个Shiny应用整合到同一个入口,可选择该方案:
- 第一步:安装依赖包
install.packages(c("packrat", "RPortable", "shiny.router")) - 第二步:用
packrat初始化应用环境,把所有依赖包封装到应用目录下,避免不同应用的依赖冲突:packrat::init("你的Shiny应用根目录路径") - 第三步:用
shiny.router编写统一应用入口,给不同Shiny应用配置访问路由 - 第四步:将RPortable运行文件放到应用目录的子文件夹中,编写一键启动脚本,Windows系统的bat脚本参考内容如下:
@echo off set R_HOME=%~dp0R-Portable\App\R-Portable "%R_HOME%\bin\R.exe" -e "shiny::runApp('%~dp0app_root', launch.browser = function(u) shell.exec(paste0('chrome.exe ', u)))"
- 最后将所有文件打包分发即可,同事解压后双击启动脚本就能直接访问所有聚合的Shiny应用。
注意事项
- 单应用打包后的文件大小通常在100M~300M之间,多应用打包大小取决于依赖包数量,符合企业内部文件传输的常规限制
- 打包全程可离线完成,所有数据都保存在本地,不会上传到公网,符合企业安全策略要求
内容的提问来源于stack exchange,提问作者asdf1212
相关产品推荐
相关产品推荐

