如何在一个可执行文件中打包安装(框架+应用程序)?

时间:2012-03-14 16:04:08

标签: c# .net frameworks installshield installshield-2009

我想创建一个文件'setup.exe',其中包含我在C#中开发的一个应用程序,以及.Net framework 4.0的设置。

我的想法是:当我执行'setup.exe'时,会检查计算机上是否安装了.net framework 4.0,如果不安装它!

使用InstallShield 2009。

任何人都知道如何做到这一点?

如果不明白,请告诉我。

感谢。

5 个答案:

答案 0 :(得分:2)

关于设置,您可以使用Visual Studio附带的内置机制,例如,它们允许setup.exe自动检查是否安装了所需的框架版本,如果不存在则安装它 - 为了一个好的开始,请参阅{ {3}}

关于使您的application / EXE包含1个包含所有托管依赖项的文件,您有以下几种选择:

OR

  • 使用here(商业)之类的工具 它可以嵌入和合并其他东西(无需更改源代码)

OR

  • SmartAssembly(免费但最少的源代码更改)
    将所有需要的依赖项标记为“嵌入式资源” - 这样它们就包含在EXE文件中......您需要设置一个code that yourself in less than 10 lines处理程序,它在运行时从Resources读取并将所需的DLL返回给.NET运行时。 ..

答案 1 :(得分:2)

有许多用于创建设置的框架。
我最喜欢的是WIX,您可以从这里下载:http://wix.sourceforge.net/
还有一个使用C#创建WIX接口的框架,称为sharpsetup,您可以从这里下载它:http://sharpsetup.eu/但我不确定它是否适合您的需求,因为目标机器可能没有.NET开始(尽管可能在.NET 2.0中编写设置,但我不确定)。

学习WIX可能需要一些时间,但是一旦你过了这个,做你想做的事情应该不会太难。

答案 2 :(得分:1)

是否可以在自动提取器中打包完整(拆分)设置?您可以使用WinRar或类似方法使用“autorun”构建压缩的exe。

答案 3 :(得分:0)

据我所知,标准的InstallShield 2009不可行。您必须至少拥有InstallShield 2010(使用适用于Visual Studio 2010的Installshield 2010扩展包)。

我不知道是否有办法“破解”......

答案 4 :(得分:0)

我解决了这个问题,创建了一个自定义操作,这个是“Open executable”类型,我在向导的按钮事件中调用了这个自定义操作。