我正在寻找关于如何打包我的TopShelf托管Windows服务以便通过Chocolatey分发的一些指导。目前.nuspec将.exe和所有.dll放入\tools
文件夹,这意味着它们最终安装到ProgramData\chocolatey\lib\our-service\tools
。这似乎并不合适。事实上,在我注意到卸载记录各种错误之前,这不是问题。哪些都与Chocolatey试图备份文件有关,但因为服务正在运行而无法使用。 chocolateyuninstall.ps1会停止服务,但在备份尝试之后它才会运行。
应用程序本身使用ProgramData\MyCompany\MyApp
进行所有数据和日志记录。我也应该把二进制文件放在那里吗?或Program Files
更合适?如果其中一个位置正确,那么chocolateyinstall.ps1是将代码放入xcopy二进制文件的逻辑位置吗?或者(我希望你说不)这甚至不是巧克力的有效用途?意思是,我应该吮吸它并为Chocolatey创建一个MSI来操作吗?
由于
答案 0 :(得分:2)
目前.nuspec将.exe和所有.dll放入
\tools
文件夹,这意味着它们最终安装到ProgramData\chocolatey\lib\our-service\tools
。这似乎并不合适。事实上,在我注意到卸载记录各种错误之前,这不是问题。哪些都与Chocolatey试图备份文件有关,但因为服务正在运行而无法使用。 chocolateyuninstall.ps1会停止服务,但在备份尝试之后它才会运行。
我们正在添加一个chocolateyBeforeModify.ps1脚本,该脚本将在升级/卸载之前运行 - https://github.com/chocolatey/choco/issues/268。这应该是0.9.10,这将有助于使工作流程更顺畅。
目前,您必须在尝试升级或卸载之前停止在Chocolatey之外的服务。
要考虑的另一件事是Chocolatey利用XDT (Xml Document Transformations),这意味着如果你为xml配置包含一个*.install.xdt
文件,choco不会简单地覆盖现有文件。这允许您在包文件夹中升级而不覆盖任何用户配置。但是,如果您要将文件复制到其他地方,则需要自行计算这个方面。
应用程序本身使用
ProgramData\MyCompany\MyApp
进行所有数据和日志记录。我也应该把二进制文件放在那里吗?或Program Files
更合适?
我们还没有推荐的安装服务或设置网站/网络应用程序的方法。这两件事我们将在未来为他们创造帮助,届时我们将推荐这些途径并提供更好的建议。
更新20170324 :我们现在在Chocolatey商业版中拥有Install-ChocolateyWindowsService
和其他与服务相关的功能。
如果其中一个位置正确,那么chocolateyinstall.ps1是将代码放入xcopy二进制文件的逻辑位置吗?
自动化脚本是执行添加包位后需要执行的任何操作的逻辑位置。
或者(我希望你说不)这甚至不是巧克力的有效用途?意思是,我应该吮吸它并为Chocolatey创建一个MSI来操作吗?
创建服务和网站绝对是Chocolatey的有效用途。我建议不要创建MSI,除非你需要。这是一个非常复杂的过程,在大多数情况下(比如内部应用程序),感觉有些过度。