1

我们使用 HTA 文件来构建安装 CD,以便我们可以显示一些介绍性信息和指向不同安装选项的链接 - 每个链接都指向相应的 setup.exe 等文件。这在 Windows 7 之前运行良好,但在 8.1(-未尝试 8.0)上失败,并出现错误“找不到指定的文件”。原来这是因为当前目录现在是 C:\Windows\System32,而它曾经是文件所在的目录 - 在 CD 驱动器上,因此相对路径适用于指向其他文件的链接光盘;现在他们没有。

换句话说,在 hta 文件中使用此代码:

<script type="text/javascript" language="javascript">
    function RunFile(appname) 
    {
    WshShell = new ActiveXObject("WScript.Shell");
    alert( WshShell.CurrentDirectory );
    WshShell.Run(appname, 1, false);
    }

在 win 8.1 上,我们在警告框中看到 C:\Windows\System32,因此 ..\ourproduct\setup.exe 等相对路径不再起作用。

这是一个错误吗?有什么想法可以解决这个问题吗?

4

1 回答 1

1

您可以从中提取正确的路径window.location.pathname,然后将值设置为CurrentDirectory。我使用了类似下面的代码:

var shell = new ActiveXObject('WScript.Shell'),
    defaultInstallationFolder = 'installation_folder_name',
    currentPath = window.location.pathname.replace(/\\/g,'/'),
    defaultRootPath;
if (currentPath.charAt(0) === '/')  { // For the browser environment
    currentPath = currentPath.substring(1, currentPath.length);
}
currentPath = currentPath.split(defaultInstallationFolder);
defaultRootPath = currentPath[0] + defaultInstallationFolder;
shell.CurrentDirectory = defaultRootPath;

IE 和 HTA 略有不同pathname(在 IE 中它以 开头/)。有时在 IE 中调试 HTA 很不错,因此需要检查currentPath.

于 2013-11-09T14:37:56.933 回答