【发布时间】:2014-03-18 23:54:40
【问题描述】:
我在一个文件夹中有一个 (PowerBuilder) 应用程序(我们称之为 MyApp.exe),其子目录包含所有必需的 dll。通过将应用程序路径和关联的路径变量添加到 Windows App Paths 注册表项,我能够运行此应用程序。
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\App Paths\MyApp.EXE]
"Path"="C:\\Prog32\\MyAPP;C:\\Prog32\\MyAPP\\DLL\\;"
@="C:\\Prog32\\MyApp\\MyApp.EXE"
以上运行文件。我什至不必注册 DLL。
如果可能,我想使用批处理文件运行它,因为用户可能会在不同的文件夹中安装同一应用程序的多个版本。当我尝试在批处理文件中做同样的事情时,它找不到 DLL。
@SETLOCAL
SET CURDIR=%~dp0
CD %CURDIR%
PUSHD %CURDIR%
SET PATH=%CURDIR%;%CURDIR%\dll;%PATH%
start "" %CURDIR%\myApp.exe
POPD
ENDLOCAL
我在可执行文件 MyApp.exe 所在的目录中创建了这个批处理。我期待它会找到 DLL,就像 App Paths PATH 设置一样。批处理文件出错,无法找到 DLL。在这种情况下我们需要注册 DLL 吗?为什么要区别对待?
注意事项:
如果我将所有必需的 DLL 复制到与可执行文件相同的目录(没有 DLL 子目录),它运行良好,无需担心 PATH 或注册 dll。
我们以前使用 installShield 安装,但管理员有自动脚本来复制文件,他们在第一次安装后回避了 InstallShield 程序。我正在尝试改进流程,以便他们复制的内容将得到简化。
提前感谢您所有宝贵的 cmets 和建议。-Sam
【问题讨论】:
标签: windows batch-file