我想为我的应用创建一个安装程序。该应用程序包含2个Windows服务(使用VS 2008用C#编写),并且有2种安装类型 - 服务器(需要两种服务)和客户端(只需要1)。 Server服务是一个小型的手写Web服务器(在特殊端口上),它是应用程序本身。 客户端服务是另一个手写的Web服务器(在不同的端口上),它充当本地连接的指纹扫描器的设备驱动程序。
在任何一种情况下,都会安装使用客户服务网址打开网页浏览器的快捷方式。
安装时我需要询问用户:
首先,我使用VS 2008创建了一个MSI安装项目。但是,这有几个缺点:
所以,最初,我编写了一个C#exe程序来完成大部分安装 - 我让我的msi安装程序只安装我的exe程序,以及一个包含其他所有内容的zip文件。然后它运行了我的exe程序,该程序询问了问题,从zip解压缩了所需的文件,并完成了所有必要的操作。
但是,这实际上颠覆了安装msi的整个想法!
我一直在想要将我的exe程序转换为自定义动作dll,但是当我想更新进度条并在安装程序对话框中显示进度消息时,我就陷入困境(从Googling看来这不是可以从C#自定义操作?)。
我并不热衷于学习一种全新的安装语言(例如,我看过WiX,但它看起来非常复杂),虽然我可以说服我,如果我能找到合适的教程,并附上相关的例子。
是否有替代的C ++ shim可以让我从安装中调用C#自定义动作dll,并传入我需要的句柄来控制msi UI和进度条?
或者有更好的方法来制作安装程序吗?
答案 0 :(得分:1)
是的,WiX有一个学习曲线。
您想要的大部分内容都可以在MSI中完成,但您需要MSI知识或WiX XML语法知识或可视化工具。
说实话,我对不同的设置要求有一个很好的概述,而你的不在低端进行分类,特别是初学者到MSI。它会非常棘手,直到你准备好它,并修复意外的陷阱/错误。 如果可能的话,我会考虑向具有MSI知识的人寻求帮助,例如初始项目设置。或者通过示例学习WiX语法。
否则:有一件事可以帮助您快速完成某些任务:您不需要C ++填充程序来调用C#。您也可以使用C#自定义操作(查找DTF / WiX),但将C#编译为.exe并将其称为自定义操作可能更容易。可以直接在Visual Studio解决方案导航器对话框中使用。
以下是您的任务,可以使用继承的MSI逻辑调用自定义操作
你仍然需要一些东西来构建一个功能更强大的msi用于其余的或者要求..
这是一个很好的网页评论不同的设置免费软件/共享软件工具:
http://www.techsupportalert.com/content/best-free-setup-builder.htm
如果你想留在MSI,也许你想看看“高级安装程序”(也有免费版本)或“Clickteam Install Creator”
除了市场领导者之外的商业工具,但不是廉价的InstallShield(除LE之外)还有InstallAware,IndigoRose的MSI工厂和提到的AdvancedInstaller。
我无法真正比较它们,但如果你想要商业化,也许你至少可以看一下上面提到的两个。
MSI Factory是WiX输出编辑器之一,听起来不错。您可以了解有关Wix的信息,并有一个图形起点。据我所知,他们中没有人真正被社区广泛接受,但我不是这里的专家。
答案 1 :(得分:0)
这是大约十二个问题。这不是负责任的。您是否正确地意识到您当前的设计颠覆了Windows Installer。
您要求 DO 的大部分内容都存在于MSI / WiX中。有些人需要自定义操作。设置开发 IS 开发,需要多年的经验才能真正擅长工艺。我估计这是一个专家的40小时项目和一个初级阶段的1年项目。
一些谷歌搜索会找到诸如InternetShortCut元素,ServiceInstall和ServiceControl元素,权限元素,记住属性模式,防火墙扩展等主题。