C# 合并msi和exe

C# 合并msi和exe,c#,deployment,C#,Deployment,我的部署项目创建.msi文件和.exe文件。是否可以将这些文件合并到一个.exe中?是的,您可以创建一个包含MSI和setup.exe引导程序文件的自解压安装程序 我认为用WinZip可以做到这一点,也可以使用Windows附带的IExpress。下面是如何创建的指南。您可以使用IExpress向导,也可以手动编写配置文件,然后在安装项目的后期生成步骤中执行,例如,通过调用 IExpress /N /Q MySetup.sed 示例配置文件如下所示: [Version] Class=IEXPR

我的部署项目创建.msi文件和.exe文件。是否可以将这些文件合并到一个.exe中?

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

我认为用WinZip可以做到这一点,也可以使用Windows附带的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%=

然而,对于自解压安装程序场景,有一点需要注意。由于另一个修复程序,这些场景使用VS2008 SP1创建的引导程序(setup.exe)。有关解决方法,请参见以下线程:。

我喜欢它,您可以查看如何使用IExpress on


我看到的唯一问题是,我在Windows Vista 64位上生成了一个安装程序,我试图在Windows server 2008 32位的服务器上安装生成的.exe,但它抛出了一个关于处理器类型的错误。

另一个选项可能是7zip with sfx plugin:或WinZip self extractor:

是的,它因错误而无法工作。有关解决方法,请参阅我发布的链接()。[Strings]中的PostInstallCmd行应为PostInstallCmd=,否则在安装完成时将显示“错误创建过程”消息。您将在何处写入配置文件?我尝试了IExress,但是setup.exe找不到setup.msi它不是应该在同一个位置提取它们,然后运行setup.exe吗?使用IExpress时,我是否需要更改.csproj文件中的任何内容?@chris deneb:不需要修改.csproj文件(除非您将调用IExpress添加到生成后步骤)。通常,这两个文件都会解压缩到%TMP%文件夹下的同一文件夹中。你读过关于VS2008 SP1的注意事项了吗?我在winzip上没能做到这一点,但是我最终设法将msi和exe与Iexpress合并,这是一个非常好的工具。是的,我看到了,多亏了菲利斯的回答,我做到了!唯一不同的是,我包含了一个setup.cmd批处理文件,用于安装windows imaging组件,以防用户的电脑带有。。。比如说一个新的xp安装,只是为了覆盖可能出现的所有依赖项。谢谢你的回复!我也遇到了这个问题,您可以通过运行C:\Windows\SysWoW64\IExpress.exe来修复它,而不是运行C:\Windows\System32中的。这样,它将始终生成一个32位的exe。