2

我使用 cygwin 版本的 gvim 在 Windows 中编辑文件,为此我创建了一个 bat 脚本,它使用 cygwin 版本的 gvim(通过将路径转换为 ​​cygwin 格式)打开一个文件。我还编写了一个小型 powershell 脚本来将此 bat 脚本注册到 Windows 资源管理器,这样我就可以使用“打开方式”上下文菜单关联文件扩展名。这是脚本:

$ErrorActionPreference = "Stop"
$classes="hkcu:\software\classes"
$appid="cygwin.gvim"
$apps="$classes\applications"
$cmd='...SOMEDIRECTORY...\edit-gvim.bat'
$friendlyname='gVim (Cygwin)'
$icon='...ANOTHERDIRECTORY...\vim.ico'
$filetypes=@(".txt", ".ps1", ".sh", ".py", ".cs", ".cpp", ".c", ".rb",
    ".zsh", ".bash", ".vbox", ".xml", ".yml", ".yaml", ".bat")

if (test-path "$apps\$appid") {
  # cleanup
  remove-item -recurse "$apps\$appid"
}

# register open commands to know filetypes
new-item -path "$apps\$appid\shell\open\command" -value "$cmd `"%1`"" -force

# add a context menu item(edit with gVim) to every file in windows explorer
new-item -path "$classes\*\shell\Edit with $friendlyname\command" -value "$cmd `"%1`"" -force

# friendly name for the 'open with' dialog
new-itemproperty -path "$apps\$appid\shell\open" -name 'FriendlyAppName' -value $friendlyname

# register the icon
# FIXME this has no effect 
new-item -path "$apps\$appid\DefaultIcon" -value $icon -type expandstring

# register supported file extensions
new-item -path "$apps\$appid\SupportedTypes"
foreach ($ext in $filetypes) {
  new-itemproperty -path "$apps\$appid\SupportedTypes" -name $ext -PropertyType string -value ''
}

除了“FIXME”注释下方的行之外,一切正常,这显然没有效果。我没有看到我提供的带有与 gvim 关联的应用程序的图标,而是看到了未知文件类型的 windows 默认图标。我在这里想念什么?

以下是我用来编写此脚本的一些资源:

4

1 回答 1

0

我可能会犯错,但据我了解DefaultIconis 的语法:

"Full path to a file,ordinal"

当您想要指向 EXE 或 DLL 中的资源时,这很有用

C:\Program Files (x86)\PowerGUI\ScriptEditor.exe,1

但是如果你想指向一个图标文件,你必须保持相同的语法:

[HKEY_CLASSES_ROOT\AcroExch.acrobatsecuritysettings.1\DefaultIcon]
@="C:\\Windows\\Installer\\{AC76BA86-7AD7-1036-7B44-A95000000001}\\PDFFile_8.ico,0"

所以,在你的情况下,我会尝试:

$icon='...ANOTHERDIRECTORY...\vim.ico,0'

或者

$icon='...ANOTHERDIRECTORY...\\vim.ico,0'

已编辑

不要忘记重新启动 explroer.exe 以查看新图标。

于 2013-04-18T03:43:07.407 回答