# Windows下有无简单而自由地创建安装/绿化/卸载/补丁程序的方法

**URL:** <https://meta.appinn.net/t/topic/62145>\
**Category:** 问题求助\
**Tags:** windows\
**Created:** [2024 年10 月 19 日 10:51 UTC](https://meta.appinn.net/t/topic/62145 "2024-10-19T10:51:33Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![3\_5105](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/3_5105/32/57748_2.png) [@3\_5105](https://meta.appinn.net/u/3_5105)\
**Post date:** [2024 年10 月 19 日 10:51 UTC](https://meta.appinn.net/t/topic/62145/1 "2024-10-19T10:51:33Z")

</div>

# 起因

在开发绿化、安装和补丁程序时，我经常需要执行大量的系统操作。我希望找到一种易于使用的编程语言

# 条件

1.能创建简单的图形用户界面（GUI）程序  
2.能轻松执行系统级操作（如删除文件、编辑注册表等）  
3.能进行底层操作（例如进程注入、窗口注入等）  
4.能实现解压缩功能  
5.能够静态编译为单个可执行文件，或者将脚本嵌入解释器中生成单个可执行文件，并且体积不能太大（比如python打包后体积达大几十MB）  
6.程序不能依赖于Windows内核之外的运行库。

# 目前采用的方法/编程语言：

_ **pecmd** _：可视为cmd的扩展，它能够快速创建小型GUI，并支持复杂的逻辑处理。然而，其健壮性不足，且难以处理底层复杂操作，如进程注入。

_ **AutoHotkey** _：虽然设计理念与pecmd不同，但对我来说效果相似，因此我也使用ahk进行编程。它同样存在上述缺陷。

_ **C/C++** _：这是我目前使用较多的语言，它在其他方面无可挑剔。但它有（且仅有）一个致命的缺点需要解决：WinAPI操作过于繁琐。例如，删除文件夹前需要先清空文件夹内的所有文件，创建GUI时也需要编写大量代码。  
**注：我认为，解决本帖问题的最好方法就是找到一个简化WinAPI操作的c/c++封装库。如果没有期望的结果，可能我会写一个这样的封装库，但很费时间**

# 已经放弃的方案：

_ **批处理** _：GUI创建能力极低，效率低下，且健壮性差，无法执行底层操作。  
_ **PowerShell** _：安装程序需要考虑不支持PowerShell的系统，且几乎无法创建GUI。  
_ **VBScript** _：同PowerShell，且语法繁琐。  
INF文件：无法创建GUI，处理自定义行为的能力不足。  
_ **NSIS** _：专业为创建安装程序而设计，但只能满足基本需求。对于个性化操作，即使使用插件也难以实现（如进程注入、二进制写入、进程存在判断、多线程解压等），且逻辑处理能力极弱。  
_ **Inno Setup** _：与NSIS类似，存在相同的限制。  
_ **Java Python CSharp NET** _ 等依赖运行库的高级编程语言：需要运行库支持，因此不予考虑。

---

<div class="post-metadata">

**Author:** ![Cycadaceae](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/cycadaceae/32/50637_2.png) [@Cycadaceae](https://meta.appinn.net/u/Cycadaceae)\
**Post date:** [2024 年10 月 19 日 14:49 UTC](https://meta.appinn.net/t/topic/62145/2 "2024-10-19T14:49:18Z")

</div>

试试aardio

---

<div class="post-metadata">

**Author:** ![dangerace](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/dangerace/32/16676_2.png) [@dangerace](https://meta.appinn.net/u/dangerace)\
**Post date:** [2024 年10 月 19 日 15:17 UTC](https://meta.appinn.net/t/topic/62145/3 "2024-10-19T15:17:00Z")

</div>

易语言（破解版很多）

---

<div class="post-metadata">

**Author:** ![3\_5105](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/3_5105/32/57748_2.png) [@3\_5105](https://meta.appinn.net/u/3_5105)\
**Post date:** [2024 年10 月 19 日 16:29 UTC](https://meta.appinn.net/t/topic/62145/4 "2024-10-19T16:29:12Z")

</div>

几乎完美！甚至内置了hook功能，而且支持生成结果为单文件

---

<div class="post-metadata">

**Author:** ![3\_5105](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/3_5105/32/57748_2.png) [@3\_5105](https://meta.appinn.net/u/3_5105)\
**Post date:** [2024 年10 月 19 日 16:32 UTC](https://meta.appinn.net/t/topic/62145/5 "2024-10-19T16:32:00Z")

</div>

嗯…其实功能上大部分符合要求，但是因为我个人编程习惯的原因还是aardio较优些，但是相信我会有用到易语言的时候的
