如何获取.exe打包的 Ruby Shoes 应用以引用包外的资源



我正在尝试制作一个独立的.exe打包的Ruby Shoes应用程序,该应用程序动态使用图像,这意味着在.exe文件的文件夹中找到任何图像。

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

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

编辑:我的第一个答案不完整。Windows在打包应用程序的Shoes中有点奇怪。编写一个小测试脚本。

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

Dir.getwd可能是你想要的。

调用 pwd 应该得到你想要
的不,好的,对不起,现在得到它!
鞋子正在打开你的exe/害羞到AppData/temp,所以工作目录和__FILE__都指向那里!
前段时间有人提出这个:尝试在打包的鞋子应用程序中访问"当前目录"

一定是更好的方法!

编辑
您可能需要自定义打包程序(选中"我想要高级安装选项")
选中"在用户目录中展开害羞"
像常规包装一样做。
现在,在启动exe时,它会要求您(或用户)选择安装应用程序的位置,继续,记下目录。
现在,在启动已安装的应用程序之前,请先使用您的资源馈送注明的目录,您应该没问题

参考资料 : https://github.com/Shoes3/shoes3/wiki/Custom-Install-Scripts(还有很多)
https://github.com/Shoes3/shoes3/issues/247#issuecomment-213919829

最新更新