如何获得.exe打包的Ruby Shoes应用程序来引用包外的资源?

时间:2016-04-23 22:05:15

标签: ruby windows shoes

我正在尝试创建一个独立的.exe打包的Ruby Shoes应用程序,它动态地使用图像,这意味着在.exe文件的文件夹中找到了哪些图像。

Shoes.app() {
  background "bg.jpg"
}

如果图像在打包.exe时位于同一文件夹中,并且图像似乎打包到.exe中,则此代码可以正常工作,因为在运行时显示的.exe文件所在的文件夹中不需要它exe。但是,如果您希望它将文件加载到与.exe相同的文件夹中,将应用程序打包而不显示图像,则不显示。我已经尝试了不同的方法来查找启动.exe的当前目录的绝对路径,但它们似乎都指向AppData下的某个临时目录而不是.exe文件所在的位置。

2 个答案:

答案 0 :(得分:0)

调用 pwd 可以获得您想要的内容 不,对不起,现在就来吧!:-)
鞋子正在打开你的exe /害羞到AppData / temp所以工作目录和 __ FILE __ 都指向那里!
一段时间以前,有人提出过:Trying to access the "current dir" in a packaged Shoes app

一定是更好的方式!

修改
你可能想要自定义打包器(检查"我想要高级安装选项"
检查"在用户目录中展开害羞"
按照常规包装的方式进行操作 现在启动exe时,它会要求您(或用户)选择安装应用程序的位置,继续,记下目录。
现在,在启动已安装的应用程序之前,请使用您的资源提供所需的目录,您应该没问题

一些参考文献:https://github.com/Shoes3/shoes3/wiki/Custom-Install-Scripts (还有更多内容)
https://github.com/Shoes3/shoes3/issues/247#issuecomment-213919829

答案 1 :(得分:0)

编辑:我的第一个答案是不完整的。在包装应用程序的鞋子中,Windows有点奇怪。写一点测试脚本。

Shoes.app do
  stack do
    para "DIR: #{DIR}"
    para "LIB_DIR: #{LIB_DIR}"
    cdir = Dir.getwd
    para "CWD: #{cdir}"
  end
end

Dir.getwd可能就是你想要的。