createWindowsShortcut.Rd
Creates a Microsoft Windows Shortcut (.lnk file).
# S3 method for default
createWindowsShortcut(pathname, target, overwrite=FALSE, mustWork=FALSE, ...)
The pathname (with file extension *.lnk) of the link file to be created.
The target file or directory to which the shortcut should point to.
If TRUE
, an existing link file is overwritten,
otherwise not.
If TRUE
, an error is produced if the Windows Shortcut
link is not created, otherwise not.
Not used.
Returns (invisibly) the pathname.
In order for this method, which utilizes Windows Script Host a VBScript, to succeed on Windows, the client/R session must run with sufficient privileges (it has been reported that Administrative rights are necessary).
[1] Create a windows shortcut (.LNK file), SS64.com,
https://ss64.com/nt/shortcut.html
# Create Windows Shortcut links to a directory and a file
targets <- list(
system.file(package="R.utils"),
system.file("DESCRIPTION", package="R.utils")
)
for (kk in seq_along(targets)) {
cat("Link #", kk, "\n", sep="")
target <- targets[[kk]]
cat("Target: ", target, "\n", sep="")
# Name of *.lnk file
pathname <- sprintf("%s.LNK", tempfile())
tryCatch({
# Will only work on Windows systems with support for VB scripting
createWindowsShortcut(pathname, target=target)
}, error = function(ex) {
print(ex)
})
# Was it created?
if (isFile(pathname)) {
cat("Created link file: ", pathname, "\n", sep="")
# Validate that it points to the correct target
dest <- filePath(pathname, expandLinks="any")
cat("Available target: ", dest, "\n", sep="")
res <- all.equal(tolower(dest), tolower(target))
if (!isTRUE(res)) {
msg <- sprintf("Link target does not match expected target: %s != %s", dest, target)
cat(msg, "\n")
warning(msg)
}
# Cleanup
file.remove(pathname)
}
}
#> Link #1
#> Target: /tmp/henrik/RtmpsaLUi7/temp_libpath230bf3b96e771/R.utils
#> [2023-11-17 17:03:36.787394] Exception: An error occurred when calling VBScript (‘cscript "/tmp/henrik/RtmpAr1qq8/file2313928d22ebd.vbs"’) to create Windows Shortcut link ‘/tmp/henrik/RtmpAr1qq8/file23139530bffed.LNK’. The reason was: could not find function "shell"
#>
#> at #47. createWindowsShortcutViaVBScript(pathname, target = target, mustWork = mustWork)
#> - createWindowsShortcutViaVBScript() is local of the calling function
#>
#> at #46. createWindowsShortcut.default(pathname, target = target)
#> - createWindowsShortcut.default() is in environment 'R.utils'
#>
#> at #45. createWindowsShortcut(pathname, target = target)
#> - createWindowsShortcut() is in environment 'R.utils'
#> - originating from '<text>'
#>
#> Link #2
#> Target: /tmp/henrik/RtmpsaLUi7/temp_libpath230bf3b96e771/R.utils/DESCRIPTION
#> [2023-11-17 17:03:36.810313] Exception: An error occurred when calling VBScript (‘cscript "/tmp/henrik/RtmpAr1qq8/file2313942ff81dd.vbs"’) to create Windows Shortcut link ‘/tmp/henrik/RtmpAr1qq8/file2313974d6499f.LNK’. The reason was: could not find function "shell"
#>
#> at #47. createWindowsShortcutViaVBScript(pathname, target = target, mustWork = mustWork)
#> - createWindowsShortcutViaVBScript() is local of the calling function
#>
#> at #46. createWindowsShortcut.default(pathname, target = target)
#> - createWindowsShortcut.default() is in environment 'R.utils'
#>
#> at #45. createWindowsShortcut(pathname, target = target)
#> - createWindowsShortcut() is in environment 'R.utils'
#> - originating from '<text>'
#>