Registrar tipo de arquivo e ícone de documento personalizado no .net
Pergunta
Eu tenho um aplicativo que produz arquivos. Gostaria de conectar esses arquivos com o aplicativo para que clique duas vezes no arquivo inicie meu aplicativo.
Tudo funciona corretamente, exceto pelo aborrecimento de que o ícone se pareça com o ícone do meu aplicativo. Eu gostaria de ter um ícone para aplicação e um ícone para seus documentos.
O Valor Defaulticon no Registro requer "App.exe, 1" sintaxe, onde 1 é o índice de ícone. Parece que os recursos do .NET não são recursos do Win32.
Eu tentei seguir, mas sem sucesso:
- Selecionando "Recurso incorporado" como ação de construção do arquivo.
- Adicionando ícone ao arquivo de recursos.
A única coisa que funcionou é ter um arquivo de ícone separado do executável e apontando para ele. No entanto, isso me parece render.
Alguma idéia de como resolver isso?
Solução
Você já tentou definir 2 como o índice de ícone?
EDIT: Encontrei uma maneira, mas você precisa fazê -lo novamente para cada nova construção.
- Abra o arquivo .exe no Visual Studio (Arquivo -> Abra o arquivo)
- Clique com o botão direito do mouse na pasta do ícone e selecione Adicionar recurso
- Clique na importação do botão
- Selecione seu arquivo .ico
- Você pode ter que mexer com os números de ícones, acho que o número mais baixo (Exemplo 101) será o ícone do aplicativo
- Lembre -se do novo número do ícone e defina -o como o índice
Edit 2: tente este artigo: http://www.codeproject.com/kb/dotnet/embedmultipleiconsdotnet.aspx
Outras dicas
Se você estiver usando o Wix Toolset (http://www.wixtoolset.org) Para instalar seu aplicativo, você pode fazer com que o Wix cuide do tipo de arquivo e registro do ícone do documento
Aqui está o meu encantamento mágico 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
Também aceitará um caminho para um arquivo .iCO válido como um ícone.
Você deve garantir que você tenha ícones Win32 em seu projeto, não apenas nos ícones .NET. Espero que alguém aponte uma maneira fácil de fazer isso, mas nesse meio tempo, aqui vai ...
Compile sua montagem e, no Visual Studio, selecione "Arquivo -> Abrir -> Abrir arquivo", abra a montagem compilada. Adicione o ícone que você deseja usar para documentos e defina seu ID para algo acima da usada para o seu aplicativo. Salve a montagem. Agora você tem recursos Win32 disponíveis.
-Editar-
Depois de editar seu post, Zippyv parece ter uma resposta muito boa.