0

如何将文件的图标路径或快捷方式设置为包含动态环境变量的路径,尤其是当前目录 %cd%。

问题是为文件设置自定义(非系统)图标,并且该图标仍然在其他计算机上使用。文件和图标都将以 .zip 格式提供。当 .zip 在其他计算机上解压缩时,该文件应显示自定义图标。

我被卡住了,因为 Windows 需要一个绝对路径,并且当 .zip 在另一台计算机(具有不同的绝对位置)上解压缩时,此路径会发生变化。

我已经尝试过,但没有成功,通过 GUI 属性窗口或 PowerShell 脚本,如

$wshshell = New-Object -ComObject WScript.Shell
$lnk = $wshshell.CreateShortcut("c:\TheFolder\ASubFolder\nameOfMyShortcut.lnk")
$lnk.TargetPath = "%windir%\system32\cmd.exe /c start \"\" \"Includes\myApplication.exe\""

$lnk.IconLocation = "%cd%\Includes\myApplication.ico"
#$lnk.IconLocation = ".\Includes\myApplication.ico"

$lnk.Save()

您可以使用一个技巧来使 TargetPath 对包文件夹的绝对位置不敏感。

问题是关于如何设置 IconLocation 路径变量相对,这两种方法都不起作用:

$lnk.IconLocation = ".\Includes\myApplication.ico"

或者

$lnk.IconLocation = "%cd%\Includes\myApplication.ico"

据我了解,环境变量 %cd% 是动态的,Windows 不喜欢它。

4

1 回答 1

0

解决问题的方法如下:使用 C#(或静态二进制文件)创建启动器,不需要在包的根文件夹中提供 dll。启动器启动位于资源文件夹中的动态二进制 .exe。

于 2013-02-09T10:42:18.480 回答