MSI 与 nuget 包:哪个更适合持续交付? [英] MSI vs nuget packages: which are is better for continuous delivery?
问题描述
让我们讨论以下主题.目前正在使用 xcopy 方法部署应用程序.这种方法使管理依赖项、文件更新等变得困难.有想法在一些包的帮助下开始应用程序部署,就像在 Linux 中一样RPM,但适用于 Windows.
所以我有一个问题:在 windows 经典 windows 安装程序 (msi) 或 nuget 或其他东西上使用什么包系统更好?
Ad-Hoc:如何避免 WiX/MSI 部署解决方案中的常见设计缺陷?
- 对 MSI 文件中发现的常见问题的非常混乱且不太理想的临时摘要.不是很好.有总比没有好?书上没有的东西(太乱了).
<块引用>
<块引用>
Need For Speed:WiX 快速入门短版
WiX &微星:
<块引用>MSI 是公认的企业应用标准.它具有一些主要的企业优势(和简短、简洁的版本
) 与旧部署相比技术.WiX 是创建 MSI 文件的全新开源方式.
- Wix 工具集下载 (
1)
主要 WiX 设置,2)
Votive - Visual Studio 集成设置 - WiX 文档
- 安装 WiX 后,在安装文件夹中找到
WiX.chm
和msi.chm
帮助文件<代码>%ProgramFiles(x86)%WiX 工具集 v3.11doc"以快速访问文档.
- 安装 WiX 后,在安装文件夹中找到
- 在线:
WiX 参考手册 v3
,WiX 官方教程
. Github
、Bug Tracker
,邮件列表
、FireGiant WiX KDB
(FireGiant 是 WiX 的商业分支).- 要了解 Wix,您可能需要阅读快速的非官方摘要背后的历史.
- MSBuild - 使用 Visual Studio、Votive 和 MSBuild
- 收获(1):WiX 有自己的基于输入文件夹生成 WiX 标记的工具.
- 该工具名为 heat.exe.WiX 的商业分支 FireGiant 有一个工具叫做 HeatWave 具有更多功能.
- 我基本上没有测试过
WixHeatATLHarvesterExtension
:https://github.com/nirbar/WixHeatATLHarvesterExtension(用于从 x64 模块收集注册表信息的 WiX Heat 扩展)
其他工具:
<块引用>- 然后,您可能想通过阅读以下内容来检查除了 Wix 之外的其他交付安装程序的方法:
- 主要工具:高级安装程序,-InstallShield, - PACE 套件
Hello World &你好 WiX:
<块引用>- 最后在 代码项目.这是"你好Wix 的世界.
- Hello WiX - Visual Studio 中的分步说明".
- 这需要 WiX 和 Votive(WiX 工具集 Visual Studio 扩展 > - WiX 的 Visual Studio 集成,以便您获得智能感知).查看下载页面.
- 底部标记中的内联注释可能是您开始所需的全部内容.
- WiX 预处理器的小样本变量/定义.
- Hello WiX C# 自定义操作
- 如何将 C# 自定义操作添加到现有 WiX 项目.
视频样本:
<块引用>更多示例代码:
<块引用>WiX 快速入门:以下是我发现的一些最佳示例代码链接:
- Helge Klein 的真实 WiX 示例 - 请务必查看(Wayback - 存档版本).
- Rainer Stropek 在 Github 上的 WiX 示例 - 非常有帮助.
- 从 MSI 到 WiX by Alex Schevchuk - 内容陈旧,但出色.
- Chris Painter 的 IsWiX 教程 - 优秀WiX 示例.
最后:
- Phil Wilson 的 MSI 示例 Github 存储库:https://github.com/Apress/def-guide-to-win-installer.最好的内容,但老化.通用 MSI 示例,而不是 WiX.
- 我的实验站点:installdude.com.
- 如何创建-a-Windows-Service-MSI-Installer-Using-WiX.
- WiX 扩展:https://github.com/nirbar/PanelSwWixExtension (
Dism.exe
,etc...
)
调试:始终检查所有事件日志、应用程序日志和MSI日志 - 如果可用.顺便提一下.并使用任何可用的调试工具并在执行任何其他操作之前谷歌搜索确切的错误消息.
并检查是否有任何明显缺失的运行时.例如:.Net
、.Net Core
、Java
、Silverlight
、Direct X
、VC++ Runtime
、MS-XML
(旧版)、 等...
.
自定义操作调试:
- 自定义操作运行时失败的常见原因
- 调试自定义操作
- 对于本机代码/C++,只需将调试器附加到
msiexec.exe
- 高级安装程序的调试 C# 自定义操作视频教程
- 对于本机代码/C++,只需将调试器附加到
MSI 日志记录:
- 概述和总结(如何记录、解释日志文件等...)
- 安装站点:MSI 日志操作方法"
- 更多 MSI 日志信息
事件查看器:
- 按住Windows 键,点击R,输入
eventvwr.msc
,然后按Enter. - 转到
Windows 日志 =>应用程序
.查找MsiInstaller 事件
. - 也检查其他日志(
Security
、System
、Configuration
代码>).
一般调试:
应用启动问题:调试思路(鱼雷全散)>
ProcMon.exe:交易的工具.一刀切工具.蜜蜂的膝盖,最上面的,飞跃,猫的膝盖睡衣.有效地使用它可能是一个挑战,但它是免费的最佳通用调试工具(评论链接以供妥善保管).
- 快速, 基本示例
- Hanselman 的较长视频示例(大约从 3:50 开始)
调试工具:
- 调试依赖的工具问题 -
ProcMon.exe
、VS
、Dependency Walker
、etc...
- 基本服务调试工具:
事件查看器
、任务管理器
、Services.msc
Process Explorer
,NET 命令
、SC.exe
- Windows 服务常见问题 (FAQ)
错误代码:查找错误代码和异常消息.
<块引用>
部署助记符:考虑部署问题的一般助记符:什么是锁定
(使用中, 恶意软件)、阻止什么
(权限、防病毒、安全工具)、损坏的内容
(磁盘、恶意软件、配置、加密)<代码>什么是意外系统状态(磁盘空间、时间和日期设置、语言、许可、Windows 补丁状态、路径太长、PendingFileRenames 等...),什么是不兼容的产品
(不能共存的东西),什么是无法访问或配置错误的
(什么指向了错误的位置和资源:网络服务器名称、磁盘路径、URL、数据库、服务、UAT 环境、PROD 环境等...)最后但并非最不重要的:<代码>缺少什么(运行时、资源图像、设置文件等...)?
<块引用>
注意:总是第一(下面的第 8 步):Google 确切的错误消息
.
启动调试的快速失败:1)
重启
,2)
禁用防病毒
,3)
以管理员身份启动
并检查,4)
检查依赖项和运行时
(Java、VC++ Runtime、.NET、等等...).然后,如果需要:5)
verbose log
, 6)
事件日志
、7)
尝试虚拟
如果仍然无法正常工作?(许多虚拟机缺乏必要的运行时 - 检查)还是 辅助计算机?
还有 8)
google 确切错误消息
并检查用户评论,9)
为有问题的应用程序运行更新?
(新安装程序可以消除错误情况).10)
是否也要对恶意软件
进行全面检查?这几天到处都是.11)
某些软件(通常是服务器软件)可能需要整理配置设置(misconfiguration
).桌面应用程序可能需要 license
才能启动.
<块引用>
锁?:获得许可和锁后,您可以尝试以提升的权限运行该工具
吗?您可能有磁盘损坏 - 磁盘错误
?ACL 权限错误
?(可能的).您的反病毒套件
已锁定 MSI 试图放回原位的某些文件.您可以尝试暂时禁用它以查看.请注意,该文件也可以被隔离
(移动到其他地方).
通用技巧? - 消费者问题,安装 setup.exe 失败:
- 通用部署问题检查清单(替代下面的列表 - 推荐).
- Visual Studio 问题:Visual Studio 安装问题的检查清单 - 和 更新版本
- .NET 修复:.Net 框架修复工具
- 损坏的卸载:MS FixIt:删除不会卸载的包
- 日志:Microsoft Visual Studio 和 .NET Framework 日志收集工具
- Smartscreen 问题:数字签名、误报、标记的下载文件
对于无法正确安装的设置.下面的一些通用技巧 - 除了检查事件日志
和安装-
和应用程序日志
和谷歌搜索任何错误消息
(也总是这样做——也许是先——但也许只是先重启——在面对所有的复杂性之前):
- 重启:安装失败后首先重启,看看是否能解决锁定和挂起的重命名问题.
- 其他计算机:尝试在另一台物理机器上安装?
- 安装介质的重要烟雾测试!
- 虚拟:尝试在虚拟机上安装?
- 经常过时,检查运行时,检查 Windows 更新.
- 运行时:确保在所需版本中包含所需的各种类型的运行时:
- 辅助帐户:尝试使用不同的管理员帐户在主机上安装.这可以解决由用户个人资料中的错误引起的问题(这种情况并不少见).
- 本地安装文件:如果安装文件在调用时位于网络上,则将它们复制到本地(以消除网络错误源).
- 本地化问题:以其他语言提供的设置包含原始安装程序(通常是英语)中没有的全新错误并不少见.
- Murphy Field":
我们已经设法在英文版之外的国际化设置中添加了额外的错误"
.哦,人类说!无赖. - 尝试下载英文安装版本并测试安装?
- 在英文机器或虚拟机上尝试本地化设置?
- 还调查使用不同语言设置的另一个用户帐户运行.
- Murphy Field":
Setup.exe - 再次 - 常见的拦截器":
<块引用>- 损坏的安装文件:损坏的安装文件.重新下载确定?在浪费一整天之前将其作为第一步完成吗?正确的平台位数?正确的 CPU 架构?
- 恶意软件:恶意软件几乎可以导致任何事情"在问题方面.
- 安全软件:
防病毒
、防火墙
、scanners
、etc...
可能会干扰安装.如果可能,请在需要时暂时禁用. - 磁盘空间:确保足够的磁盘空间!
- 代理:如果有网络要求,是否有阻止事物的代理服务器?
- 政策:托管网络上可能有一些有效的政策来阻止某些使安装无法进行的功能.试试虚拟?通常限制较少.
- 磁盘错误:扫描磁盘以查看是否正常.如果没有,请先修复它.对于没有 UPS 的台式机,现代 NVMe 磁盘可能会因断电而丢失大量数据.
- 磁盘安全 ACL:自定义安全 ACL(NTFS 访问配置)配置会导致 Windows 组件和类似软件的运行时错误.永远不要对 Windows 目录使用自定义 ACL,除非您知道自己在做什么.错误是肯定的.
一些链接:
- Windows 中的设置过程在尝试创建uc.micro"时访问被拒绝失败文件夹
- SQL Server 2017 安装卡住
- Visual Studio 安装程序在 AspNetDiagnosticPack.msi 上失败
- 安装程序有安装此包时遇到意外错误 - .Error code 2896
轻松访问:
- XML 文件:安装 XML 文件
- 误报
- 安装程序类方法 - 更多安装程序类方法
- 这种安装 COM+ 的方法行得通吗?
- Windows 安装程序最佳实践
- 重启管理器和日志记录
- 在 wix 中更改我的组件 GUID?莉>
- 简化 WiX 标记 - 您可以从 Wix xml 文件中省略许多源属性
- 运行旧版应用(
virtuals
、兼容模式
、重新打包
、等...
) - 什么是 ICE 规则
- 预处理器与本地化变量,以及包含文件的问题
- WiX 预处理器
重新打包、应用程序启动调试:
Procmon.exe
、捕获
、重新打包
、服务安装
和安装程序方法
- 此处重新包装部分
- 如何运行在/silent 模式下安装并调整设置
- 有关软件分发的更多信息
- Wix - 如何在不使用的情况下运行/安装应用程序UI(嵌入 setup.exe、静默运行 setup.exe、应用程序重新打包、引导程序/链接程序)
升级:
其他一些 WiX 链接:
- WiX 3 对 .NET 3.5 的依赖
- 简化您的 WiX 标记.
- 使用 WiX 注册 COM EXE.
- 不能卸载,失败.
- 动态链接库.
- Microsoft 调试环境.
- 如何创建Windows Installer 的必备软件包?
- 如何嵌入 CustomAction.CA.dll进入 MSI?
- 安装的程序是每次服务器从 windows server 2012 R2 重新启动时自动删除
程序:
- 打开临时文件夹:Windows 键 =>点击 R =>类型:
%TEMP%
=>按:回车. - ARP:去开始 → 运行 → appwiz.cpl → ENTER 以打开添加/删除程序小程序(或单击控制面板中的添加/删除程序).
- 设置 GUI Win8/10:Windows 键 + 点击 I =>
Apps &Features
.Select entry and uninstall. - Quick start of Powershell: hold Windows key, tap R, type in "powershell" and press Enter.
- Restart Graphics Driver: Windows key + Ctrl + Shift and tap B.
Some good starting links to learn Wix:
- My Wix quick start suggestions
- Good resources for learning how to create MSI installers from WiX
- How to implement WiX installer upgrade? (major upgrade)
- What are limitations of WiX and WiX Toolset?
Extract Files from Setup.exe
WiX Bundle or from an MSI file itself:
- Extract MSI from EXE - including how to extract files embedded in a WiX Burn bundle executable.
- How can I compare the content of two (or more) MSI files? - Including how to extract files from an MSI using WiX's
dark.exe
tool
As I wrote in my suggested "Wix quick start" post above: Wix is hands-on. Just focus on simple, but complete real-world samples like the one from Codeproject - reading the documentation alone is likely to be merely confusing.
Focus on splitting your application into components and set up a major upgrade. Use one file per component as a rule of thumb, and read this answer for a better understanding of component creation: Change my component GUID in wix?
A major upgrade is the most commonly used upgrade mechanism for deployed software (the other common upgrade type is minor upgrade). It is obviously crucial that you can upgrade what you have deployed already. Get upgrade scenarios working before you deploy your first software version so you have confidence in your deployment solution.
Once you got your components set up and your upgrade solution is working, the rest of the pieces fall into place as you work your way through your application's deployment requirements and check for samples on the Wix tutorial site: https://www.firegiant.com/wix/tutorial/.
For those writing Wix code directly (without a GUI editor), I suggest you check this answer for a way to keep your source files terse: Syntax for guids in WIX?
Further read:
- Windows Installer and the creation of WiX
- Installer capabilities, WIX vs InstallShield Express
- Installshield or Wix
- WiX Bug Tracker
Let's discuss following topic. There is application which currently is being deployed with good to know xcopy method.This approach makes difficult to manage dependencies, file updates etc. There is idea to start application deployment with help of some packages, you know like you do in Linux with help of RPM, but for Windows.
So I have question: what package system is better to use on windows classic windows installer (msi) or nuget or something else?
Ad-Hoc: How do I avoid common design flaws in my WiX / MSI deployment solution?
- a very messy and less-than-ideal ad-hoc summary of common problems found in MSI files. Not great. Better than nothing? The stuff that is not in the books (too messy).
Important Topic: How do I avoid distributing sensitive information in my MSI by accident?
Need For Speed: WiX Quick Start Short Version
WiX & MSI:
MSI is the accepted corporate application standard. It has some major corporate benefits (
and the short, concise version
) compared to legacy deployment techniques. WiX is the new open source way to create MSI files.
- Wix Toolset Download (
1)
Main WiX setup,2)
Votive - Visual Studio integration setup- WiX Documentation
- After WiX installation locate
WiX.chm
andmsi.chm
help files in installation folder "%ProgramFiles(x86)%WiX Toolset v3.11doc
" for quick access to documentation.- Online:
WiX Reference Manual v3
,Official WiX Tutorial
.Github
,Bug Tracker
,Mailing List
,FireGiant WiX KDB
(FireGiant is WiX's commercial branch).- To get your head around Wix, you might want to read a quick, unofficial summary of the history behind it.
- MSBuild - using Visual Studio, Votive and MSBuild
- Harvesting (1): WiX has its own tool for generating WiX markup based on an input folder.
- The tool is called heat.exe. WiX's commercial branch FireGiant has a tool called HeatWave with more features.
- Largely untested by me is the tool
WixHeatATLHarvesterExtension
: https://github.com/nirbar/WixHeatATLHarvesterExtension (a WiX Heat extension to harvest registry information from x64 modules)
Other Tools:
- Then you might want to check other ways to deliver an installer, besides Wix by reading:
- Major Tools: Advanced Installer, - InstallShield, - PACE Suite
Hello World & Hello WiX:
- Finally view a complete example of how a Wix source file and its components look like on Codeproject. This is the "Hello World" of Wix.
- "Hello WiX - step-by-step in Visual Studio".
- This needs WiX and Votive (WiX Toolset Visual Studio Extension > - WiX's Visual Studio integration so you get Intellisense). See download page.
- Inline comments in bottom markup is probably all you need to get going.
- Small sample of WiX preprocessor variables / defines.
- Hello WiX C# Custom Actions
- How to add C# custom actions to an existing WiX project.
Video Samples:
More Sample Code:
WiX Quick Start: Here are some of the best sample code links that I have found:
- Helge Klein's real-world WiX sample - do check this out (Wayback - Archived Version).
- Rainer Stropek's WiX Samples on Github - can be very helpful.
- From MSI to WiX by Alex Schevchuk - aging content, but excellent.
- Chris Painter's IsWiX Tutorials - excellent WiX samples.
And finally:
- Phil Wilson's Github repository for MSI samples: https://github.com/Apress/def-guide-to-win-installer. The best content, but aging. General MSI samples, not WiX as such.
- My experimental site: installdude.com.
- How-to-create-a-Windows-Service-MSI-Installer-Using-WiX.
- WiX Extension: https://github.com/nirbar/PanelSwWixExtension (
Dism.exe
,etc...
)
Debugging: Always check all event logs, application logs and MSI logs - if available. Just to mention it. And use any debugging tool available and google the exact error message before doing anything else.
And check for any obviously missing runtimes. For example: .Net
, .Net Core
, Java
, Silverlight
, Direct X
, VC++ Runtime
, MS-XML
(legacy), etc...
.
Custom Action Debugging:
- Common Causes for Custom Action runtime failures
- Debugging Custom Actions
- For native code / C++ just attach debugger to
msiexec.exe
- Advanced Installer's Debug C# Custom Actions video tutorial
MSI logging:
- Overview and summary (how to log, interpreting log file, etc...)
- Installsite: MSI log "how-to"
- More MSI logging information
Event Viewer:
- Hold down Windows Key, tap R, type
eventvwr.msc
and press Enter.- Go to
Windows Logs => Applications
. Look forMsiInstaller events
.- Check the other logs too (
Security
,System
,Configuration
).General Debugging:
Application Launch Problem: Debugging Ideas (torpedoes full spread)
ProcMon.exe: The tool of the trade. The one-size-fits-all tool. The bee's knees, the topper-most, the quantum leap, the cat's pajamas. It can be a challenge to use it effectively, but it is the best general-purpose debugging tool that is free (comment link for safekeeping).
- Quick, Rudimentary Sample
- Hanselman's longer video sample (from about 3:50 onwards)
Debugging Tools:
- Tools to debug dependency issues -
ProcMon.exe
,VS
,Dependency Walker
,etc...
- Essential service debugging tools:
Event Viewer
,Task Manager
,Services.msc
Process Explorer
,NET command
,SC.exe
- Windows Services Frequently Asked Questions (FAQ)
Error Code: Looking up error codes and exception messages.
- "The Magic Number Database" - online lookup.
- Checking Error Codes - several tools and approaches.
A Deployment Mnemonic: A general mnemonic to think about deployment problems:
What is locking
(in use, malware),what is blocking
(permissions, anti-virus, security tools),what is corrupt
(disk, malware, configs, encryption)what are unexpected system states
(disk space, time & date settings, language, licensing, windows patch state, path too long, PendingFileRenames, etc...),what are incompatible products
(things that can't co-exist),what is unreachable or misconfigured
(what points to erroneous locations and resources: network server names, disk paths, URLs, databases, services, UAT environments, PROD environments, etc...) and last but not least:what is missing
(runtime, resource image, settings file, etc...)?
NOTE: Always first (step 8 below):
Google exact error message
.Express Failure to Launch Debugging:
1)
Reboot
,2)
disable anti-virus
,3)
launch as admin
and check,4)
Checkdependencies and runtimes
(Java, VC++ Runtime, .NET, etc...). Then, if need be:5)
verbose log
,6)
event logs
,7)
Try on a virtual
if you still can't get it working? (many virtuals lack essential runtimes - check) Orsecondary computer?
Also8)
google exact error messages
and check user comments,9)
Run update for the application in question?
(new installer could eliminate the error situation).10)
Run a full check formalware
too? It is all over the place these days.11)
Some software (often server software) may need configuration settings sorted out (misconfiguration
). Desktop applications may needlicense
to launch at all.
Locks?: With permission and locks you can try to
run the tool with elevated rights
? You could have disk corruption -disk errors
?Faulty ACL permissions
? (possible). Youranti-virus suite
has locked some file that MSI is trying to put back in place. You can try to disable it temporarily to see. Note that the file can have beenquarantined
as well (moved somewhere else).
Generic Tricks? - Consumer issues, failure to install setup.exe:
- A generic check-list for deployment issues (alternative to list below - recommended).
- Visual Studio Problems: A check list for Visual Studio installation problems - and an updated version
- .NET Repair: .Net Framework Repair Tool
- Broken Uninstalls: MS FixIt: Remove packages that won't uninstall
- Log: Microsoft Visual Studio and .NET Framework Log Collection Tool
- Smartscreen issues: Digital signatures, false positives, tagged downloaded file
For setups that won't install properly. A few generic tricks below - in addition to checking event logs
and installation-
and application logs
and googling any error messages
(always do that too - perhaps first - but maybe just do a reboot first - before facing all the complexity):
- Reboot: Reboot first after a failed install to see if that solves locks and pending renames.
- Other Computer: Try installing on another physical machine instead?
- Important smoke test of the installation media!
- Virtual: Try installing on a Virtual machine instead?
- Often outdated, check runtimes, check Windows Update.
- Runtimes: Ensure required runtimes of various types are on there in the required version:
- Secondary Account: Try installing on main box using a different admin account. This can sort out problems caused by errors in the user profile (not at all that uncommon).
- Local Installation Files: Copy installation files locally if they are on the network when invoked (to eliminate network error sources).
- Localization Issues: It is not uncommon for setups delivered in other languages to contain brand new bugs not seen in the original installer (usually English).
- "Murphy Field":
"We have managed to add additional bugs to the internationalized setups beyond the English version"
. Oh the humanity say! Bummer.- Try to download an English setup version and test install?
- Try the localized setup on an English machine or virtual?
- Also investigate running with another user account with different language settings.
Setup.exe - again - the common "blockers":
- Corrupt Setup File: Corrupt setup file. Re-download to be sure? Get this done as one of the first steps before wasting a whole day? Correct platform bitness? Right CPU-architecture?
- Malware: Malware can cause just about "anything" in terms of problems.
- Security Software:
Anti-virus
,firewalls
,scanners
,etc...
can interfere with installation. Disable temporarily if possible when required.- Disk Space: Ensure enough disk space!
- Ways to clear out disk space. Long version.
- Just run
cleanmgr.exe
first.- Proxy: If there is a network requirement, is there a proxy server that blocks things?
- Policies: There can be policies in effect on managed networks to block certain features making the install impossible. Try on virtual? Usually less restricted.
- Disk Errors: Scan disk to see if it is OK. If not, fix it first. Modern NVMe disks can lose a lot of data with power outages for desktops without UPS.
- Disk Security ACL: Custom security ACL (NTFS access configuration) configuration that leads to runtime errors for Windows components and software alike. Never use custom ACL for Windows directories unless you know what you are doing. Errors are CERTAIN.
Some Links:
- 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
Easy Access:
- XML Files: 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 - you can leave out a lot of source attributes from your Wix xml file
- Running Legacy Applications (
virtuals
,compatibility mode
,repackaging
,etc...
) - What are ICE Rules
- Preprocessor versus Localization Variables, and the issue of include files
- WiX Preprocessor
Repackaging, Application Launch Debugging:
Procmon.exe
,capture
,repackaging
,service installation
andinstaller methods
- Section on repackaging here
- How to run an installation in /silent mode with adjusted settings
- More on distribution of software
- Wix - How to run/install application without UI (embedding setup.exe, silent running setup.exe, application repackaging, bootstrappers / chainers)
Upgrades:
Some Other WiX Links:
- WiX 3 dependency on .NET 3.5
- 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
Procedures:
- Open Temp folder: Windows Key => Tap R => Type:
%TEMP%
=> Press: Enter. - ARP: Go start → run → appwiz.cpl → ENTER in order to open the add/remove programs applet (or click add/ remove programs in the control panel).
- Settings GUI Win8/10: Windows Key + Tap I =>
Apps & Features
. Select entry and uninstall. - Quick start of Powershell: hold Windows key, tap R, type in "powershell" and press Enter.
- Restart Graphics Driver: Windows key + Ctrl + Shift and tap B.
Some good starting links to learn Wix:
- My Wix quick start suggestions
- Good resources for learning how to create MSI installers from WiX
- How to implement WiX installer upgrade? (major upgrade)
- What are limitations of WiX and WiX Toolset?
Extract Files from Setup.exe
WiX Bundle or from an MSI file itself:
- Extract MSI from EXE - including how to extract files embedded in a WiX Burn bundle executable.
- How can I compare the content of two (or more) MSI files? - Including how to extract files from an MSI using WiX's
dark.exe
tool
As I wrote in my suggested "Wix quick start" post above: Wix is hands-on. Just focus on simple, but complete real-world samples like the one from Codeproject - reading the documentation alone is likely to be merely confusing.
Focus on splitting your application into components and set up a major upgrade. Use one file per component as a rule of thumb, and read this answer for a better understanding of component creation: Change my component GUID in wix?
A major upgrade is the most commonly used upgrade mechanism for deployed software (the other common upgrade type is minor upgrade). It is obviously crucial that you can upgrade what you have deployed already. Get upgrade scenarios working before you deploy your first software version so you have confidence in your deployment solution.
Once you got your components set up and your upgrade solution is working, the rest of the pieces fall into place as you work your way through your application's deployment requirements and check for samples on the Wix tutorial site: https://www.firegiant.com/wix/tutorial/.
For those writing Wix code directly (without a GUI editor), I suggest you check this answer for a way to keep your source files terse: Syntax for guids in WIX?
Further read:
- Windows Installer and the creation of WiX
- Installer capabilities, WIX vs InstallShield Express
- Installshield or Wix
- WiX Bug Tracker
这篇关于MSI 与 nuget 包:哪个更适合持续交付?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!