【问题标题】:Merge msi and exe合并msi和exe
【发布时间】:2010-10-06 20:43:54
【问题描述】:

我的部署项目会创建一个 .msi 文件和一个 .exe 文件。是否可以将它们合并为一个.exe?

【问题讨论】:

    标签: c# deployment


    【解决方案1】:

    是的,您可以创建包含 MSI 和 setup.exe 引导程序文件的自解压安装程序。

    我认为使用 WinZip 可以做到这一点,或者您可以使用 Windows 附带的 IExpress。以下是如何创建a self-extracting executable with IExpress 的指南。您可以使用 IExpress 向导或手动编写配置文件,然后您可以在安装项目的后期构建步骤中执行该文件,例如通过调用

    IExpress /N /Q MySetup.sed
    

    示例配置文件如下所示:

    [Version]
    Class=IEXPRESS
    SEDVersion=3
    [Options]
    PackagePurpose=InstallApp
    ShowInstallProgramWindow=1
    HideExtractAnimation=1
    UseLongFileName=1
    InsideCompressed=0
    CAB_FixedSize=0
    CAB_ResvCodeSigning=0
    RebootMode=N
    InstallPrompt=%InstallPrompt%
    DisplayLicense=%DisplayLicense%
    FinishMessage=%FinishMessage%
    TargetName=%TargetName%
    FriendlyName=%FriendlyName%
    AppLaunched=%AppLaunched%
    PostInstallCmd=%PostInstallCmd%
    AdminQuietInstCmd=%AdminQuietInstCmd%
    UserQuietInstCmd=%UserQuietInstCmd%
    SourceFiles=SourceFiles
    [Strings]
    InstallPrompt=
    DisplayLicense=
    FinishMessage=
    TargetName=MySetup.exe
    FriendlyName=My cool application
    AppLaunched=CMD /C setup.exe
    PostInstallCmd=
    AdminQuietInstCmd=
    UserQuietInstCmd=
    FILE0="setup.exe"
    FILE1="MySetup.msi"
    [SourceFiles]
    SourceFiles0=
    [SourceFiles0]
    %FILE0%=
    %FILE1%=
    

    但是,对于自解压安装程序方案,有一点需要注意。由于另一个修复,这些场景是broken 与由 VS2008 SP1 创建的引导程序 (setup.exe)。有关解决方法,请参阅以下主题:http://social.msdn.microsoft.com/Forums/en-US/winformssetup/thread/3731985c-d9cc-4403-ab7d-992a0971f686/?ffpr=0

    【讨论】:

    • 是的,由于错误,它不起作用。请参阅我发布的链接 (social.msdn.microsoft.com/Forums/en-US/winformssetup/thread/…) 了解解决方法。
    • [Strings] 中的 PostInstallCmd 行应为 PostInstallCmd=,否则在安装完成时会显示“错误创建过程”消息。
    • 你在哪里写的配置文件?我尝试了IExress,但setup.exe找不到setup.msi难道不应该将它们提取到同一个地方然后运行setup.exe吗?使用 IExpress 时,我需要更改 .csproj 文件中的任何内容吗?
    • @chris deneb:无需修改 .csproj 文件(除非您将 iexpress 的调用添加到构建后步骤)。通常,这两个文件都被提取到 %TMP% 文件夹下的同一个文件夹中。您是否阅读了有关 VS2008 SP1 警告的说明?
    • 我用 winzip 没能做到这一点,但我终于设法将 msi 和 exe 与 Iexpress 合并,非常好的工具。是的,感谢菲利斯的回答,我看到了,我做到了!唯一的区别是我包含了一个安装 Windows 映像组件的 setup.cmd 批处理文件,以防用户有一台带有...的电脑……让我们说一个全新的 xp 安装,只是为了涵盖可能出现的所有依赖项。感谢您的回复!
    【解决方案2】:

    我喜欢,你可以在this link看到如何使用IExpress!

    我看到的唯一问题是我在 Windows Vista 64 位上生成了一个安装程序,我试图将生成的 .exe 安装在一个具有 Windows Server 2008 32 位的服务器中,但它引发了有关处理器类型的错误。

    【讨论】:

    • 我也遇到了这个问题,你可以通过运行 C:\Windows\SysWoW64\IExpress.exe 而不是 C:\Windows\System32 中的那个来修复它。这样它总是会生成一个 32 位的 exe。
    【解决方案3】:

    另一个选项可能是带有 sfx 插件的 7zip:http://www.7-zip.org/download.html 或 WinZip 自解压器:http://www.winzip.com/prodpagese.htm

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-14
      • 1970-01-01
      • 2014-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多