9

整个故事: 我创建了一个精美的 .NET 程序,它有一个由 Visual Studio Installer (VSI) 创建的安装程序。VSI 创建 2 个文件(setup.exe 和 MyProgramSetup.msi)。我了解需要这两个文件的原因,但是,我只想向用户分发一个可执行的安装程序。我不希望他们看到 2 个文件并且必须在它们之间进行选择。

为了做到这一点,我使用 IExpress 将 2 个文件合并到一个自解压存档中(如本答案所示:Merge msi and exe)。这很好用,但是,创建的自解压存档有一个丑陋的图标和令人困惑的文件信息(文件描述是“Win32 Cabinet Self-Extractor”,后面有 43 个空格)。

我需要用我的自定义图标替换图标并更改一些文件属性,如“描述”、“公司”等。我希望将此作为构建步骤自动完成,因此拥有一个命令行程序/控制台实用程序会很棒。

我已经搜索了一段时间,只能找到一个完全符合我要求的程序(ResourceTuner 控制台:http ://www.heaventools.com/command-line_resource_editor.htm ),但它需要一条胳膊和一条腿,而且我的预算为 0 美元。

有谁知道实现我想要的更好的方法,或者知道可以替换可执行文件资源而无需使用 GUI 的程序?

顺便说一句,我还尝试了 SiComponents 的 Resource Builder 3,它甚至无法打开可执行文件,而 ResEdit 在我执行命令时会崩溃:

resedit.exe -convert "Modified Resources.rc" "MyProgramSetup.exe"
4

3 回答 3

8

如果您打开可执行文件,Visual Studio 可以编辑它们。不过,我不确定是否有办法从命令行执行此操作。

有一篇不错的CodeProject 文章处理图标(包括将它们保存到 exe 文件中)。

公司名称、描述等是版本资源的一部分。另一篇 CodeProject 文章介绍了更新版本资源,尽管我没有深入研究过那个。

于 2010-05-22T02:35:11.933 回答
5

只回答文件版本信息问题,您可以在 IExpress .SED 文件中包含您自己的版本信息。该站点提供有关 IExpress .SED 文件部分和属性的更多详细信息。使用内置功能似乎比后处理 setup exe 更容易。

基本上,在 .SED 文件中,在选项部分包含 VersionInfo 参考。然后创建包含您的版本信息的部分。

[Options]
VersionInfo=VersionSection

[VersionSection]
FromFile= ;Uses the version info in this executable file
; or specify each attribute 
; or specify the FromFile and override individual attributes
FileDescription=
CompanyName=
FileVersion=
ProductVersion=
OriginalFilename=
LegalCopyright=
ProductName=
InternalName=

顺便说一句, FileVersion 对我不起作用。YMMV,

于 2012-12-09T18:59:39.403 回答
3

你看过“rehacker”又名“资源黑客”吗?它主要作为一个 gui 工具进行推广,但帮助文件说可以使用命令行脚本访问它的所有功能。我已经使用它的 gui 表单来更改 exe 中的图标,它也可以让你使用其他嵌入式资源。只是谷歌'资源黑客',当前版本看起来是 3.4.0

于 2010-05-22T03:49:29.810 回答