时间:2010-05-22 01:24:33

标签: .net deployment resources windows-installer iexpress

整个故事: 我创建了一个花哨的.NET程序,它有一个由Visual Studio Installer(VSI)创建的安装程序。 VSI创建2个文件(setup.exe和MyProgramSetup.msi)。我理解需要两个文件的原因,但是,我只想向用户分发一个SINGLE可执行安装程序。我不希望他们看到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"

3 个答案:

答案 0 :(得分:7)

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

有一个体面的CodeProject article处理图标(包括将它们保存到exe文件中)。

公司名称,描述等是Version资源的一部分。另一个CodeProject article涵盖了更新版本资源,但我还没有深入研究过这个版本。

答案 1 :(得分:3)

您是否看过'reshacker'AKA'资源黑客'?它主要作为gui工具推广,但帮助文件说可以使用命令行脚本访问其所有功能。我用它的gui表单来改变exe中的图标,它也会让你在其他嵌入式资源上。只是谷歌搜索'资源黑客',当前版本看起来是3.4.0

答案 2 :(得分:3)

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

基本上,在.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=
BTW,FileVersion对我不起作用。 YMMV,