5

我有生成文件的应用程序。我想将这些文件与应用程序连接起来,以便双击文件启动我的应用程序。

一切正常,除了图标看起来像我的应用程序图标的烦恼。我想要一个应用程序图标和一个文件图标。

注册表中的 DefaultIcon 值需要“app.exe,1”语法,其中 1 是图标索引。.NET 资源似乎不是 Win32 资源。

我尝试了以下但没有成功:

  1. 选择“嵌入式资源”作为文件的构建操作。
  2. 将图标添加到资源文件。

唯一有效的是将图标文件与可执行文件分开并指向它。然而,在我看来,这就像投降。

任何想法如何解决这个问题?

4

4 回答 4

4

您是否尝试将 2 设置为图标索引?

编辑:我找到了一种方法,但是您必须为每个新版本再次执行此操作。

  1. 在 Visual Studio 中打开 .exe 文件(文件 -> 打开文件)
  2. 右键单击图标文件夹并选择添加资源
  3. 点击按钮导入
  4. 选择您的 .ico 文件
  5. 您可能不得不弄乱图标编号,我认为最小的数字(例如 101)将是应用程序的图标
  6. 记住新的图标编号并将其设置为索引

编辑 2:试试这篇文章: http: //www.codeproject.com/KB/dotnet/embedmultipleiconsdotnet.aspx

于 2009-07-30T00:28:54.173 回答
1

如果您使用 Wix 工具集 ( http://www.wixtoolset.org ) 安装应用程序,您可以让 Wix 处理文件类型和文档图标注册

这是我的魔法 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>
于 2015-08-13T00:43:54.963 回答
0

DefaultIcon还将接受有效 .ico 文件的路径作为图标。

于 2009-07-30T01:01:04.190 回答
0

您必须确保项目中有 Win32 图标,而不仅仅是 .net 图标。我希望有人指出一种简单的方法来做到这一点,但与此同时,这里......

编译你的程序集,然后从 Visual Studio 中选择“文件 -> 打开 -> 打开文件”,打开编译的程序集。添加您要用于文档的图标,并将其 ID 设置为高于您的应用程序使用的图标。保存程序集。现在您可以使用 Win32 资源了。

-- 编辑 --
编辑他的帖子后,ZippyV 似乎有一个很好的答案。

于 2009-07-30T02:34:11.137 回答