gpt4 book ai didi

.net - MSI与nuget软件包:连续交付哪个更好?

转载 作者:行者123 更新时间:2023-12-02 16:21:35 24 4
gpt4 key购买 nike

让我们讨论以下主题。有一些正在使用xcopy方法进行部署的应用程序。这种方法使管理依赖项,文件更新等变得困难。有一些想法是借助一些软件包来开始应用程序的部署,就像您在Linux中借助RPM,但适用于Windows。

所以我有一个问题:哪种软件包系统最好在Windows Classic Windows Installer(msi)或nuget或其他工具上使用?

最佳答案

临时:How do I avoid common design flaws in my WiX / MSI deployment solution?
-关于MSI文件中常见问题的非常混乱且不太理想的临时摘要。不是很好。有总比没有好?书中没有的东西(太乱了)。

重要主题:How do I avoid distributing sensitive information in my MSI by accident?




WiX和MSI:


MSI是公认的企业应用程序标准。与旧版部署相比,它具有some major corporate benefitsand the short, concise version
技术。 WiX是创建MSI文件的新的开源方法。


Wix Toolset Download1)主要WiX设置,2) Votive-Visual Studio集成设置
WiX Documentation


安装WiX之后,在安装文件夹“ WiX.chm”中找到msi.chm%ProgramFiles(x86)%\WiX Toolset v3.11\doc帮助文件,以快速访问文档。
在线:WiX Reference Manual v3Official WiX Tutorial
GithubBug TrackerMailing ListFireGiant WiX KDB(FireGiant是WiX的商业分支)。

为了了解Wix,您可能需要阅读quick, unofficial summary of the history behind it
MSBuild-使用Visual Studio,Votive和MSBuild
收获(1):WiX拥有自己的工具,可根据输入文件夹生成WiX标记。


该工具称为heat.exe。 WiX的商业分支FireGiant有一个名为HeatWave的工具,具有更多功能。
我几乎未测试过工具WixHeatATLHarvesterExtensionhttps://github.com/nirbar/WixHeatATLHarvesterExtension(WiX Heat扩展,用于从x64模块中收集注册表信息)




其他工具:



然后,您可能需要检查除Wix以外的其他交付安装程序的方式,方法是:


What installation product to use? InstallShield, WiX, Wise, Advanced Installer, etc
One more quick-list of tools

主要工具:Advanced Installer,-InstallShield,-PACE Suite



Hello World和Hello WiX:



最后,查看有关Wix源文件及其组件在Codeproject上的外观的完整示例。这是“你好
蜡的世界”。
"Hello WiX - step-by-step in Visual Studio"


这需要WiX和Votive(WiX工具集Visual Studio扩展-WiX的Visual Studio集成,因此您可以获得Intellisense)。 See download page
底部标记中的内联注释可能就是您所需要的。
Small sample of WiX preprocessor variables / defines

Hello WiX C# Custom Actions


如何将C#自定义操作添加到现有WiX项目。




视频样本:



How To Create Windows Installer MSI - .Net Core WiX



更多示例代码:


WiX快速入门:以下是一些我发现的最佳示例代码链接:


Helge Klein's real-world WiX sample-进行检查(Wayback - Archived Version)。
Rainer Stropek's WiX Samples on Github-会很有帮助。
From MSI to WiX by Alex Schevchuk-老化含量,但优异。
Chris Painter's IsWiX Tutorials-出色的WiX样本。


最后:


Phil Wilson的用于MSI样本的Github存储库:https://github.com/Apress/def-guide-to-win-installer。最好的内容,但老化。一般的MSI样本,而不是WiX。
我的实验网站:installdude.com
How-to-create-a-Windows-Service-MSI-Installer-Using-WiX
WiX扩展名:https://github.com/nirbar/PanelSwWixExtensionDism.exeetc...



调试:始终检查所有事件日志,应用程序日志和MSI日志-如果可用。只是提一下。并使用其他可用的调试工具,并在执​​行其他任何操作之前先搜索确切的错误消息。

并检查是否有任何明显丢失的运行时。例如:.Net.Net CoreJavaSilverlightDirect XVC++ RuntimeMS-XML(旧版),etc...


自定义动作调试:


Common Causes for Custom Action runtime failures
Debugging Custom Actions


对于本机代码/ C ++,只需将调试器附加到msiexec.exe
Advanced Installer's Debug C# Custom Actions video tutorial



MSI日志记录:


Overview and summary(如何记录,解释日志文件等)
Installsite: MSI log "how-to"
More MSI logging information


事件查看器:


按住Windows键,点击R,键入eventvwr.msc,然后按Enter。
转到Windows Logs => Applications。查找MsiInstaller events
还要检查其他日志(SecuritySystemConfiguration)。


常规调试:


"Debugging Light"
Application Launch Problem: Debugging Ideas(鱼雷全开)
ProcMon.exe:交易工具。一种尺寸适合所有人
工具。蜜蜂的膝盖,最高处,量子跃迁,猫的
睡衣。有效使用它可能是一个挑战,但这是
免费的最佳通用调试工具(comment link for safekeeping)。


Quick, Rudimentary Sample
Hanselman's longer video sample(大约从3:50开始)



调试工具:


Tools to debug dependency issues-ProcMon.exeVSDependency Walkeretc...


COM dependency errors
Fuslogvw.exe (Assembly Binding Log Viewer)

基本服务调试工具:


Event ViewerTask ManagerServices.msc
Process ExplorerNET commandSC.exe
Windows Services Frequently Asked Questions (FAQ)



错误代码:查找错误代码和异常消息。


"The Magic Number Database"-在线查找。
Checking Error Codes-几种工具和方法。






部署助记符:考虑部署问题的通用助记符:What is locking(使用中,恶意软件),what is blocking(权限,anti-virus,安全工具),what is corrupt(磁盘,恶意软件,配置,加密)< cc>(磁盘空间,时间和日期设置,语言,许可,Windows补丁程序状态,路径太长,PendingFileRenames等),what are unexpected system states(无法共存的事物),what are incompatible products(什么指向错误的位置和资源:网络服务器名称,磁盘路径,URL,数据库,服务,UAT环境,PROD环境等),最后但并非最不重要的是:what is unreachable or misconfigured(运行时,资源映像,设置文件等) ...)?





注意:始终优先(下面的步骤8):what is missing

Express无法启动调试:Google exact error message 1)Reboot 2)disable anti-virus 3)并检查,launch as admin检查4)(Java,VC ++运行时,.NET等) 。然后,如果需要:dependencies and runtimes 5)verbose log 6)event logs 7)还要Try on a virtual if you still can't get it working? Or secondary computer? 8)并检查用户注释google exact error messages 9)(新安装程序可以消除错误情况)。 Run update for the application in question?还要对10)进行全面检查吗?这些天到处都是。 malware某些软件(通常是服务器软件)可能需要整理配置设置(11))。桌面应用程序可能完全需要misconfiguration才能启动。





锁?:有了许可和锁,您可以尝试license?您可能有磁盘损坏-run the tool with elevated rightsdisk errors? (可能)。您的Faulty ACL permissions已锁定MSI尝试放回原处的某些文件。您可以尝试暂时禁用它以查看。请注意,文件也可以被anti-virus suite(移动到其他位置)。




通用技巧?:消费者问题,failure to install setup.exe


A simplified, generic check-list for deployment issues(替代下面的列表)。
Visual Studio问题:A check list for Visual Studio installation problems


.NET修复:.Net Framework Repair Tool
无效的卸载:MS FixIt: Remove packages that won't uninstall
日志:Microsoft Visual Studio and .NET Framework Log Collection Tool



对于无法正确安装的设置。以下是一些通用技巧-除了检查quarantinedevent logs以及installation-application logs(总是也可以这样做-也许首先-但也许只是先重新启动-在面对所有复杂性之前):



重新启动:安装失败后首先重新启动,以查看是否可以解决锁定和挂起的重命名。
其他计算机:尝试安装在另一台物理计算机上吗?


安装介质的重要烟雾测试!

虚拟的:尝试安装在虚拟机上吗?


通常过时,检查运行时,检查Windows Update。

运行时:确保所需版本中具有所需的各种类型的运行时:


常见:googling any error messagesVCRedist.NET.NET CoreJavaDirect X
具体:etc...PythonDBMS systemsPostgreSQLMSSQL
Windows组件:etc...IISMSMQ - Message QueuePowershell

辅助帐户:尝试使用其他管理员帐户在主机箱上安装。这可以解决由用户配置文件中的错误引起的问题(并非罕见)。
本地安装文件:调用时在网络上将安装文件复制到本地(以消除网络错误源)。
本地化问题:以其他语言提供的设置包含原始安装程序(通常是英语)中未发现的全新错误的情况并不少见。


“墨菲场”:etc...。哦,人类说!笨蛋
尝试下载英文安装版本并测试安装?
尝试在英语机器或虚拟机上进行本地化设置?
还要调查使用其他用户帐户以不同的语言设置运行。




还有-常见的“阻碍者”:



损坏的安装文件:损坏的安装文件。重新下载确定吗?在浪费一整天之前将其作为第一步之一完成吗?正确的平台位数?正确的CPU体系结构?
恶意软件:就问题而言,恶意软件几乎可以导致“任何问题”。
安全软件:"We have managed to add additional bugs to the internationalized setups beyond the English version"Anti-virusfirewallsscanners可能会干扰安装。如有必要,暂时禁用。
磁盘空间:确保有足够的磁盘空间!


Ways to clear out disk spaceLong version
只需先运行etc...

代理服务器:如果有网络需求,是否有代理服务器可以阻止一切?
策略:在受管网络上可能有有效的策略来阻止某些功能,从而使安装无法进行。尝试虚拟?通常限制较少。
磁盘错误:扫描磁盘以查看是否正常。如果不是,请先修复它。对于没有UPS的台式机,现代NVMe磁盘会因断电而丢失大量数据。
磁盘安全性ACL:自定义安全性ACL(NTFS访问配置)配置会导致Windows组件和软件运行时错误。除非您知道自己在做什么,否则切勿对Windows目录使用自定义ACL。错误是肯定的。



一些链接:


The setup process in windows fails access denied when trying to create "uc.micro" folder
SQL Server 2017 installation is stuck
Visual Studio installer fails on AspNetDiagnosticPack.msi
The installer has encountered an unexpected error installing this package - .Error code 2896




容易接近:


XML文件:Installing XML files
False Positives
Installer Class Methods-More Installer Class Methods
Would this method of installing COM+ work?
Windows Installer Best Practice
Reboot Manager and Logging
Change my component GUID in wix?
Simplify WiX markup-您可以从Wix xml文件中忽略很多源属性
Running Legacy Applicationscleanmgr.exevirtualscompatibility moderepackaging
What are ICE Rules
Preprocessor versus Localization Variables, and the issue of include files
WiX Preprocessor


重新打包,应用程序启动调试:


etc..., Procmon.exe, capture, repackaging and service installation
Section on repackaging here
How to run an installation in /silent mode with adjusted settings
More on distribution of software


升级:


Causes of major upgrade failures
Some minor upgrade technical restrictions


其他一些WiX链接:


Simplify your WiX markup
Registering COM EXEs with WiX
Can't uninstall, it fails
Dynamic Link Libraries
Microsoft Debugging Environments
How do I create a Prerequisite Package for Windows Installer?
How do I embed CustomAction.CA.dll in to MSI?
Installed program is removed automatically everytime when server restarts from windows server 2012 R2




程序:


打开Temp文件夹:Windows键=>点击R =>类型:installer methods =>按下:Enter。
ARP:开始→运行→appwiz.cpl→ENTER,以打开添加/删除程序小程序(或在控制面板中单击添加/删除程序)。
设置GUI Win8 / 10:Windows键+点击I => %TEMP%。选择条目并卸载。
快速启动Powershell:按住Windows键,点击R,输入“ powershell”,然后按Enter。
重新启动图形驱动程序:Windows键+ Ctrl + Shift并点击B。




一些学习Wix的好开始链接:


My Wix quick start suggestions
Good resources for learning how to create MSI installers from WiX
How to implement WiX installer upgrade?(重大升级)
What are limitations of WiX and WiX Toolset?


Apps & Features WiX捆绑包或MSI文件本身提取文件:


Extract MSI from EXE-包括如何提取嵌入在WiX Burn捆绑包可执行文件中的文件。
How can I compare the content of two (or more) MSI files?-包括如何使用WiX的Setup.exe工具从MSI提取文件


正如我在上面建议的“ Wix快速入门”帖子中所写的那样:Wix是动手操作的。只关注简单但完整的真实示例,例如Codeproject中的示例-仅阅读文档可能会造成混淆。

专注于将您的应用程序拆分为多个组件并进行重大升级。根据经验,每个组件使用一个文件,并阅读以下答案以更好地了解组件的创建:Change my component GUID in wix?

大型升级是已部署软件的最常用升级机制(另一种常见升级类型是次要升级)。显然,升级已经部署的内容至关重要。在部署第一个软件版本之前,先使升级方案工作,以便对部署解决方案充满信心。

设置好组件并且升级解决方案正常运行后,其余各部分将按您的顺序处理应用程序的部署要求,并在Wix教程站点https://www.firegiant.com/wix/tutorial/上检查示例。

对于那些直接编写Wix代码(没有GUI编辑器)的人,建议您检查以下答案,以保持源文件简洁:Syntax for guids in WIX?

进一步阅读:


Windows Installer and the creation of WiX
Installer capabilities, WIX vs InstallShield Express
Installshield or Wix
WiX Bug Tracker

关于.net - MSI与nuget软件包:连续交付哪个更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25004226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com