找回密码
 注册
Simdroid-非首页
查看: 270|回复: 4

使用Inno Setup进行Matlab程序打包

[复制链接]
发表于 2007-7-6 23:17:33 | 显示全部楼层 |阅读模式 来自 北京西城
使用Inno Setup进行Matlab程序打包
WaitingForMe(邓长顺)
Email:
heroaq_2002@163.com

Web-Log: http://waitingforme.yculblog.com
http://waitingforme.simwe.com


Inno Setup1997年由Jordan Russell(http://www.jrsoftware.org/)开发的一款安装程序制作软件,经过几年的发展,此软件已经广泛的应用于一些商业安装程序制作当中。使用Inno Setup制作的安装软件可以与大型的安装制作软件媲美,其Pascal脚本支持功能,可以使得安装更加灵活。

Matlab程序打包


Matlab
程序往往是一些*.m的脚本或者经过简单编译的*.pp码文件,对于生成的简单的软件包的安装,一般只需要直接拷贝到指定的目录下面,然后在Matlab中添加路径甚至不需要将路径添加到Matlab的路径当中,而只需要工作的时候进入该目录即可。当要求更多的特性的时候,这种简单安装已经不能满足要求。例如您想做成一个正式的Matlab软件产品,给用户一个非常正式的印象,而不是简单的拷贝就完成了您的Matlab程序包的安装,给用户一个简陋的第一印象。又例如您需要完成一些复杂的安装流程,比如需要判断Matlab是否具备了软件所用到的工具箱是否安装,再根据这些信息进行进行软件包的安装;再例如在完成所有的文件拷贝以后,需要进行一些繁琐的设置后,软件才能够正常的运行,而这些设置你也不想动用其他的编程工具,而仅仅通用使用Matlab代码来完成。通过Inno Setup软件就可以制作打包这样的复杂的安装流程。Inno Setup利用ISS脚本 (Inno Setup Script) 和其支持的Pascal脚本来完成这些复杂的任务的。脚本分为不同的字段,每个字段中包含多个不同的参数,这些段和参数的详细说明可以参看Inno Setup的帮助文档。本文在后面给出了一个Matlab安装打包ISS脚本模板。模板中的脚本主要完成文件的考本,并在完成文件拷贝以后运行Matlab程序setup.m(或者setup.p),所以Matlab程序员只需要根据提示修改模板中对应的项目,并可以使用M语言写在完成安装以后的一些动作,可以完成大多数的需要。如果需要更复杂的功能,您可以学习Inno Setup的帮助以及参考这个模板来完成。

评分

1

查看全部评分

 楼主| 发表于 2007-7-6 23:18:42 | 显示全部楼层 来自 北京西城
Simdroid开发平台
Matlab程序打包模板

       这里给出了一个Matlab程序打包的模板和其详细的注释。此安装流程完成如下的一些特殊功能:
1、
自动查找%MaltlabRoot%\work目录的位置

2、
在完成文件拷贝后运行setup.m文件定义的Matlab安装程序进行配置

这样的安装流程可以满足大多数Matlab程序的安装打包问题。

  1. ;================================
  2. ; -- Matlab 程序安装打包ISS脚本模板--
  3. ;================================
  4. ;声明
  5. ;    此模版是由WaitingForMe为Matlab爱好者开发的Matlab程序安装打包模板,您可以
  6. ; 任意修改或者传播此模板。此模版可以用于商业用途或者其他用途。但是如果您使用了该
  7. ; 模版,请务必保留模版的声明和作者的信息和以下得Email联系方式以及网站地址,并且
  8. ; 您不得声明该模版的原创性,在您的软件说明文档的中应当包含使用了此模板的来源信
  9. ; 息。
  10. ;
  11. ; Copyright (C) 2007 WaitingForMe(邓长顺). All rights reserved.
  12. ; Email: heroaq_2002@163.com
  13. ; Web-Log: http://waitingforme.yculblog.com
  14. ;
  15. ;功能说明
  16. ;    模板主要定义了文件的拷贝,增加了Matlab程序的安装位置和默认工作目
  17. ;录%MATLABROOT%\work\的自动查找。在您的Matlab程序中,请务必包含一个在Matlab
  18. ;窗口中可以执行的setup指令(setup.m或者setup.p等等),在完成文件拷贝以后,安装
  19. ;程序会启动Matlab并运行这个setup指令。请替换模板中将带尖括号“<>”的属性作相应
  20. ;的替换。

  21. [Setup]
  22. AppName=<软件名称>
  23. AppVerName=<软件带版本的名称>
  24. DefaultDirName={code:MatlabRoot}\work\<软件目录名称>
  25. DefaultGroupName=<程序组名称>
  26. ;LicenseFile=licence.txt
  27. Compression=lzma
  28. SolidCompression=true
  29. OutputDir=<编译后的exe文件输出目录位置>
  30. ;Password=<软件安装密码>
  31. LanguageDetectionMethod=locale

  32. [Files]
  33. ;请不要修改setup指令的安装位置
  34. Source: setup.m; DestDir: {app};
  35. <请在下面添加其他需要拷贝的文件>

  36. [Code]
  37. //请不要修改[Code]字段的代码
  38. var
  39.   FinishedInstall : Boolean;

  40. function GetMatlabRoot() : String;
  41. //获取Matlab的根路径
  42. var
  43.   sPath : String;
  44.   sMatlabRoot : String;
  45. begin
  46.   sPath := FileSearch('matlab.exe', GetEnv('Path'));
  47.   sMatlabRoot := Copy(sPath,1,Length(sPath)-Length('bin\win32\matlab.exe'))
  48.   //MsgBox(sMatlabRoot, mbInformation, MB_OK);
  49.   Result := sMatlabRoot;
  50. end;

  51. function MatlabRoot(Param: String): String;
  52. //定义使用” code:” 修饰的MatlabRoot常量
  53. begin
  54.   Result := GetMatlabRoot();
  55. end;

  56. procedure DeinitializeSetup();
  57. //常规安装以后,执行Matlab的安装程序setup
  58. var
  59.   FileName: String;
  60.   ResultCode: Integer;
  61. begin
  62.   //如果安装完成,就执行指定的Matlab指令setup
  63.   if FinishedInstall then begin
  64.       FileName :=GetMatlabRoot() + 'bin\win32\matlab.exe';
  65.       if not Exec(FileName, '-r setup', ExpandConstant('{app}'), SW_SHOWNORMAL, ewNoWait, ResultCode) then
  66.         MsgBox('DeinitializeSetup:' #13#13 'Execution of ''' + FileName + ''' failed. ' + SysErrorMessage(ResultCode) + '.', mbError, MB_OK);
  67.   end;
  68. end;

  69. procedure CurStepChanged(CurStep: TSetupStep);
  70. //安装完成
  71. begin
  72.   if CurStep = ssPostInstall then
  73.     FinishedInstall := True;
  74. end;
复制代码
回复 不支持

使用道具 举报

 楼主| 发表于 2007-7-6 23:20:29 | 显示全部楼层 来自 北京西城
使用免费软件Inno Setup进行Matlab程序打包.pdf

本帖子中包含更多资源

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

×
回复 不支持

使用道具 举报

发表于 2007-7-7 10:09:29 | 显示全部楼层 来自 四川大学
貌似很不错的样子,请问经Inno Setup打包的程序和matlab自身打包的程序,那个的执行效率要高一些?
回复 不支持

使用道具 举报

发表于 2007-7-7 19:14:44 | 显示全部楼层 来自 新加坡
Inno Setup打包是用来方便程序发布的吧。和执行效率可能没有关系。

谢谢WaitingForMe分享!
回复 不支持

使用道具 举报

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

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-5-23 23:41 , Processed in 0.041529 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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