2013-03-29 16 views
6

Abbiamo un'applicazione .NET ma non-Metro, costruita in Visual Studio 2010. Vorremmo mostrare una bella immagine 512x512 (o qualsiasi altra cosa) per la nostra app sul desktop. Non abbiamo bisogno della funzionalità Live Tile, abbiamo solo bisogno di un collegamento che mostra una bella immagine Metro-dimensionata. I programmi OblyTile e Modern Tile Maker possono farlo, anche se non è chiaro come. Stanno creando una scorciatoia LNK programmaticamente? O sono in realtà scorciatoie a loro stesse (app Metro) che poi lanciano la tua app legacy?Win8: In che modo programmi come OblyTile e Modern Tile Maker assegnano le tessere agli shorcuts delle app non-Metro?

Se è il primo, è chiaro che è possibile creare un'icona del desktop con dimensioni Metro per un'app non Win8. Come potremmo scrivere la creazione di tale scorciatoia? Non ci interessa quale lingua dobbiamo usare (JScript, C++, C#, qualunque cosa), dobbiamo solo essere puntati nella giusta direzione. Usiamo WiX, quindi abbiamo molta flessibilità in termini di script di installazione.

+0

L'ho cercato qualche tempo fa, sembrano cambiare le icone e le scorciatoie direttamente nel file lnk stesso. Penso che abbiano usato la scorciatoia da IE. Potresti provare ad aprire un file lnk modificato in un editor esadecimale e cercare di capire cosa hanno cambiato. Non sembra esserci un modo ufficiale attraverso un'API o qualcosa del genere. – Lennart

+0

Guardando il link per OblyTile sembra piuttosto chiaro che creano file LNK in modo programmatico. Inoltre, le app metropolitane non possono lanciare app legacy, quindi il metodo tile secondario non è disponibile. – Denis

+0

@Denis Ho pensato che stavano creando un LNK in modo programmatico. Mi piacerebbe sapere come possiamo farne uno per il nostro setup. Curioso che non forniscano supporto per le numerose app legacy disponibili, per un aspetto gradevole sul desktop senza essere riscritto come Metro :) –

risposta

3

ci sono un paio di cose in corso qui:

1) È possibile visualizzare il codice sorgente per OblyApp scaricando ILSpy: http://ilspy.net/

2) L'OblyApp crea una piastrella che esegue un file VBS (Launcher.vbs) che avvia l'app specificata. OblyApp crea un nuovo file launcher.vbs unico per ogni riquadro e salva anche le immagini per ciascuna delle tessere create sotto lo c:\Program Files\OblyTile\<Folder like 00000001>. Testo del file 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) credo che stanno copiando un file .lnk esistente e modificando le relative informazioni in formato binario. Il codice associato per questo è nei metodi CreaRisorce() e CreateShortcutWinAppClick(). C'è un formato di file ufficiale per i file .lnk qui: http://download.microsoft.com/download/9/5/E/95EF66AF-9026-4BB0-A41D-A4F81802D92C/[MS-SHLLINK].pdf

+0

Grazie Matt. In realtà ho già guardato la fonte e ho visto alcune (ma non tutte) di quelle cose :) Un paio di domande, visto lo scopo della taglia: (a) * come * creano la tessera? Posso vedere le immagini ecc., Ma ... dove e come viene creato e collegato a quelle immagini e didascalie? E (b) ho visto la funzione CreaRisorce ma decifrandola ... agh. Puoi includere parte del codice che effettivamente manipola il link? Stanno usando IShellLink, o lo scrivono in binario (lo dici tu) e se sì quali parti? –

+1

Dovrò farlo la prossima settimana, andando in vacanza tra un'ora. :-) Spero che la taglia sia ancora qui. –

+0

Nessun problema; la taglia è aperta per 6 giorni, ma se nessun altro risponde, te la assegnerò se sei ancora in vacanza e non l'hai ancora aggiunto, per quello che scriverà quando torni;) –