免费试用

中文化、本土化、云端化的在线跨平台软件开发工具,支持APP、电脑端、小程序、IOS免签等等

打包exe到vlx中

在本教程中,我们将探讨如何将exe(可执行)文件打包到vlx(Visual Lisp Executable)文件中。这能让用户在运行Autodesk AutoCAD时直接加载和执行VLX文件,而无需单独安装和运行包含的exe文件。这样可以简化部署过程,同时提高用户体验。

一、VLX文件的基本概念

VLX文件是AutoCAD中特有的一种文件类型,用于承载Visual LISP程序的可执行代码。Visual LISP是AutoLISP语言的一种扩展,专门针对AutoCAD进行了优化。VLX文件的主要优点是可以通过简单地将其拖放到AutoCAD界面上,便立即加载和执行包含的代码。这省去了手动配置和管理Visual LISP程序的步骤。

二、将EXE文件打包到VLX文件的原理

要将EXE文件打包到VLX文件中,其基本原理是在VLX文件中嵌入EXE数据,然后在需要执行该包含的EXE时,对数据进行解包并写入到磁盘中。如此,可以避免在部署阶段需要安装EXE文件,同时在应用执行阶段能够有适用的自动化能力。

三、实现将exe打包到vlx文件的具体步骤

接下来,我们将学习将exe打包到vlx中的具体步骤。为了实现这一过程,我们需要创建一个Visual LISP程序,用于创建vlx,并在其中嵌入exe文件。以下是具体步骤:

1. 创建一个新的Visual LISP程序,使用AutoCAD附带的Visual LISP Editor。可以通过键入“vlisp”命令启动编辑器。

2. 在此程序中,首先需要定义一个函数,该函数会将EXE文件以字节数组的形式读入内存。可以通过以下代码片段实现这一功能:

```lisp

(defun read-exe-to-bytes (exe-filepath)

(setq f (open exe-filepath "rb"))

(setq file-bytes (vlax-make-safearray vlax-vbByte '(0 . 0)))

(setq index 0)

(while (setq byte (read-char f 1))

(vlax-safearray-put-element file-bytes index (char-code byte))

(setq index (+ index 1))

)

(close f)

file-bytes

)

```

3. 接下来,我们需要在VLX文件中嵌入exe文件。我们可以通过创建一个自解压缩(SFX)文件来实现这一功能。以下函数将使用ARX-library加载exe文件,并将其压缩为一个SFX压缩包:

```lisp

(defun create-sfx (exe-data dest-vlx-filepath)

(vl-load-com)

(setq arx-library "path_to_acad_exe_lib")

(arxload arx-library)

(setq dest-sfx-filepath "path_to_self_extracting_exe")

(lst_arg (list '("exe_file_name" . exe-data)))

(setq ach_out (arx arx-library "Create_SFX" dest-sfx-filepath lst_arg))

(arxunload arx-library)

ach_out

)

```

4. 现在我们需要创建一个函数,当用户加载VLX文件时,用于解包exe文件并将其写入磁盘。可以通过以下代码实现这一功能:

```lisp

(defun unpack-exe-to-disk (vlx-filepath)

(setq explorerPath (vlax-get-property (vlax-get-acad-object) 'explorerPath))

(setq dest-exe-filepath (strcat explorerPath "\\path_to_unpacked_exe"))

; Load the VLX file and unpack the EXE data

(setq vlx-data (read-file vlx-filepath))

(setq exe-data (extract-exe-data vlx-data))

; Create a new binary file and write the EXE data to it

(setq f (open dest-exe-filepath "wb"))

(foreach byte exe-data

(write-char byte f)

)

(close f)

dest-exe-filepath

)

```

5. 作为最后一步,我们需要编写一个主函数,其将加载vlx后自动执行。这里将调用unpack-exe-to-disk并运行解压到磁盘的exe文件:

```lisp

(defun c:run-exe-from-vlx ()

(setq exe-filepath (unpack-exe-to-disk (vl-filename-base (findfile (vl-filename-mktemp nil :vlx)))))

(vl-cmdf "start %s" exe-filepath)

)

```

6. 将所有代码保存到一个lsp文件(如:main.lsp)。然后从AutoCAD中使用“(load "main.lsp")”命令来加载该程序。

7. 当成功加载后,我们可以通过调用c:run-exe-from-vlx函数来运行解压缩的EXE文件。输入命令“run-exe-from-vlx”即可。

这样,我们就实现了将exe文件打包到vlx中、在加载vlx后自动解包、运行exe文件的功能。这种自解包特性使得用户无需自行管理exe文件,并能在运行时自动调用。当然,您需要根据实际目录调整相应路径才能进行实际操作。


相关知识:
编译生成exe的工程
编译生成exe文件的工程是一个在软件开发领域非常关键的过程。它包括几个主要步骤:编写源代码、编译、链接和生成可执行文件(即exe文件)。本文将详细介绍这个过程的原理和各个阶段,帮助初学者了解软件开发的基本流程。一、编写源代码软件开发的第一步是编写源代码。开
2023-06-14
使用pypy打包exe
在本教程中,我们将详细解释如何使用 PyInstaller 和 PyPy 打包 Python 脚本生成可执行文件(.exe)。这对于为用户创建独立的可执行程序,而无需他们安装 Python 或其他依赖项非常有用。我们将分解每个步骤,为初学者提供易于理解的信
2023-06-14
py打包exe库
Python 打包为 EXE 库是指将 Python 脚本(.py 文件)打包转换成 Windows 平台上可执行的 .exe 文件。这意味着不需要在目标机器上安装 Python 解释器,而可以直接运行这个 .exe 文件。下面将介绍 PyInstalle
2023-06-14
python生成exe
标题:Python生成EXE文件:原理与详细教程摘要:本文将详细介绍Python生成EXE文件的原理以及使用PyInstaller进行转换的详细步骤,帮助读者理解并轻松实现Python项目到EXE文件的转换。## 原理Python是一种解释型语言,通常需要
2023-06-14
python怎么做成exe
在本教程中,我们将一起学习如何将Python脚本转换为可执行的EXE文件。通过这种方式,即使计算机上未安装Python解释器,用户也可以轻松地在Windows操作系统上运行Python脚本。需要注意的是,生成的EXE文件只能在生成它的操作系统类型上运行。例
2023-06-14
muggleocr生成exe
在这篇文章中,我们将详细介绍如何将MuggleOCR这个优秀的OCR(光学字符识别)程序打包成一个独立的EXE文件以便在其他计算机上使用。首先我们来简要了解一下MuggleOCR的相关知识。### MuggleOCR背景简介MuggleOCR是一个简单易用
2023-06-14