Wix学习整理(3)——关于Windows Installer和MSI

本文详细介绍了Windows Installer的工作原理及其核心组成部分MSI文件。解释了MSI文件如何存储安装信息,并介绍了MSI数据库的重要表,如Feature、Component和Directory等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于Windows Installer

Windows Installer是微软Windows操作系统自带的一个软件安装和配置服务,其实现了软件安装的业务逻辑:如何安装软件?如何修改注册表键值?如何创建快捷方式?如何操作网站目录或注册服务?等等。Windows Installer技术由两部分组成:客户端安装程序服务(Msiexec.exe)和Microsoft软件安装包文件(MSI)。

关于MSI

Windows Installer是从一个数据库中来获取软件安装的相关信息。MSI文件就是一个Windows Installer的数据库,它包含了安装一种产品所需信息、安装(或卸载)程序所需的指令和数据;它将程序的组成文件和功能关联起来;它还包含有关安装过程本身的信息,如目标文件夹路径、系统依赖项、安装选项和控制安装过程的属性。

MSI数据库的几个重要表

既然MSI是一个数据库,那么它就应该由多个关系表来组成。下面我们就简单地介绍MSI的几个重要的表。

表格 1 MSI的几个重要表说明

表名

说明

Directory

指定了产品的目录结构,包括源目录结构和目标目录结构。

Component

指定了产品的基本组件结构。

Feature

Component的组合就称为Feature,是用户选择安装的可视部件。

File

指定了需要安装到目标目录的文件。

ShortCut

记录了产品需要在目标计算机上安装快捷方式所需的信息。

Register

记录了产品需要在目标计算机上注册的注册表键值信息。

Property

记录了产品安装过程中所需的属性值。

Feature表和Component表

Feature和Component是软件安装中非常重要的两个概念。Feature和Component都可以翻译为组件,两者的区别可以说是:Feature是逻辑上的而Component是物理上的。Feature是应用或产品所有功能的一个子集,用户可以独立地选择是否安装。Component是产品或应用的最小组成单元,它可以由一个文件,或一个快捷方式,或一个注册表键值,或它们的组合来组成。

Feature是由Component组成的。Feature具有树状嵌套结构,最大深度为16。在安装的过程中,可以由用户来选择是否安装某个Feature。若父Feature没有被选择,则子Feature也不会被安装。

Component是产品或应用的一小片,每一个要安装的Component都要由一个唯一的GUID值来标识,以便Windows Installer进行跟踪。若某个Component没有GUID值,则安装时不会被安装注册,无GUID的Component一般用于只在安装时的功能实现,例如删除某些临时文件等。

Directory表说明

Directory表指定了产品安装的目录结构,包括目标目录结构和源目录结构。Directory表有三个表项:标识符ID、父目录Directory_Parent和DefaultDir。表项Directory_Parent指向该目录的父目录,而通过表项ID和DefaultDir的值来确定目标目录结构和源目录结构。

目录结构必须有且仅有一个根目录,这个根目录的标识符必须指定为TARGETDIR(TARGETDIR是Windows Installer预定义的属性,其值可以通过命令行或用户界面进行设置),而根目录的SourceDir则必须指定为SourceDir(SourceDir默认的属性值为.msi文件所在的路径)。如果属性TARGETDIR的值被指定了,则目标根目录为TARGETDIR的属性值;若该属性未有值,则目标根目录为Windows Installer预定义属性ROOTDRIVE的值。而源根目录则为SourceDir的属性值。

对于非根目录,若Directory的标识符ID中指定的属性被定义了,则该属性的值即为目标目录,否则取DefaultDir表项中的值作为目标父目录下的一个子目录。而源目录则是将DefaultDir表项中指定的值作为源父目录的一个子目录。

五个必需属性

每个安装包必须要有五个必需属性(Required Properties):ProductCode、ProductLanguage、Manufacturer、ProductName和ProductVersion。

表格 2 五个必需属性

属性名

说明

ProductCode

唯一的、大写的GUID值,用于标识要安装的产品。

ProductLanguage

指示了用户界面上除写入数据库的字符串外的其余字符串所用的语言的数字ID(如1033、2046)。

Manufacturer

指示产品生产厂商的字符串值。

ProductName

产品名称。

ProductVersion

产品版本号,版本号的格式为major.minor.build,其中major和minor最大数字为255,build的最大数字为65535。

<think>好的,我现在需要帮用户解决关于Cheat Engine驱动保护插件的下载使用教程的问题。首先,我得回顾用户提供的引用内容,看看是否有相关的信息。根据引用[1],提到了CheatEngine-DMA插件,项目地址是https://gitcode.com/gh_mirrors/ch/CheatEngine-DMA。这可能是一个驱动级的插件,可能与DMA(直接内存访问)相关,用于绕过反作弊系统。 接下来,用户提到的引用[2][3]涉及游戏数据保护反作弊系统的关闭,这可能与使用CE时的注意事项有关。引用[4]详细介绍了CE作为内存分析工具的特点,以及需要关闭反作弊系统。这可能意味着用户在使用驱动保护插件时需要处理反作弊的问题。 用户的问题是关于驱动保护插件的下载使用教程。我需要整理现有的引用信息,看看是否有直接相关的插件。引用[1]中的CheatEngine-DMA可能是一个驱动级插件,但需要确认它是否属于驱动保护类。此外,用户可能需要其他插件,如Obfuscator(引用[2]提到的),但不确定是否属于驱动保护。 首先,我应该建议用户查看引用[1]的项目地址,因为这是提到的唯一具体插件。然后,提醒用户注意关闭反作弊系统,如引用[3][4]所述。另外,可能需要指导用户以管理员权限运行CE,并寻找其他可能的驱动保护插件,但根据现有引用,可能没有直接提到的其他驱动保护插件,需要补充一般性建议。 可能的步骤包括:下载DMA插件,安装步骤,配置CE,关闭反作弊,管理员权限运行。同时,提醒用户法律风险,确保在合法范围内使用。 还需要检查是否有其他引用提到的内容,但引用中主要提到的插件是DMAObfuscator,后者是保护游戏数据的,可能不适用于用户的需求。因此,重点应放在DMA插件上,并指导用户如何正确使用,同时结合关闭反作弊管理员权限的建议。 最后,生成相关问题,可能涉及其他插件、常见错误解决法律问题等。</think>### Cheat Engine驱动保护插件指南 #### 1. 相关插件推荐与下载 根据引用信息,以下插件与驱动保护或绕过反作弊相关: - **CheatEngine-DMA** 支持通过DMA(直接内存访问)绕过反作弊检测,适用于单机游戏调试[^1]。 **项目地址**:https://gitcode.com/gh_mirrors/ch/CheatEngine-DMA **功能**:提供物理内存读写、进程隐藏等驱动级操作。 - **Obfuscator插件** 用于保护游戏数据,防止被逆向分析(需确认是否适配最新版CE)[^2]。 #### 2. 使用教程(以CheatEngine-DMA为例) **步骤1:环境准备** - 关闭游戏反作弊系统(如单机游戏的DRM保护)[^3] - 以管理员权限运行Cheat Engine[^4] **步骤2:插件安装** 1. 下载插件文件(`.dll`或`.exe`) 2. 将插件文件复制到CE安装目录的`plugins`文件夹 3. 重启CE,在菜单栏查看插件是否加载成功 **步骤3:功能调用** ```lua -- 示例:通过Lua脚本调用DMA插件功能 if dma_enabled then local physical_address = dma_get_physical_address(0x12345678) print(string.format("物理地址: 0x%X", physical_address)) end ``` **注意事项** - 部分插件需禁用Windows驱动签名验证(`bcdedit /set testsigning on`) - 虚拟机环境下可能出现兼容性问题 #### 3. 替代方案 若插件失效,可尝试以下方法: 1. 使用内核调试工具(如WinDbg Preview)手动分析驱动保护 2. 结合x64dbg动态追踪内存访问行为
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值