我有这个WinForms项目(基于this one,但已针对SharePoint 2010进行了修改),它实际上是用于安装SharePoint 2010解决方案包(.wsp)的设置向导。
除了安装.wsp之外,该项目还在SQL Server数据库上运行一些.sql脚本。
我的问题是如何创建一个MSI / EXE安装程序,其中嵌入了所有资源(.wsp文件,.sql文件,图像),因此我只有一个要分发的文件?
请注意,使用Visual Studio安装项目不是一个选项,因为它会生成安装程序以安装安装程序。我不需要,WinForms项目是安装程序。
希望我足够清楚。
感谢。
更新
为了清楚起见,WInFroms项目 IS 是安装程序。它包含向导对话框并运行代码以安装Sharepoint解决方案,运行SQL脚本等。
当我编译项目时,我最终得到了一堆具有以下结构的文件:
\en-us
\Resources
SomeThirdParty.dll
AnotherThirdParty.dll
Setup.application
Setup.exe
Setup.exe.config
Setup.exe.manifest
Setup.pdb
Setup.vshost.application
Setup.vshost.exe
Setup.vshost.exe.config
Setup.vshost.exe.manifest
我需要的是一个在MSI安装程序中打包所有内容的工具,它将自动解压缩并自动执行setup.exe
。 NOT 一个生成安装程序的工具,安装程序已经编码,它是WinForms项目本身。
答案 0 :(得分:1)
Advanced Installer支持此功能,但您需要的功能仅在许可版本中可用。基本上,您可以创建一个MSI包装器,只需启动项目并执行SQL脚本或尝试使用其专用的SharePoint支持。
另一种方法是IExpress。一个自解压EXE,用于启动其中包含的文件。
答案 1 :(得分:0)
我过去曾成功使用过Wix。 http://wix.sourceforge.net/
您可以在msi中嵌入资源,这样您只能分发一个文件。此外,您可以通过在c#或vb.net代码中编写自定义操作来完成您需要执行的任何自定义安装步骤。
答案 2 :(得分:0)
与Cosmin Pirvu提到的一样,您要求使用自解压安装程序。我过去使用的是Chilkat Software的免费版本,名为ZIP 2 Secure EXE。
如果所有程序集都是.NET,那么您也可以尝试ILMerge将它们全部放入一个程序集中。虽然这对.manifest和.config文件没有帮助。
编辑: 使用ILMerge的另一种方法是将dll嵌入到可执行文件as described here。
中