6

我们有一个在 Visual Studio 2010 中构建的 .NET 但非 Metro 应用程序。我们希望在桌面上为我们的应用程序显示一个漂亮的 512x512(或其他)图像。我们不需要 Live Tile 功能,我们只需要一个显示漂亮 Metro 尺寸图像的快捷方式。OblyTile和Modern Tile Maker程序可以做到这一点,但目前尚不清楚如何做到这一点。他们是否以编程方式创建 LNK 快捷方式?还是它们实际上是自己的快捷方式(Metro 应用程序),然后启动您的旧应用程序?

如果是前者,那么显然可以为非 Win8 应用程序创建 Metro 尺寸桌面图标。我们如何编写这样一个快捷方式的创建脚本?我们不关心我们需要使用哪种语言(JScript、C++、C# 等等),只需要指出正确的方向。我们使用 WiX,因此我们在安装脚本方面有很大的灵活性。

4

1 回答 1

3

这里发生了一些事情:

1)您可以通过下载ILSpy来查看OblyApp的源代码:http: //ilspy.net/

2) OblyApp 创建一个运行 VBS 文件 (Launcher.vbs) 的磁贴,该文件启动指定的应用程序。OblyApp 为每个图块创建一个新的唯一的 launcher.vbs 文件,并且还保存它在下创建的每个图块的图像c:\Program Files\OblyTile\<Folder like 00000001>。vbs 文件的文本:

On Error Resume Next
Set objShell = CreateObject("Wscript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
strApp = "<path to executable>"

arrPath = Split(strApp, "\")

For i = 0 to Ubound(arrPath) - 1
    strAppPath = strAppPath & arrPath(i) & "\"
Next 

objShell.CurrentDirectory = strAppPath
objShell.Run """<path to executable>""" & ""
If Err.Number <> 0 Then
  If InStr(1, strApp, "/") > 0 then
  Else
      If InStr(1, strApp, "www.") > 0 then
      Else
          If InStr(1, strApp, "shell:") > 0 then
          Else
              If objFSO.folderExists(strApp) Then
              Else
                  If objFSO.FileExists(strApp) Then
                  Else
                      MsgBox strApp & " not found", 16, "OblyTile"
                  End If
              End If
          End If
      End If
  End If
Err.Clear
End If

3)我相信他们正在复制现有的 .lnk 文件并以二进制形式更改其相关信息。与此相关的代码位于 CreaRisorce() 和 CreateShortcutWinAppClick() 方法中。这里有 .lnk 文件的官方文件格式:http: //download.microsoft.com/download/9/5/E/95EF66AF-9026-4BB0-A41D-A4F81802D92C/ [MS-SHLLINK].pdf

于 2014-10-31T17:37:20.410 回答