我有一些vlx文件要添加到我的 AutoCAD 文件夹中。我想用Inno Setup制作安装包,它将在安装后安装我的vlx文件。我得到了AutoCAD 2014的注册表项。
HKEY_LOCAL_MACHINE\Software\Autodesk\AutoCAD\R19.1\ACAD-D001:409
请告诉我上述案例的inno设置脚本。
答案 0 :(得分:1)
我发现这个article表明:
下面是一个Inno Setup / Pascal代码示例,介绍如何遍历AutoCAD版本并为名为“MyCADApp”的虚拟应用程序创建相关的LspLoad注册表项。纯粹是为了证明这种机制。它被剥离到64位Windows上的64位ACAD来演示原理。
一旦掌握了pascal脚本,就可以相对直接地修改/扩展它以在64位Windows上添加32位CAD和32位Windows上的32位CAD,当然对Bricscad也是如此。您可能需要的所有附加功能,例如“IsWin64”,可以在Inno Setup帮助文件的“支持功能参考”中找到。
procedure AddACADRegKey (Release: String); {eg 'R19.0 for ACAD 2013'}
var
RunTimeNum: String; {eg '19'}
AllProductID: TArrayOfString;
ProductID: String; {eg 'ACAD-9001:409'}
KeyPathShort: String;{eg 'SOFTWARE\Autodesk\AutoCAD\'}
KeyPathLong: String; {eg 'SOFTWARE\Autodesk\AutoCAD\R18.1\ACAD-9001:409\Applications\MyCADApp'}
KeyStringShort: String; {eg c:\Program Files\MyCADApp\LspLoad.'}
KeyStringLong: String; {eg 'c:\Program Files\MyCADApp\LspLoad.19.x64.arx'}
I: Integer;
begin
RunTimeNum := Copy (Release, 2, 2);
KeyStringShort := ExpandConstant('{pf}\MyCADApp\LspLoad.');
KeyPathShort := 'SOFTWARE\Autodesk\AutoCAD\';
if RegGetSubkeyNames(HKLM64, KeyPathShort + Release, AllProductID)
then begin
for I := 1 to GetArrayLength(AllProductID) do begin
ProductID := AllProductID[I-1];
KeyPathLong := KeyPathShort + Release + '\' + ProductID + '\Applications\MyCADApp';
KeyStringLong := KeyStringShort + RunTimeNum + '.x64.arx';
RegWriteDWordValue (HKLM64, KeyPathLong,'LOADCTRLS', 2);
RegWriteStringValue (HKLM64, KeyPathLong,'LOADER',KeyStringLong);
end;
end;
end;
其用法示例 - 要测试ACAD 2012和ACAD 2013并添加由最终安装事件触发的注册表项,您需要添加以下代码:
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep=ssPostInstall
then begin
AddAcadRegKey ('R18.2');{ACAD 2012}
AddAcadRegKey ('R19.0');{ACAD 2013}
end;
end;
您可以在该讨论主题中找到更多信息。
以下是我在注册表中检查的一个示例:
现在,我向您展示的代码创建了这些密钥:
RegWriteDWordValue (HKLM64, KeyPathLong,'LOADCTRLS', 2);
RegWriteStringValue (HKLM64, KeyPathLong,'LOADER',KeyStringLong);
你真的尝试过吗?为什么不手动将VLX添加到启动套件中,然后查看对注册表所做的更改?然后你知道你需要做什么。
我在Google中进行了一次搜索时发现了here信息:
确定.NET程序集的构建类型后,必须确定如何将其加载到AutoCAD中。可以手动加载.NET程序集文件,也可以加载需求。
- 手动 - 在命令提示符下或在AutoLISP文件中使用NETLOAD命令。
- 需求负载 - 定义AutoCAD启动时要加载的应用程序的密钥。密钥必须放在要加载应用程序的AutoCAD特定版本的Application键下。
应用程序的密钥可以包含以下密钥:
<强>描述强> .NET程序集的描述是可选的。
<强> LOADCTRLS 强> 控制加载.NET程序集的方式和时间。
1 - 检测到代理对象时加载应用程序
2 - 启动时加载应用程序
4 - 在命令开始时加载应用程序
8 - 应用户或其他应用程序的请求加载应用程序
16 - 不要加载应用程序
32 - 透明地加载应用程序
<强> LOADER 强> 指定要加载的.NET程序集文件。
<强>托管强> 指定应加载的文件是.NET程序集或ObjectARX文件。对于.NET程序集文件,设置为1.
答案 1 :(得分:0)
您应该使用自动加载器包格式。然后,您不必弄乱注册表项,并且您的Inno安装脚本只是安装到用户数据文件夹,程序数据或程序文件下的Autodesk \ ApplicationPlugins文件夹。