Windows快捷方式具有在将文件移动到其他驱动器时取消引用的绝对路径。我希望用户点击与子目录中所有Qt dll文件分开的文件,而不是快捷方式。
我创建了一个位于可执行文件上方1个目录的批处理文件,其中包含运行该文件的相对路径。
release
+ db
+ plugins
+ platforms
+ iconengines
+ imageformats
- Qt5Core.dll
- program.exe
- etc....
program.bat
//paths set in main()
QCoreApplication::AddLibraryPath("plugins");
我发现以下代码来自this question:
@start "" "\release\program.exe"
但是当运行时,错误消息" windows找不到.."显示
我也试过
@start "" "release\program.exe"
@start "" "%CD%\release\program.exe"
@start "" "%~dp0\release\program.exe"
但是我得到一个关于Qt没有找到" windows"的错误。平台插件,似乎表明这些路径存在问题。
为什么程序使用Windows快捷方式正常运行并且批处理文件失败?
答案 0 :(得分:0)
我已使用您的内容在我的程序的父文件夹中创建了program.bat,可以使用。
它是在未安装Qt的机器上测试的。操作系统是Windows 7
这是示例应用程序结构
bin
+ platforms
+ iconengines
+ imageformats
- Qt5Core.dll
- program.exe
- etc....
program.bat
program.bat包含:
@start "" "bin\program.exe"
请确保您的应用程序部署得很好。
我在我的pro文件中使用它来确保正确部署每个版本:
# Deployment
CONFIG (release, release|debug) {
win32 {
QMAKE_POST_LINK = windeployqt $${DESTDIR}/$${TARGET}.exe --no-translations
# Not necessary when path to VC libraries is correctly set
externalLibs.files += somepath/_windeploy_/msvcr120.dll
externalLibs.files += somepath/_windeploy_/msvcp120.dll
externalLibs.path = $$DESTDIR
# need to add additional build step (make): install
INSTALLS += externalLibs
}
}