Registrazione del tipo di file e icona del documento personalizzato in .NET
Domanda
Ho un'applicazione che produce file. Vorrei collegare quei file con l'applicazione in modo che il doppio clic sul file avvii la mia applicazione.
Tutto funziona correttamente, tranne per il fastidio che l'icona ha lo stesso aspetto dell'icona della mia applicazione. Vorrei avere un'icona per l'applicazione e un'icona per i suoi documenti.
Il valore DefaultIcon nel registro richiede " app.exe, 1 " sintassi dove 1 è l'indice delle icone. Sembra che le risorse .NET non siano risorse Win32.
Ho provato a seguire ma senza successo:
- Selezione di " Embedded Resource " come azione di compilazione del file.
- Aggiunta dell'icona al file di risorse.
L'unica cosa che ha funzionato è avere il file icona separato dall'eseguibile e puntare ad esso. Tuttavia, mi sembra una resa.
Qualche idea su come risolverlo?
Soluzione
Hai provato a impostare 2 come indice delle icone?
EDIT: Ho trovato un modo, ma devi farlo di nuovo per ogni nuova build.
- Apri il file .exe in Visual Studio (File - > Apri file)
- Fai clic con il pulsante destro del mouse sulla cartella delle icone e seleziona Aggiungi risorsa
- Fai clic sul pulsante Importa
- Seleziona il tuo file .ico
- Potrebbe essere necessario pasticciare con i numeri delle icone, penso che il numero più basso (esempio 101) sarà l'icona dell'applicazione
- Ricorda il nuovo numero dell'icona e impostalo come indice
MODIFICA 2: Prova questo articolo: http://www.codeproject.com/KB/dotnet/embedmultipleiconsdotnet. aspx
Altri suggerimenti
Se si utilizza il set di strumenti Wix ( http://www.wixtoolset.org ) per installare l'applicazione , puoi far sì che Wix si occupi del tipo di file e della registrazione dell'icona del documento
Ecco il mio incantesimo magico di Wix:
<!-- Your executable -->
<File
Id="MaAppExe"
Name="MyApp.exe"
Source="MyApp.exe" KeyPath="yes" >
</File>
<!-- your document icon -->
<File
Id='IconMyAppDoc.ico'
Name='IconMyAppDoc.ico'
Source='$(var.MyApp.ProjectDir)\Resources\Images\Icons\docicon.ico' />
<-- File Extension and associated document icon -->
<ProgId
Id='MyApp.MyAppExtension'
Description='My App Data File'
Icon='IconMyAppDoc.ico'>
<Extension
Id='MyApp'
ContentType='text/plain'>
<Verb
Id='open'
Command='Open'
TargetFile="MyAppExe"
Argument='"%1"' />
</Extension>
</ProgId>
</Component>
DefaultIcon
accetta anche un percorso per un file .ico valido come icona.
Devi assicurarti di avere icone Win32 nel tuo progetto non solo icone .net. SPERO che qualcuno indichi un modo semplice per farlo, ma nel frattempo qui va ...
Compila il tuo assembly, quindi da Visual Studio seleziona " File - > Apri - > Apri file " ;, apri l'assembly compilato. Aggiungi l'icona che desideri utilizzare per i documenti e imposta il suo ID su qualcosa sopra quello in uso per la tua app. Salva il gruppo. Ora hai risorse Win32 disponibili.
- Modifica -
Dopo aver modificato il suo post, ZippyV sembra avere un'ottima risposta.