请求提供基于AutoCAD 2014注册表键的vlx文件Inno Setup安装脚本
没问题,我给你整理了一个适配AutoCAD 2014的Inno Setup脚本,刚好能实现你把VLX文件部署到AutoCAD安装目录的需求,而且是在安装完成后(Post Install阶段)执行部署操作。下面是完整脚本,我会逐段给你解释关键点:
完整Inno Setup脚本
[Setup] AppName=AutoCAD VLX工具包 AppVersion=1.0 DefaultDirName={tmp} DisableProgramGroupPage=yes OutputDir=.\Output OutputBaseFilename=AutoCAD_VLX_Installer Compression=lzma2/ultra SolidCompression=yes [Files] ; 这里列出你要部署的所有VLX文件,把它们打包到安装包的临时目录 Source: "你的VLX文件路径\*.vlx"; DestDir: "{tmp}"; Flags: ignoreversion [Code] var AutoCADInstallPath: String; function InitializeSetup(): Boolean; var RegKey: String; begin Result := True; AutoCADInstallPath := ''; ; 读取AutoCAD 2014的注册表安装路径 ; 先尝试64位系统的注册表路径 RegKey := 'Software\Autodesk\AutoCAD\R19.1\ACAD-D001:409'; if RegQueryStringValue(HKLM64, RegKey, 'Location', AutoCADInstallPath) then begin Log('找到64位AutoCAD 2014安装路径: ' + AutoCADInstallPath); end else begin ; 如果64位没找到,尝试32位系统的注册表路径 if RegQueryStringValue(HKLM, RegKey, 'Location', AutoCADInstallPath) then begin Log('找到32位AutoCAD 2014安装路径: ' + AutoCADInstallPath); end else begin MsgBox('未检测到AutoCAD 2014的注册表信息,请确认已安装AutoCAD 2014!', mbError, MB_OK); Result := False; end; end; end; procedure CurStepChanged(CurStep: TSetupStep); var VLXFiles: TArrayOfString; I: Integer; DestPath: String; begin ; 在PostInstall阶段执行文件部署 if CurStep = ssPostInstall then begin ; 获取临时目录下的所有VLX文件 if FindFiles(ExpandConstant('{tmp}\*.vlx'), VLXFiles) then begin ; 拼接AutoCAD的支持文件目录(通常是安装目录下的Support文件夹) ; 如果你的VLX需要放到其他子目录,修改这里的路径即可 DestPath := AutoCADInstallPath + '\Support'; ; 确保目标目录存在 if not DirExists(DestPath) then begin CreateDir(DestPath); end; ; 逐个复制VLX文件到目标目录 for I := 0 to GetArrayLength(VLXFiles) - 1 do begin if FileCopy(ExpandConstant('{tmp}\') + VLXFiles[I], DestPath + '\' + VLXFiles[I], False) then begin Log('成功复制文件: ' + VLXFiles[I]); end else begin Log('复制文件失败: ' + VLXFiles[I]); MsgBox('文件' + VLXFiles[I] + '部署失败,请检查权限!', mbWarning, MB_OK); end; end; MsgBox('VLX文件已成功部署到AutoCAD 2014目录!', mbInformation, MB_OK); end else begin MsgBox('未找到要部署的VLX文件!', mbWarning, MB_OK); end; end; end;
脚本关键点解释
- [Setup]段:这里是安装包的基础配置,比如安装包名称、输出路径、压缩方式等。我把
DefaultDirName设为{tmp},因为我们不需要把VLX文件直接安装到用户指定的目录,而是临时存放后再复制到AutoCAD目录。 - [Files]段:把你所有的VLX文件打包到安装包的临时目录,
ignoreversion表示忽略文件版本检查,避免不必要的冲突。记得把"你的VLX文件路径\*.vlx"替换成你本地VLX文件的实际路径。 - [Code]段:
InitializeSetup函数:在安装开始前读取AutoCAD 2014的注册表键,获取它的安装路径。同时兼容32位和64位系统,如果没找到注册表信息,会弹出错误提示并终止安装。CurStepChanged函数:在ssPostInstall(安装完成后)阶段执行文件部署。我们把临时目录里的VLX文件复制到AutoCAD的Support子目录(这是AutoCAD加载自定义工具的默认目录,如果你需要放到其他目录,修改DestPath的拼接逻辑即可)。复制过程中会记录日志,失败的话会弹出警告提示。
使用注意事项
- 确保你已经安装了Inno Setup编译器(推荐最新版本)。
- 替换
[Files]段里的VLX文件路径为你本地的实际路径。 - 如果你的VLX需要放到AutoCAD的其他子目录(比如
LISP),修改DestPath的拼接代码即可。 - 测试安装包时,建议用管理员权限运行,避免文件复制时的权限问题。
内容的提问来源于stack exchange,提问作者peteroo




