找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1558|回复: 19

[求助]:秋枫大侠请进(关于安装程序)!

[复制链接]
发表于 2003-8-30 16:15:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
秋枫大侠:
       你好!
    我根据你教的方法(谈一下XD工具箱安装程序的制作 )制作了一个安装程序。但有点问题,就是:菜单能够加到“Menu Groups”但不能自动加到"Menu Bar",必需要在"Menu Bar"里手工再插入一次才行(在R14和R2000情况都一样),我将安装程序所有原文件发上来了,希望你能抽出宝贵时间帮我看看问题出在哪。谢谢你!
    请下载附件(340K).
(还有个问题,就是如何将制作的安装程序的英文界面改为中文?)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-9-1 21:28:59 | 显示全部楼层
xd工具箱中的加到menu bar 部分的代码是用Autolisp写的。把这个加载的代码加在MNL文件中,在加到MenuGroups的时候,这个MNL文件会自动执行。

这部分代码我原来写得不是很好,后来LUCAS兄(龙龙仔)写了一个比较通用的代码,我就直接采用了。
我改一下,改成适用你的版本:
  1. [FONT=courier new]
  2. ;;; The following code "placemenu" written by LUCAS

  3. (defun pdesign_PlaceMenu (/ n)
  4.   (if (menugroup "pdesign")
  5.     (progn
  6.       (setq n 1)
  7.       (while (< n 24)
  8.         (if (menucmd (strcat "P" (itoa n) ".1=?"))
  9.           (setq n (+ n 1))
  10.           (progn
  11.             (if        (> n 3)
  12.               (setq n (- n 2))
  13.               (setq n 3)
  14.             )                                ;if
  15.             (menucmd (strcat "p" (itoa n) "=+pdesign.pop1"))
  16.             (setq n 25)
  17.           )                                ;progn
  18.         )                                ;if
  19.       )                                        ;while
  20.     )                                        ;progn
  21.   )                                        ;if
  22.   (princ)
  23. )  

  24. (pdesign_PlaceMenu)
[/FONT]
把上述代码存成pdesign.mnl文件,放入你的master中。你也可以参考一下晓东工具箱的xdsoft.mnl文件。

pdesign.mnl文件见附件:
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-9-1 21:37:01 | 显示全部楼层
对于如何改成中界面,这个需要一点工作量。我不知道你用的inno setup是什么版本,不过,在网上应该可以找到它的相应版本的中文语言文件。你先找找看。
如果找不到,你可以用notepad打开程序目录中的default.isl文件。这是一个纯文本文件,里面就是界面的文字资源,你可以自己译成中文。我的pre-1版本的中文文件default.isl可以给你参考,见附件。如果你不是这个版本,可能其中会少一些文字。你自己补上即可。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-9-1 23:30:16 | 显示全部楼层
谢谢,以上的解答很详细,我完全明白了。太谢谢你了!
但现在又有个问题想问下大侠,就是如果要向系统(如:win98.win2000)安装字体。如何让INNO识别FONT目录?不断的麻烦你真是不好意思:)

补充:
1。关于安装字体,后来我用{win}\fonts,在WINME和WIN2000中可以,不知是否适用于其它系统.?
2。如何向CAD中添加支持文件搜索路径?并能在卸载时将新添加的路径移除?(或者通过LISP随菜单一起加载?)我试过加载以下LISP,然后执行(addSupportPath "c:\\myFolder" ),但提示说:错误: no function definition: ADDSUPPORTPATH。

[B]
(defun add_path ( dir / a b c)
(if (and dir
(setq c (getenv "ACAD"))
);and
(progn
;prepare to look for 'dir' within the AutoCAD search path
(setq a (strcase c)
b (strcase dir)
);setq
(if (not (equal ";" (substr a 1 1)))
(setq a (strcat ";" a));add a ";" in front of the string if not already present
);if
(if (not (equal ";" (substr a (strlen a) 1)))
(setq a (strcat a ";")
c (strcat c ";");add a trailing ";" if not already present
);setq
);if
(if (not (wcmatch a (strcat "*;" b ";*"))) ;is 'dir' already present in search path?
(progn
(setq c (strcat c dir));setq
(setenv "ACAD" c)
);progn
(setq c nil)

);if
);progn then
(setq c nil)
);if
c
);defun add_path[/B]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-9-2 20:51:44 | 显示全部楼层
关于安装字体,后来我用{win}\fonts,在WINME和WIN2000中可以,不知是否适用于其它系统.?


这个可以直接使用{fonts} 。你这样做也可以,但可能不适用于其它系统。INNO有直接的常量{fonts}

如何向CAD中添加支持文件搜索路径?并能在卸载时将新添加的路径移除?


这个可以用我提供的那个setreg.exe设置。卸载时提供相同的参数即可。具体做法可以参考晓东工具箱的那个脚本。
比如,你安装在 c:\program files\pdesign,需要添加c:\program files\pdesign\master和 c:\program files\pdesign\lib 两个路径,可以在Run部份写上:
...SetReg.exe; Parameters: "I 14 master;lib pdesign pdesign /silent";...
如果要添加c:\program files\pdesign这个目录本身,可以用.表示,
即“master;.;lib”就可以添加这三个目录。
反安装时,I改成U 即可。你双击setreg.exe可以得到说明。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-9-2 20:56:12 | 显示全部楼层
我试过加载以下LISP,然后执行(addSupportPath "c:\\myFolder" ),但提示说:错误: no function definition: ADDSUPPORTPATH。


AddSupportPath是自定义函数。

  1. [FONT=courier new]
  2. ;;;AddSupportPath
  3. ;;;添加文件夹到AutoCAD支持搜索路径中的指定位置
  4. ;;;参数
  5. ;;;文件夹路径及插入的位置(0时插入前端)
  6. ;;;示例
  7. ;;;(addSupportPath "c:\\myFolder" 2)
  8. ;;;注意
  9. ;;;位置参数为空时将文件夹添加到路径最后。位置参数为0时将文件夹添加到路径最前端。
  10. (defun addSupportPath (dir pos / tmp c)
  11.   (setq        tmp ""
  12.         c   -1
  13.   )
  14.   (if (not pos)
  15.     (setq tmp (strcat (getenv "ACAD") ";" dir))
  16.     (mapcar '(lambda (x)
  17.                (setq tmp (if (= (setq c (1+ c)) pos)
  18.                            (strcat tmp ";" dir ";" x)
  19.                            (strcat tmp ";" x)
  20.                          )
  21.                )
  22.              )
  23.             (parse (getenv "ACAD") ";")
  24.     )
  25.   )
  26.   (setenv "ACAD" tmp)
  27.   (princ)
  28. )

  29. ;;;removeSupportPath
  30. ;;;从AutoCAD支持搜索路径中移去指定文件夹
  31. ;;;参数
  32. ;;;所要移去的文件夹
  33. ;;;示例
  34. ;;;(removeSupportPath "c:\myFolder")
  35. (defun removeSupportPath (dir / tmp)
  36.   (setq tmp "")
  37.   (mapcar '(lambda (x)
  38.              (if (/= (strcase x) (strcase dir))
  39.                (setq tmp (strcat tmp x ";"))
  40.              )
  41.            )
  42.           (parse (getenv "ACAD"))
  43.   )
  44.   (setenv "ACAD" (substr tmp 1 (1- (strlen tmp))))
  45.   (princ)
  46. )
  47. [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-9-2 21:24:35 | 显示全部楼层
秋枫大哥,我只能说:“对你的感激之情有如滔滔江水、源源不绝”了。
热情,讲解详细,很适合我这种彩鸟。谢谢!谢谢!

第二天又补充疑问:
    1。能否实现在卸载时也能检测CAD是否在运行,如果在运行就提示先退出CAD?(就像在安装时一样)
    2。不知为什么我在WINME的系统里删除自动加载时,提示“设置完成”,但起动CAD后还是调用我的菜单(如果卸载整个系统就能正常取消自动加载,无异常)。但是在WIN2000系统里就很正常。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-9-3 19:22:17 | 显示全部楼层
卸载时判断需要程序代码。INNOSETUP不支持卸载时的脚本代码。所以你说的这个要求我想可能用Innosetup无法做到,需要更强大的安装制作程序如Install Shield等等才能实现。目前只能把那个TestAcad.exe放在InstallRun部分,提示一下。但这个程序不能中止卸载程序的运行。

我的XD工具箱安装程序没有在Windows ME中测试过。你说的这个情况我也不明白。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-9-3 19:48:22 | 显示全部楼层
inno setup的中文语言版本在哪儿可以找到?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-9-3 20:49:49 | 显示全部楼层
google上搜索。
可能没有汉化的版本,但编译出来的安装文件可以是中文的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-9-4 00:38:34 | 显示全部楼层
软件没有中文版,但有汉化的版本(我是用汉化的4.0.5),但找不到中文语言文件,用秋枫大哥在第三帖中提供的就可以了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-9-5 15:01:29 | 显示全部楼层
请问inno setup 是否可以做成的那种安装程序样式  ,程序在安装时要求那种输入注册码才可继续安装的那种形式?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-9-6 18:12:27 | 显示全部楼层
dys800113 在 2003年09月06日 10:08 谈到:
请问inno setup 是否可以做成的那种安装程序样式 ,程序在安装时要求那种输入注册码才可继续安装的那种形式?


可以。你可以参考一下其自带的样例文件。需要使用Pascal Script写代码判断注册码是否正确。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-9-6 22:11:17 | 显示全部楼层
最初由 秋枫 发布
[B]

可以。你可以参考一下其自带的样... [/B]

我是说它们那种机器注册码的怎么写出来的?
即根据硬件来确定注册码!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-9-7 08:08:46 | 显示全部楼层
根据硬件来确定注册码,使用纯的Pascal Script是有难度的。

但是Inno Setup提供了调用DLL库的方法,你只需要找到一个有查硬盘序列号之类功能的免费DLL就可以了。

http://www.mjtd.com/function/list.asp?id=370
提供了一个用VB实现的例子。这里是用的系统自带的Kernel32.dll。你可以试用PascalScript改写一下。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-5-10 13:10 , Processed in 0.516534 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表