6

Visual Studio 2010 でビルドされた .NET ですが Metro 以外のアプリがあります。デスクトップにアプリの 512x512 (またはその他) の適切な画像を表示したいと考えています。ライブ タイル機能は必要ありません。メトロ ディメンションの画像を表示するショートカットが必要なだけです。プログラムOblyTileModern Tile Makerはこれを行うことができますが、その方法は明らかではありません。プログラムで LNK ショートカットを作成していますか? それとも、実際には自分自身 (Metro アプリ) へのショートカットであり、レガシー アプリを起動しますか?

前者の場合、Windows 8 以外のアプリ用にメトロ ディメンションのデスクトップ アイコンを作成できることは明らかです。そのようなショートカットの作成をスクリプト化するにはどうすればよいでしょうか? どの言語 (JScript、C++、C# など) を使用する必要があるかは問題ではなく、正しい方向を示す必要があるだけです。私たちは WiX を使用しているため、インストール スクリプトに関して非常に柔軟性があります。

4

1 に答える 1

3

ここでいくつかのことが起こっています:

1) ILSpy をダウンロードして OblyApp のソース コードを表示できます: http://ilspy.net/

2) OblyApp は、指定されたアプリを起動する VBS ファイル (Launcher.vbs) を実行するタイルを作成します。OblyApp は、タイルごとに新しい一意の launcher.vbs ファイルを作成し、作成した各タイルの画像を .xml の下に保存します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 に答える