Win8:像OblyTile和Modern Tile Maker这样的程序如何为非Metro应用程序shorcuts分配磁贴?

Sys*_*Lol 6 windows-8 live-tile

我们有一个.NET但非Metro应用程序,内置在Visual Studio 2010中.我们希望在桌面上为我们的应用程序显示一个漂亮的512x512(或其他)图像.我们不需要Live Tile功能,我们只需要一个显示一个漂亮的Metro尺寸图像的快捷方式.该方案OblyTile现代瓷砖制造商可以做到这一点,尽管目前尚不清楚.他们是以编程方式创建LNK快捷方式吗?或者它们实际上是自己的快捷方式(Metro应用程序),然后启动您的旧应用程序?

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

Mat*_*all 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
Run Code Online (Sandbox Code Playgroud)

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