精华内容
下载资源
问答
  • 使用innosetup进行打包,涉及到需要编写一些Pascal脚本,所以了解了下Pascal的相关语法。 这里主要介绍如何搭建一个简单的Pascal开发环境。 一、Free Pascal Free Pascal(全称 FPK Pascal)是一个32位和64位专业...

    使用innosetup进行打包,涉及到需要编写一些Pascal脚本,所以了解了下Pascal的相关语法。

    这里主要介绍如何搭建一个简单的Pascal开发环境。

    一、Free Pascal

    Free Pascal(全称 FPK Pascal)是一个32位和64位专业Pascal编译器。它可以在多个处理器架构中运行:Intel x86,AMD64/x86-64,PowerPC32/64, SPARC和 ARM。

    它支持的操作系统有Linux,FreeBSD,Haiku,Mac OS X/ iOS/Darwin,DOS,Windows32/64/CE,OS/2,MorphOS,Nintendo GBA,Nintendo DS和 Nintendo Wii。

    下载地址:ftp://mirror.freemirror.org/pub/fpc/dist/3.2.2/i386-win32/fpc-3.2.2.i386-win32.exe

    按照默认进行安装即可。

    二、编译测试代码

    创建test.pas源码文件,写入如下内容:

    program Hello;                      
    begin  
    	writeln('Hello world!');
    	readln;
    end.
    

    然后在cmd中进入该文件所在目录

    cd /d D:\test\xxx
    

    输入编译命令

    fpc test.pas
    

    如下生成了test.exe:

    在这里插入图片描述

    运行test.exe,效果如下:

    在这里插入图片描述

    也有一些在线的Pascal开发工具,如:https://c.runoob.com/compile/73

    Pascal 入门教程:https://www.jc2182.com/pascal/pascal-jiaocheng.html



    若对你有帮助,欢迎点赞、收藏、评论,你的支持就是我的最大动力!!!

    同时,阿超为大家准备了丰富的学习资料,欢迎关注公众号“超哥学编程”,即可领取。

    在这里插入图片描述

    展开全文
  • Object Pascal脚本控件

    2012-08-16 08:34:13
    嘿嘿,不要以为Pascal语言就没有脚本了。。。全新的RemObjects Pascal Script for Delphi诞生了,这个控件组支持编译Object Pascal语言脚本,还支持运行,不可多得哦!
  • Pascal 脚本解释器

    2006-02-23 15:31:04
    多达57个内置单元,内置非常多函数/类的Pascal脚本解释器。
  • Pascal 脚本可以包含单独的在适当时间调用的事件函数。 安装事件函数 安装支持下列事件函数: function InitializeSetup (): Boolean; 在安装程序初始化时调用,返回 False 中断安装,返回 True 反之。 ...

    Pascal 脚本可以包含单独的在适当时间调用的事件函数。

    安装事件函数

    安装支持下列事件函数:

    function InitializeSetup (): Boolean;

    在安装程序初始化时调用,返回 False 中断安装,返回 True 反之。

    procedure InitializeWizard ();

    使用这个事件函数启动时改变向导或向导页。你不能在它触发之后使用 InitializeSetup 事件函数,向导窗体不退出。

    procedure DeinitializeSetup ();

    仅在安装程序终止前调用。注意这个函数在即使用户在任何内容安装之前退出安装程序时也会调用。

    procedure CurStepChanged (CurStep: TSetupStep );

    你可以用这个事件函数执行你自己的预安装和安装后任务。

    在实际安装开始之前用 CurStep=ssInstall 调用,或在实际安装完成之后用 CurStep=ssPostInstall 调用,或在安装程序终止之前和安装完成之后用 CurStep=ssDone 调用。

    function NextButtonClick ( CurPageID : Integer): Boolean;

    当用户单击下一步按钮时调用。如果你返回 True,向导将移到下一页;如果返回 False,它仍保留在当前页 (用 CurPageID 指定)。

    注意,这个函数在静寂安装时也会调用,即使没有下一步按钮让用户单击。安装程序会模拟单击下一步按钮。在静寂安装中,如果你的 NextButtonClick 函数在安装之前返回 False,安装程序将自动退出。

    function BackButtonClick ( CurPageID : Integer): Boolean;

    当用户单击上一步按钮时调用。如果你返回 True,向导将移到上一页;如果返回 False,它仍保留在当前页 (用 CurPageID 指定)。

    procedure CancelButtonClick ( CurPageID : Integer; var Cancel, Confirm: Boolean);

    当用户单击取消按钮或单击窗口中的关闭按钮时调用。 Cancel 参数指定是否是一般的取消进程;默认为 True。 Confirm 参数指定是否显示“退出安装程序吗?”的消息框;一般它默认为 True。如果 Cancel 设为 False,那么 Confirm 值被忽略。

    function ShouldSkipPage ( PageID : Integer): Boolean;

    向导调用这个事件函数确定是否在所有页或不在一个特殊页 (用 PageID 指定) 显示。如果返回 True,将跳过该页;如果你返回 False,该页被显示。

    注意: 这个事件函数不被 wpWelcome、wpPreparing 和 wpInstalling 页调用,还有安装程序已经确定要跳过的页也不会调用 (例如,没有包含组件安装程序的 wpSelectComponents)。

    procedure CurPageChanged ( CurPageID : Integer);

    在新向导页 (用 CurPageID 指定) 显示后调用。

    function CheckPassword (Password: String): Boolean;

    如果安装程序在 Pascal 脚本中发现 CheckPassword 事件函数,它自动显示密码页并调用 CheckPassword 检查密码。返回 True 表示接受密码,返回 False 拒绝。

    要避免在编译的安装程序的 [Code] 段内部贮存真实的密码,你应该用其它无用的信息进行比较: 计算你自己密码的 MD5 的无用信息,然后编译到 GetMD5OfString (Password) 。通过这种方法保护实际密码值。

    注意: 如果你已经用 CheckPassword 事件函数,并且你的用户带“/PASSWORD=”和“/SILENT” 安装命令行参数 运行安装程序,你的 CheckPassword 函数将在其它事件函数调用之前调用,包括 InitializeSetup

    function NeedRestart (): Boolean;

    返回 True 告诉安装程序提示用户在安装结束时重新启动系统,False 则反之。

    function UpdateReadyMemo (Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;

    如果安装程序在 Pascal 脚本中发现 UpdateReadyMemo 事件函数,当 准备安装 向导页变为激活页时自动调用。它返回的文字显示在 准备安装 向导页的备注注册中,该文字是用 NewLine 参数 换行 的字符。参数空间包含一个带安全可靠的字符。其它参数将包含安装程序用于设置段的字符 (可能是空的)。 MemoDirInfo 参数包含象 选择目录 段的字符。

    procedure RegisterPreviousData (PreviousDataKey: Integer);

    要在自定义向导页中贮存用户输入的设置,在 Pascal 脚本中放入一个 RegisterPreviousData 事件函数,并调用 SetPreviousData(PreviousDataKey, ...) 替换它,每个设置一次。

    function CheckSerial (Serial: String): Boolean;

    如果安装程序在 Pascal 脚本中发现 CheckSerial 事件函数,将在用户信息向导页中自动出现一个序列号对象 (必须在你的 [Setup] 段中使用 UserInfoPage=yes !)。返回 True 表示接受序列号,返回 False 拒绝。当使用序列号时,请一定要记住,这个软件无加密可言,况且 Inno Setup 源代码是免费获取的,它对于有经验的人从安装程序中删除序列号保护并不是很困难的事。使用这个只是方便用户在你的应用程序中仔细检查输入的序列号 (贮存在 {userinfoserial} 常量)。

    function GetCustomSetupExitCode : Integer;

    返回一个非零值命令安装程序返回一个自定义退出代码。这个函数只在安装程序运行完成并且退出代码已是零时调用。同时请查阅 安装退出代码

    function PrepareToInstall (var NeedsRestart: Boolean): String;

    Return a non empty string to instruct Setup to stop at the 正在准备安装 向导页,显示返回的字符串作为错误信息。 Set NeedsRestart to True if a restart is needed. This function is only called if Setup didn't already determine it can't continue.

    卸载事件函数

    卸载支持下列函数:

    function InitializeUninstall (): Boolean;

    返回 False 中断卸载,True 则反之。

    procedure InitializeUninstallProgressForm ();

    Use this event function to make changes to the progress form at startup. You can't use the InitializeUninstall event function for this since at the time it is triggered, the progress form does not yet exist.

    procedure DeinitializeUninstall ();

    procedure CurUninstallStepChanged (CurUninstallStep: TUninstallStep );

    function UninstallNeedRestart (): Boolean;

    返回 True 命令卸载程序提示用户在卸载完成后重新启动系统,False 则反之。

    常量

    这里是这些函数使用的常量列表:

    • CurStep 值
      ssInstall, ssPostInstall, ssDone
    • CurUninstallStep 值
      usAppMutexCheck, usUninstall, usPostUninstall, usDone
    • 预定义 向导页 PageID
      wpWelcome, wpLicense, wpPassword, wpInfoBefore, wpUserInfo, wpSelectDir, wpSelectComponents, wpSelectProgramGroup, wpSelectTasks, wpReady, wpPreparing, wpInstalling, wpInfoAfter, wpFinished

    这些函数不需要在 Pascal 脚本中出现。

    展开全文
  • Inno Setup入门(十二)——Pascal脚本(1) 事件函数(1) Inno Setup支持以下函数和过程。 function InitializeSetup(): Boolean; 该函数在安装程序初始化时调用,返回False 将中断安装,True则继续安装,测试代码...

    Inno Setup入门(十二)——Pascal脚本(1)

    事件函数(1)
    Inno Setup支持以下函数和过程。
    function InitializeSetup(): Boolean;
    该函数在安装程序初始化时调用,返回False 将中断安装,True则继续安装,测试代码如下:

    function InitializeSetup(): Boolean;
    begin
    Result := MsgBox('安装程序正在初始化,你确定要安装吗?', mbConfirmation, MB_YESNO) = idYes;
    if Result = False then
    MsgBox('你放弃了安装,程序直接退出', mbInformation, MB_OK);
    end;
    

    procedure InitializeWizard();
    该过程在开始的时候改变向导或者向导页,不要指望使用InitializeSetup函数实现改变向导页的功能,因为InitializeSetup函数触发时向导窗口并不存在。
    procedure DeinitializeSetup();
    该过程在安装终止时被调用,注意及时在用户没有安装任何文件之前退出也会被调用。测试代码如下:

    procedure DeinitializeSetup();
    begin
    msgbox('DeinitializeSetup is called',mbInformation, MB_OK);
    end;
    

    procedure CurStepChanged(CurStep: TSetupStep);

    该过程提供用户完成预安装和安装之后的任务,更多的是提供了安装过程中的状态。参数CurStep=ssInstall是在程序实际安装前(所有的路径等都配置好之后准备写入文件钱),CurStep=ssPostInstall是实际安装完成后,而CurStep=ssDone是在一次成功的安装完成后、安装程序终止前(即点击finish按钮后执行)。测试代码如下:

    procedure CurStepChanged(CurStep: TSetupStep);
    begin
    if CurStep=ssinstall then
    MsgBox('准备写入文件了', mbInformation, MB_OK);
    if CurStep=ssPostinstall then
    MsgBox('文件复制完成', mbInformation, MB_OK);
    if CurStep=ssDone then
    MsgBox('软件成功安装', mbInformation, MB_OK);
    end;
    

    三个步骤的截图如下:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    function NextButtonClick(CurPageID: Integer): Boolean;

    当用户单击下一步按钮时调用。如果返回True,向导将移到下一页;如果返回False,它仍保留在当前页。测试代码如下:

    function NextButtonClick(CurPageID: Integer): Boolean;
    begin
    Result := MsgBox('到下一页去吗?', mbConfirmation, MB_YESNO) = idYes;
    end;
    

    截图如下:
    在这里插入图片描述
    function BackButtonClick(CurPageID: Integer): Boolean;

    和前面的NextButtonClick函数相反,当用户单击返回按钮时调用。如果返回True,向导将移到前;如果返回False,它仍保留在当前页,测试代码略。

    procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);

    当用户单击取消按钮或单击窗口中的关闭按钮时调用。Cancel参数指定取消进程是否该发生;默认为True。Confirm参数指定是否显示“退出安装程序吗?”的消息框;默认为True。如果Cancel设为False,那么Confirm的值将被忽略。测试代码如下:

    procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
    begin
    cancel:=False;
    end;
    

    和你所预料的一样,本段代码将会导致Cancel按钮失效,即逼迫用户完成安装或者采用非正常方式终止安装程序。

    procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
    begin
    Confirm:=false;
    end;
    

    而上面的这段代码将会在用户点击Cancel按钮之后直接退出,不需要做进一步的确认。

    function ShouldSkipPage(PageID: Integer): Boolean;

    向导调用这个事件函数确定是否在所有页或不在一个特殊页 (用PageID指定) 显示。如果返回True,将跳过该页;如果你返回False,该页被显示。注意:这个事件函数不被wpWelcome、wpPreparing和wpInstalling 页调用,还有安装程序已经确定要跳过的页也不会调用 (例如,没有包含组件安装程序的wpSelectComponents)。测试代码如下:

    function ShouldSkipPage(PageID: Integer): Boolean;
    begin
    if PageID=wpSelectDir then
    Result:=True;
    end;
    

    本段代码将会使得安装程序跳过选择安装目录的页面,即如下页面是不会被显示的:
    在这里插入图片描述
    可用的PageID有: wpLicense, wpPassword, wpInfoBefore, wpUserInfo, wpSelectDir, wpSelectComponents, wpSelectProgramGroup, wpSelectTasks, wpReady, wpInfoAfter, wpFinished

    procedure CurPageChanged(CurPageID: Integer);

    在新向导页 (由CurPageID 指定)显示后调用。测试代码如下:

    procedure CurPageChanged(CurPageID: Integer);
    begin
    Msgbox('ha,new page!',mbInformation, MB_OK);
    end;
    

    该段代码将会导致每出现一个新的一面的时候就会弹出一个消息框。

    展开全文
  • 事件函数(2) ...如果安装程序在Pascal脚本中发现该函数,它自动显示密码页并调用CheckPassword检查密码。返回True表示接受密码,返回False拒绝。测试代码如下: function CheckPassword(Password...

    事件函数(2)

    function CheckPassword(Password: String): Boolean;

    如果安装程序在Pascal 脚本中发现该函数,它自动显示密码页并调用CheckPassword 检查密码。返回True 表示接受密码,返回False 拒绝。测试代码如下:

    function CheckPassword(Password: String): Boolean;

    begin

           if Password='castor' then

                  result:=true;

    end;

           在安装过程中将会出现询问安装密码的页面,如果输入错误将会出现下面的对话框:

    Inno Setup入门(十三)——Pascal脚本(2) - Castor - 趁年轻,多折腾~~

    为了避免在 [Code] 段内部贮存真实的密码,最好使用其他的信息进行比较,例如使用GetMD5OfString(Password)计算实际密码的MD5值保护实际密码。

    function NeedRestart(): Boolean;

           如果返回True,安装程序在安装结束时提示用户重启系统,False则不提示。测试代码如下:

     

    function NeedRestart(): Boolean;

    begin

           result:=True;

    end;

     

    在安装完成之后的finish页面,将会出现如下的选项:

    Inno Setup入门(十三)——Pascal脚本(2) - Castor - 趁年轻,多折腾~~

    function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;

           如果脚本中存在该函数,则在Ready to Install页面变为活动页的时候自动调用该函数,该函数返回一段文本,该文本显示于Ready to Install页面中的设置备注中,并且该文本将用NewLine参数分割为一个单独的多行字符串,参数Space指代空格,测试是六个,其它参数将包含安装程序用于设置段的字符 (可能是空的)。例如MemoDirInfo 参数包含选择目录段的字符串。测试代码如下:

     

    function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoComponentsInfo, MemoTasksInfo: String): String;

    var

      res: String;

    begin

           res:='UpdateReadyMemo Function is here'+NewLine+'This is the Second Line';

           res:=res+Space+'And with Six Spaces';

           res:=res+NewLine+'MemoUserInfoInfo'+MemoUserInfoInfo;

           res:=res+NewLine+'MemoDirInfo'+MemoDirInfo;

           res:=res+NewLine+'MemoTypeInfo'+MemoTypeInfo; 

           res:=res+NewLine+'MemoComponentsInfo'+MemoComponentsInfo;

           res:=res+NewLine+'MemoComponentsInfo'+MemoComponentsInfo;

           res:=res+NewLine+'MemoTasksInfo'+MemoTasksInfo;

           Result:=res;

    end;

     

    运行后在安装前会出现确认页面:

    Inno Setup入门(十三)——Pascal脚本(2) - Castor - 趁年轻,多折腾~~

     

    标记黄色文字下面是各个参数的内容。

    procedure RegisterPreviousData(PreviousDataKey: Integer);

    本过程实现在自定义向导页中贮存用户输入的设置,在脚本中放入本函数,并调用SetPreviousData(PreviousDataKey, ...) 替换它,每次设置一个。

    function CheckSerial(Serial: String): Boolean;

    该函数将在用户信息向导页中自动出现一个序列号对象 (前提是[Setup] 段中使用UserInfoPage=yes)。返回True 表示接受序列号,返回False 拒绝。注意:当使用序列号时,该软件并没有被加密,而且Inno Setup 源代码是免费获取的,有经验的人从安装程序中删除序列号保护并不是很困难的事。本函数只是方便用户在你的应用程序中仔细检查输入的序列号 (贮存在{userinfoserial} 常量)。测试代码如下:

     

    function CheckSerial(Serial: String): Boolean;

    begin

           if Serial='ABCDEF-1234567890' then

                  Result:=True;

    end;

     

           在安装过程中将会出现一个页面,如下:

    Inno Setup入门(十三)——Pascal脚本(2) - Castor - 趁年轻,多折腾~~

        如果Serial Number不正确,Next按钮将会无效,只有正确的序列号才能使得Next按钮有效,再次说明:不要指望使用这种方法保护你的软件。

    function GetCustomSetupExitCode: Integer;

    返回一个非零值,命令安装程序返回一个自定义退出代码,本函数只在安装程序运行完成并且退出代码已是零时才调用。常见的退出代码如下:

    代码

    说明

    0

    安装程序成功完成

    1

    安装程序初始化失败

    2

    用户在实际安装前点击取消,或者在开始的“这将安装……”时选择否

    3

    当准备到下一个安装阶段的时候发生致命错误,只有在比较极端的情况下发生这种错误,例如内存耗尽。

    4

    实际安装过程中发生致命错误

    5

    用户在实际安装过程中点击取消或者在“终止-重试-忽略”对话框中点击了终止

    6

    安装程序被调试器强制终止

    7

    准备安装阶段发现安装无法进行

    8

    准备安装阶段发现安装无法进行,并且系统需要重启来解决问题

    例如在用Inno Setup调试编译后的安装文件时,按下Ctrl+F2后,下面的调试输出将会提示如下:

    Inno Setup入门(十三)——Pascal脚本(2) - Castor - 趁年轻,多折腾~~

    退出代码为6,可见安装程序被调试器强制终止。

    function PrepareToInstall(var NeedsRestart: Boolean): String;

           在与安装阶段返回一个非空字符串命令安装程序停止,该字符串将会作为错误消息,设置NeedsRestartTrue将要求用户重启系统,该函数只在安装程序发现不能继续下去的时候才被调用。

     
     

     

    转自:http://www.360doc.com/content/13/0327/14/4221543_274246727.shtml

    转载于:https://www.cnblogs.com/xiurui12345/archive/2013/05/24/3096579.html

    展开全文
  • 完整开发的基于Pascal脚本的高性能Web服务器... 首个全功能Pascal脚本Web服务器2020年再次更新! 更多详细内容请参考History.txt,或者参考官方网站www.moonserver.cn 也希望更多大牛前来交流、拍砖、打脸!!! ...
  • 如果安装程序在Pascal 脚本中发现该函数,它自动显示密码页并调用CheckPassword 检查密码。返回True 表示接受密码,返回False 拒绝。测试代码如下: function CheckPassword(Password: String): Boolean;
  • 事件函数(1) Inno Setup支持以下函数和过程。 function InitializeSetup(): Boolean; 该函数在安装程序初始化时调用,返回False 将中断安装,True则继续安装,测试代码如下: function InitializeSetup(): Boolean...
  • 本文转载自:... 事件函数(2) function CheckPassword(Password: String): Boolean; 如果安装程序在Pascal脚本中发现该函数,它自动显示密码页并调用CheckPassword检查密码。返回True表示接受密码...
  • Innerfuse Pascal Script 3 是一款免费的用Delphi编写的脚本引擎,IFPS允许你在程序运行时使用Object Pascal语言,是一套能够编译到exe文件的单元,使用脚本引擎的好处:能够让你的程序让用户的自定义而不需要重新...
  • Innerfuse Pascal Script 3 是一款免费的用Delphi编写的脚本引擎,IFPS允许你在程序运行时使用Object Pascal语言,是一套能够编译到exe文件的单元,使用脚本引擎的好处:能够让你的程序让用户的自定义而不需要重新...
  • RemObjects Pascal Script 3 是一款免费的用Delphi编写的脚本引擎,允许你在程序运行时使用Object Pascal语言,是一套能够编译到exe文件的单元,使用脚本引擎的好处:能够让你的程序让用户的自定义而不需要重新编译...
  • 下载后得到 pwp.rar 文件, 解压... 设计一下的脚本, 测试是否可以运行。 uses sysutils; begin     write('hello word!'); end. %> 放到 pwp\html 目录下,并命名为 test1.pwp 访问
  • ![图片说明](https://img-ask.csdn.net/upload/201703/27/1490604706_401455.png) 请问这是什么问题呢

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,168
精华内容 6,467
关键字:

pascal脚本