|
使用了近10天的时间研究AUTOCAD2006绿色版本,遇到很多问题,这里集中整理下问题和解决问题的思路。
* l9 A: Q. X3 b4 G q/ G9 ]1.加载 acstandards服务时出错
- I( W9 x* c6 I5 q! e# a分析:这个问题在制作绿色版的过程中遇到,也看到很多使用非绿色版的人也遇到这个问题,对全球网站进行搜索,甚至在AUTODESK公司的网站也找不到答案,只是说可能是注册表的问题,按照这个思路,本人花了几天的时间对注册表进行了逐项测试,对acstandards服务进行了分析,发现acstandards服务实际就是AcStd.arx这个DLL文件,但注册表中找不到这个文件,最后使用DEPEND发现与这个文件相关的一个动态连接库文件AcStMgr.dll,对其分析测试,发现注册表CLISD中如果没有项对应的项出现就会出现这个问题,解决方法很简单,增加注册表项目即可。
& ? m7 r/ K% `! r[HKEY_CLASSES_ROOT\CLSID\{EEE6A656-87AC-11D6-A55B-0060B0875CB4}\InProcServer32]6 q5 O2 z% e& X" H
@="AcStMgr.dll"
" U& `2 ?( k8 N. @$ N"ThreadingModel"="Apartment": j" B8 U8 }! H
[HKEY_CLASSES_ROOT\CLSID\{EEE6A656-87AC-11D6-A55B-0060B0875CB4}]# ]' A/ C' J9 O, K
@="AcStManager"8 S- b# y% X* |; {
需要说明的是也可以把AcStd.arx改名或删除,这样也不会启动时调用该文件,这个模块好象并不影响操作,这个模块还可以在工具\应用程序中重新加载
) Z8 i. i- ]8 @. @; Z! L6 j8 @1 s/ U2 q$ {/ U: W
另外,如果打开图档时还出现无法加载ACSIGN服务的错误,可导入如下注册表3 K3 l- V# l r6 T4 q
[HKEY_CLASSES_ROOT\CLSID\{47775DA0-E874-4EAF-A28C-20C6E2D387A0}\InProcServer32]: ?) s/ ^* [4 h1 U" z4 b% m/ S- y
@="D:\\AUTOCAD2006\\AcSignCore16.dll"
" W% t+ R# ^/ } B& }3 I0 A( J"ThreadingModel"="Apartment"' z# i1 ^4 [" U. D; d2 W% ?" ^' @
[HKEY_CLASSES_ROOT\CLSID\{47775DA0-E874-4EAF-A28C-20C6E2D387A0}\ProgID]1 R4 D: s. y2 R1 C+ Z
@="AcSignCore.AdskFindSignFile.1"$ `; q1 t" l2 X2 i# [7 Q! p$ n5 s& X
[HKEY_CLASSES_ROOT\CLSID\{47775DA0-E874-4EAF-A28C-20C6E2D387A0}\Programmable]
) p$ N$ n8 K$ G) b! f@=""! ?# D( B& O+ p7 x; s4 _( t
[HKEY_CLASSES_ROOT\CLSID\{47775DA0-E874-4EAF-A28C-20C6E2D387A0}\SupportedExtensions]
% Z) R& _$ f2 W& D+ v".dwg"="{72EC5935-3EC3-4e94-A3F1-D2FC478521C2}"# \. S' [7 W& H" _3 n. w: F2 m
".dws"="{72EC5935-3EC3-4e94-A3F1-D2FC478521C2}", `3 | |) I& A
".dwt"="{72EC5935-3EC3-4e94-A3F1-D2FC478521C2}"
1 F1 }6 A( f7 ?* M p v# k0 F' I3 N".exe"="{BF7227D0-D41D-48fc-B545-8263F2CDA621}") C, V, n2 X& a* W6 G* u( N
".zip"="{BF7227D0-D41D-48fc-B545-8263F2CDA621}"1 e, H( J& j9 f* p
[HKEY_CLASSES_ROOT\CLSID\{47775DA0-E874-4EAF-A28C-20C6E2D387A0}\TypeLib]
. N5 m" Z o6 f0 N, E! z! t" }4 m@="{3CA3DBD0-201B-4CB1-BF2B-C33B5D6585A9}"9 j" b& q! n9 r
[HKEY_CLASSES_ROOT\CLSID\{47775DA0-E874-4EAF-A28C-20C6E2D387A0}]7 T5 J1 }, ]% A, w$ w, U+ x- T
[HKEY_CLASSES_ROOT\CLSID\{72EC5935-3EC3-4E94-A3F1-D2FC478521C2}\InProcServer32]
5 j5 ^: ~: e* i7 [@="D:\\AUTOCAD2006\\AcSignCore16.dll": u$ g" b( @# E! J
"ThreadingModel"="Apartment") Q7 U% a7 F/ d y, }1 i. I9 L
[HKEY_CLASSES_ROOT\CLSID\{72EC5935-3EC3-4E94-A3F1-D2FC478521C2}\ProgID]
1 \" Z. H. W! B: N' u8 e: A. q@="AcSignCore.AdskSignDWG.1"2 a* r4 k! d- }6 R% _
[HKEY_CLASSES_ROOT\CLSID\{72EC5935-3EC3-4E94-A3F1-D2FC478521C2}\Programmable]
/ s& X) I" l, D9 e& p@=""
9 p! E* [2 m2 j+ H3 T6 r9 {[HKEY_CLASSES_ROOT\CLSID\{72EC5935-3EC3-4E94-A3F1-D2FC478521C2}\TypeLib]6 }1 r( f/ g( I6 ~+ ?( r
@="{3CA3DBD0-201B-4CB1-BF2B-C33B5D6585A9}"
! {) B) }% \# H/ ^- r+ K4 ~+ v[HKEY_CLASSES_ROOT\CLSID\{72EC5935-3EC3-4E94-A3F1-D2FC478521C2}]; n" y3 P2 |$ E7 S' E% P
@="AdskSignDWG"$ o# O- t- A( P. y7 z7 j8 h
@="AdskFindSignFile"
+ S( q& q, S; O9 Y: k
/ z+ m$ T% O, ?, E2 N9 ]3 E2 [0 D2.无法加载配置文件。上次任务中保存的某些配置信息可能无法恢复。2 f; \4 L( W3 L7 s8 |, O
原因是HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R16.2\ACAD-4001:804\FixedProfile\General下的ProfileStorage配置文件路径丢失,重建即可,一般为Support\Profiles\FixedProfile.aws.在制作绿色版的过程中,导入注册表后AUTOCAD没有正确安装,点确定运行后提示没有配置文件,这时在把注册表导出并追加配置文件路径并替换原注册表文件并重新导入即可.
2 @( R7 \; f, `" b7 K8 G( m5 Z4 E% r1 L+ l0 u. K
3.只有全名命令才能识别acad.pgp
2 j: t" u% e) c5 @/ b3 P" m可能是acad.pgp文件丢失或对应的注册表路径不同(略). [. X+ @ n" h, q) W
2 `7 n* ^/ U# o
: w1 g* n" u+ q+ K: R- d6 H4.启动时出现fail to get CommcntrController
3 e- q$ e: e0 {, U/ `: @原因是"通讯控制中心"出了问题,通讯中心会收集计算机的用户信息并发送到AUTODESK,所以建议关闭,4 `' ?- N4 h* Q, W" M
方法一.在注册表中禁止"通讯中心"(下面是AUTOCAD2006的):
% e- }2 W$ c' m% Y! J[HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R16.2\ACAD-4001:804\Applications\WSCommCntrAcCon]
! w8 B7 ?% [% ?! C; k5 m! j% B) Y2 D"DESCRIPTION"="WSCommCntrAcCon": U* G- ?5 d7 R H0 e- _. i. a; o
"LOADCTRLS"=dword:00000000) C' }: p* w8 j( N; n! _
"LOADER"="D:\\AutoCAD2006\\WSCommCntrAcCon.arx"
4 u( ~& `* p& ^! W方法二.删除相关文件:删除Autodesk Shared\WSCommCntr1.exe进程文件,并同时必须把主目录下的几个WSCommCntr*文件一并删除即可。+ P( T4 |2 v& o+ H
方法三.CAD安装盘里有个CADManagerControl目录,里面有个CMControl.exe工具是专门设置AUTOCAD的,用这个可以禁止通讯中心.# h" g' F5 T" N3 X9 A& o
o8 n, y3 N7 T! i7 c
5.使用VBA时的错误,由于很多人喜欢使用VBA编程语言来开发AUTOCAD外挂,所以这里提供VBA完整解决方案./ I! H7 G* w, ]1 Y& r- _5 F
A.如果出现"无法创建VBA工程"
+ u4 U9 u! W) J0 ]0 o$ a原因是是acax16enu.tlb这个CAD和VBA关联的模块某有TYPELIB对应,添加如下注册表项即可(该文件可以转移到主目录AUTOCAD2006).3 [- L0 J( B! w [. W" _. [
[HKEY_CLASSES_ROOT\TypeLib\{1EFD8E85-7F3B-48E6-9341-3C8B2F60136B}\1.1\0\win32]
) w0 ^0 ?( Y9 B; p1 W7 w1 M@="C:\\Program Files\\Common Files\\Autodesk Shared\\acax16enu.tlb"* L6 {! ~; p0 i' S/ ~" M
[HKEY_CLASSES_ROOT\TypeLib\{1EFD8E85-7F3B-48E6-9341-3C8B2F60136B}\1.1\0]" E, D# w7 I# W( \
3 N8 \4 d; i# a/ X5 H4 `; X" hB.如果出现VBA没有安装,请复制OFFICE10文件到共享目录(这里需要注意的是:CAD不象OFFICE等可以把OFFICE10转移到程序目录运行,否则会出现调用VBA时非法退出的问题),复制VBA相关文件到程序主目录,注册APC63.dll VBE6.DLL vba6mtrt.dll vb6debug.dll等文件,因为在程序目录所以不要指定VBE6.DLL路径,如果是原共享目录则需要在注册表中指定VBE6.DLL文件路径0 a& C& }7 n8 ^! R3 J* w) u
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VBA" /F>NUL
4 D5 N0 s, v; S1 V REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VBA" /V "Vbe6DllPath" /T "REG_SZ" /D "%CommonProgramFiles%\Microsoft Shared\VBA\VBA6\VBE6.DLL" /F>NUL; |- i) g: ]1 u$ c0 E
4 K1 Z i# _- B( U {3 k5 rC.如果出现"无法使用用户窗体",请注册系统目录下的FM20.DLL MSSTDFMT.DLL MSSTKPRP.DLL MSXML4.DLL comctl32.ocx控件(可以转移到主目录,并注册)- A ?6 K2 b# l! R. ?" I
! e, j- Y- L4 p0 o+ u' B& F
4 d3 p% A/ |" n5 N
D.有关VBA版本和兼容性问题的说明., o4 P4 C; q/ ?
按照一般原则高版本的兼容低版本,反之,低版本则不能兼容高版本,AUTOCAD2006的VBA使用的版本是6.3.908,实际上使用的OFFICEXP的内核,但OFFICEXP的VBA版本是6.2的,OFFICE2003的则是6.4.9969的。也就是说如果安装了OFFICEXP在安装绿色AUTOCAD2006,那么OFFICEXP的VBA将无法使用,如果安装顺序颠倒,那么AUTOCAD2006的VBA将无法使用;如果用户安装了OFFICE2003后再安装AUTOCAD2006绿色版,那么OFFICE2003的VBA将无法使用,反之则都可以使用。所以解决的方法是使用OFFICE2003的VBA替换AUTOCAD2006的VBA下的三个文件(VBE6.DLL,VBE6EXT.OLB,VBE6INTL.DLL)即可,另外也可以替换掉共享目录的MSO.DLL,MSOINTL.DLL这两个文件(因为这个两个文件所在的目录不一样,所以不存在很大的问题).最好的解决方法是把VBA文件复制到程序目录运行(但OFFICE10文件则必须保留在共享目录)。
7 W" C7 a/ G: r/ u另外:OFFICE的VBA和OFFICE共享文件和AUTOCAD的文件列表不同,见下表:
9 k$ A) V1 O5 Y3 ^6 D! wOFFICE:) `: S; k1 \: o: i' G8 D
VBACV10.DLL1 k" c" u1 X; u0 K' L# a
VBACV10D.DLL: z# ]$ w# p3 o( u
VBACV20.DLL
8 k1 V& F! d: \3 H) I s& yVBE6.DLL
$ `- X7 Z7 i" Z: BVBE6INTL.DLL
' l. q0 o8 R/ Z7 T- ^7 ~( }. `VBE6EXT.OLB8 Z( E; A* {6 {9 E
MSO.DLL Z8 g1 v1 o% _6 r' Y8 `
MSOINTL.DLL
$ \4 s6 ^5 |" ]' U' F2 w, e6 \% c0 H; A
AUTOCAD2006:
" Z6 P& ?$ @1 ^# {" |APC63.dll
2 p } e% ?( |; r, o& LAPC60itl.dll
/ Z3 ]! W1 `4 b' E( slink.exe5 z( I" T' O G6 A
mspdb60.dll( |- u: ~! V" y* c! @/ ?; t% C
vb6debug.dll( B0 `6 x5 t2 b) ]0 L7 l
vba6mtrt.dll
+ i4 g8 a" A; z9 R5 CVBE6.DLL. M1 z: g6 S: F7 e
VBE6INTL.DLL4 k$ P s- m' V, C; _; V! g; a
VBE6EXT.OLB
: P4 t2 S. O6 p a5 e2 GMSO.DLL* h% O) P5 D: O, _# j
MSOINTL.DLL& U; ?6 g# k+ V3 B/ p
1 S- r, S I( i- P1 v9 S
9 ]# N `5 |/ ?, O K; m/ t6.关于授权问题:其实很简单自AUTODESK公司2004年开始都统一使用了同一方式的授权方案,无论是AUTOCAD还是3DSMAX还是其他产品,你只要在目录下能找到AdskScInst.dll文件则可以使用RUNDLL32 AdskScInst.dll,CdaSysInstall命令快速重新授权安装,使用RUNDLL32 AdskScInst.dll,CdaSysUnInstall快速重新卸载,这个东西不知道是哪个牛人发现的.但是值得注意的是在安装前一定要段开网络,否则会出现无法授权的问题乃至启动AUTOCAD后没有任何提示的自动退出,估计是CAD会使用原来的授权文件到服务器上自动查找,如果不对应则无法时其启动.0 a' S& i7 G' l4 [: P- A
9 A. A7 c' [; ]: j8 S2 X0 S+ [0 W' d2 ?
6 y' D! S, r+ e5 a
7.替换相关路径以便不向系统写入文件5 U9 S% P5 ? v' {! F- ~
为了制作真正的绿色软件,一般尽量不向系统盘写入文件,所以这里替换相关路径并替换对应的注册表值。同时也可避免启动CAD时需要指定共享文件路径问题(可以使用我的专业工具一次替换)。7 ]/ v, X8 ^& i8 O4 ^) ?0 I# u
C:\Documents and Settings\TUSER\Local Settings\Application Data\Autodesk\AutoCAD 2006\R16.2\chs-->D:\AutoCAD2006: l, F( A) |0 d/ Y3 z0 r8 n/ U/ U
C:\Documents and Settings\TUSER\Application Data\Autodesk\AutoCAD 2006\R16.2\chs-->D:\AutoCAD2006
R1 T* c. R% _C:\Program Files\Common Files\Autodesk Shared-->D:\AutoCAD2006(同时把Autodesk Shared下的AcDwgFilter和Thumbnail也转移到主目录,需要手动更改授权文件位置到主目录下)
3 X" {5 r2 ]& U: v
1 B% d+ P" j# {% _" K( Y' H8.如果出现快捷方式无效的提示,请按照提示删除搜索到的无效的快捷方式。
) j: Y. ^: H! X, e很奇怪的是AUTOCAD绿化后当运行时绘图仪会对全盘的快捷方式进行扫描,如果找到无效快捷方式则每次启动时都会提示。请按照提示找到相关路径并删除即可。
l3 m# Y5 J* m1 |6 t, x# V$ H! `0 x& m6 ^2 Y% o
9.保存图时启用查看略缩图时非法操作
( T8 n/ @% X5 Y因为没有装DWGVIEVER,所以回出现这个情况。安装时请安装该组件,这个组件没有进行绿化。& v1 E" o6 }$ [- W' z+ V0 K
) z& h1 O" P0 r. J9 _% L
10.可精简的部分:8 y8 c& N7 P- _8 X" m. Q
Help:40MB
2 G8 |& P8 |& @) V0 F$ JSample:40MB
* R3 N h& i& X1 Q! {( T! b% VTextures:10MB
/ t- G7 @& K# m, g) e" N0 P: Vacadauto.chm(vba参考):1mb |
|