【问题标题】:What happens when we install or uninstall a .msi or .exe package? [closed]当我们安装或卸载 .msi 或 .exe 包时会发生什么? [关闭]
【发布时间】:2014-12-24 18:00:13
【问题描述】:

我想知道内部细节。注册表如何更改?安装后,程序和功能如何能够检测卸载文件进行卸载?如何创建文件。能举个例子就更好了。

【问题讨论】:

    标签: windows installation uninstallation


    【解决方案1】:

    请参考:https://www.raymond.cc/blog/tracking-registry-and-files-changes-when-installing-software-in-windows/
    以上将给出:通过比较前后快照来跟踪注册表和文件更改

    关于 MSI:MSI 是 Windows 使用的安装程序包文件格式。它的名称来自该程序的原始名称 Microsoft Installer,后来改为 Windows Installer。 MSI 文件用于安装、存储和删除程序。这些文件包含在一个包中,该包与程序的客户端安装程序服务(一个 .EXE 文件)一起用于打开和安装程序。

    你可以查看stackoverflow中的上一个问题what happens in the registry when installing with an MSI in Windows 7?

    【讨论】:

    • 谢谢安娜达特。这有点帮助。我在 HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\xxx\{Some hexadecimal} 中找到了 UninstallString。就像 misexec.exe /X{hexadecimal}。这如何能够识别安装目录中的卸载文件?
    • @Embydextrous 例如十六进制为:"{893F27E6-D6BE-4B9F-80E6-0ADA694A31A8}" = Microsoft SQL Server 2008 通用文件 否则即使你认为任何十六进制regedit 的文件夹-当我们卸载任何软件时,您可以通过“显示名称”将十六进制与“wat”相关联。它会检查相应的十六进制或“密钥”。卸载程序扫描注册表与它要卸载的“wat”相对应。
    • @Anandate 好的.. 所以如果我运行 "msiexec \X{893F27E6-D6BE-4B9F-80E6-0ADA694A31A8}" 它实际上会找到卸载程序.exe 文件(如果有),并将从相应的注册表中获取此信息。如果我在这个注册表上添加了一些读保护,那么我猜它最终会出现一些异常。我对吗?你能简要解释一下卸载过程吗?另外,如果注册表被读保护,如果我直接启动它,uninstall.exe 会正常运行吗?
    • evn​​ m 并不完全了解卸载过程.. bt 让我澄清一个事实,即您具有误导性 - 在 regedit 中它存储调用和预定义参数。就像 wat 我们有一种具有预定义策略的函数。因此,当我们卸载 x 系统时,将在其注册表中搜索相关信息以查找卸载 optns。
    • 我知道这一点。实际上,我从办公室的团队讨论中得到了我正在寻找的确切答案。但是,你的回答对我来说是一个很好的开始。我对此有很多了解,基本上它充当了螺旋桨。感谢您的时间!
    猜你喜欢
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-09
    • 1970-01-01
    • 2011-05-29
    相关资源
    最近更新 更多