miktex 和 pandoc 的相对系统路径 - 闪亮的应用程序打包为 Windows 桌面应用程序

Relative system path to miktex and pandoc - Shiny Application packaged as Windows desktop app

我按照以下教程将 Shiny 应用程序打包为 Windows 桌面应用程序:http://www.r-bloggers.com/deploying-desktop-apps-with-r/

在我的 Shiny 应用程序中,我提供用户使用 pandoc 和 MikTex 生成 PDF 报告。 为了让它在我的桌面应用程序中工作,我在我的 runShinyApp.R 脚本中添加了以下代码。

Sys.setenv(PATH=paste("C:/Users/WoBa/Documents/dist/pandoc",sep=";",
"C:/Users/WoBa/Documents/dist/miktex/miktex/bin/"))

虽然这工作正常,但我希望此路径是相对的,这样应用程序就可以分发给其他用户,而无需他们更改路径。

我尝试了以下方法 - 但没有用:

Sys.setenv(PATH=paste("./pandoc",sep=";",
"./miktex/miktex/bin/"))

文件夹结构如下:

dist/
 + GoogleChromePortable
 + miktex
 + pandoc
 + R-Portable
 + runShinyApp.R
 + run.bat

现在有人知道如何使这条路径成为相对路径吗? (在Windows)这对我有很大帮助!

我设法在 runShinyApp.R 脚本中使用以下代码提供了相对路径:

miktex = file.path(getwd(), 'miktex/miktex/bin/')
pandoc = file.path(getwd(), 'pandoc')

Sys.setenv(PATH=paste(pandoc, sep=";", miktex))

只是提供答案,因为这可能对将来的其他人有用。

我用同样的教程制作了一个类似的应用程序。 我已根据 ny Yihui Xie 提供的解决方案将以下内容添加到我的 runShinyApp.R-script,jst 在 runApp 命令之前。

pandoc <- paste(getwd(), "pandoc-2.4", sep = "/")
TinyTex <- paste(getwd(), "TinyTeX/bin/win32", sep = "/")

add_path = function(path) {
  s = .Platform$path.sep
  paths = c(path, unlist(strsplit(Sys.getenv('PATH'), s)))
  Sys.setenv(PATH = paste(paths, collapse = s))
}

add_path(pandoc)
add_path(TinyTex)