如何让 .exe 打包的 Ruby Shoes 应用程序引用包外的资源?
Posted
技术标签:
【中文标题】如何让 .exe 打包的 Ruby Shoes 应用程序引用包外的资源?【英文标题】:How to get a .exe packaged Ruby Shoes app to reference resources outside the package? 【发布时间】:2016-04-23 22:05:14 【问题描述】:我正在尝试制作一个独立的 .exe 打包的 Ruby Shoes 应用程序,该应用程序动态使用图像,这意味着在 .exe 文件的文件夹中找到任何图像。
Shoes.app()
background "bg.jpg"
如果在打包 .exe 时图像位于同一文件夹中,则此代码有效,并且该图像似乎已打包到 .exe 中,因为它不需要与 .exe 位于同一文件夹中以使其在运行时显示exe。但是,当您希望它加载与 .exe 相同的文件夹中的文件时,在没有图像的情况下打包应用程序时,它不会显示。我尝试了不同的方法来查找启动 .exe 的当前目录的绝对路径,但它们似乎都指向 AppData 下的某个临时目录,而不是 .exe 文件所在的位置。
【问题讨论】:
【参考方案1】:编辑:我的第一个答案不完整。对于打包的应用程序,Windows 的鞋子有点奇怪。写一个小测试脚本。
Shoes.app do
stack do
para "DIR: #DIR"
para "LIB_DIR: #LIB_DIR"
cdir = Dir.getwd
para "CWD: #cdir"
end
end
Dir.getwd 可能就是你想要的。
【讨论】:
嘿,谢谢你的回答,但是当从 .shy 或 .exe 运行时,Dir.getwd 仍然返回 C:/Users/调用 pwd 应该会得到你想要的 不,好的,抱歉现在就知道了!:-) Shoes 正在将您的 exe/shy 打开到 AppData/temp 中,因此工作目录和 __FILE__ 都指向那里! 有人,前段时间提出了这个:Trying to access the "current dir" in a packaged Shoes app
一定是更好的方法!
编辑: 您可能需要自定义打包程序(检查“我想要高级安装选项”) 检查“在用户目录中展开 shy” 按照常规包装的方式进行操作。 现在启动 exe 时,它会要求您(或用户)选择安装应用程序的位置,继续,注意目录。 现在,在启动已安装的应用程序之前,请使用您的资源提供记录的目录,您应该没问题
一些参考:https://github.com/Shoes3/shoes3/wiki/Custom-Install-Scripts (还有很多)https://github.com/Shoes3/shoes3/issues/247#issuecomment-213919829
【讨论】:
我注意到了那个帖子,但遗憾的是,变通方法表明我的项目并不真正可行。 在尝试您在编辑中编写的内容时,我遇到了这样的问题:i.imgur.com/CztIXRm.png Windows Repack,它说它从来没有给我一个 .exe 文件。 @MaloW,您是否选择了安装程序图标?如果我不选择一个,我也会被卡住。 添加安装程序图标后,它会打包,但在尝试运行 .exe 文件时出现此错误:i.imgur.com/mJUMHUY.png以上是关于如何让 .exe 打包的 Ruby Shoes 应用程序引用包外的资源?的主要内容,如果未能解决你的问题,请参考以下文章
ADVANCED INSTALLER 打包安装exe相关问题
基于py打包了一个exe文件,里面涉及的数据位于MySQL中,怎么让其他人也能正常使用exe?