问题标签 [pascalscript]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
delphi - 如何将接口对象传递给 Pascal 脚本函数调用?
德尔福部分:
我有一个带有该事件的类,并且从该事件中我需要调用一个将接口对象传递给它的过程。它在 Delphi 中运行良好,但我在 Pascal 脚本中声明它时遇到问题。
到后台 -IGPGraphics
接口是其中的一部分,Delphi GDI+ library
并且没有方法定义如下:
以下只是我需要在 Pascal 脚本中执行的简化 Delphi 伪代码:
Pascal 脚本编译部分:
我的目标是让带有事件的类在 Pascal 脚本中可用,并且需要将该接口对象传递给该过程,就像上面一样,所以我首先尝试在编译时声明这个(但我什至不确定是否这是这样做的正确方法):
Pascal 脚本运行时部分:
我绝对迷失的地方是运行时部分。我不知道如何从调用堆栈中获取接口对象并将其传递给我的 RenderObject 过程:
问题是:
谁能建议我如何为这种情况正确定义编译和运行时部分,或者通过某种方式传递接口对象来纠正我?
PS 对那个 Inno-Setup 标签感到抱歉,但也许那里有人试图以这种方式自定义 InnoSetup。
非常感谢!
constants - 如何将 Pascal Inno Setup ExpandConstant 与字符串变量一起使用?
对于安装程序,我需要创建文件夹链接。
为此,我使用“[Dirs]”部分创建目标文件夹。没问题。
然后,在“[代码]”部分,使用函数“CurStepChanged(ssPostInstall)”,我读取了一个临时安装文件,以获取要创建的文件夹链接列表。文件的每一行都包含一个目标文件夹路径名和一个链接路径名... 使用 Inno Setup 常量。每个值都被读取并存储为“字符串”变量。
当我将这些字符串变量传递给“ExpandConstant(lLinkTarg)”时,任何常量名称都会出现内部运行时错误。
如果我将字符串内容复制粘贴到 'ExpandConstant('{#gRepNasSvg}\UT{code:getProjetc}\Docs')' 调用,那么它可以工作......
关于我做错了什么的任何提示?
提前致谢。L.
有些东西我已经忘记了。
链接描述变量的格式为 '{#gRepNasSvg}\UT{code:getProjetc}\Docs'...
inno-setup - Innoscript - 获取当前用户个人资料信息
我正在尝试使用 innoscript 创建一个应用程序。我需要在 HKLM 中创建/编辑注册表信息值。因此我需要管理员权限来安装应用程序。
但是,如果非管理员用户尝试安装应用程序,innoscript 需要管理员用户密码,一旦他们输入管理员用户密码,每当我在安装脚本(比如 HKCU)中查询注册表时,它都会从管理员用户那里检索信息。但我想从当前登录的用户那里获取信息。结果,程序安装在管理员用户位置而不是当前登录用户帐户下。
当应用程序以管理员身份运行或提示管理员用户启动时,有没有办法从 innoscript 获取当前登录用户用户和用户应用程序数据位置。
等待你的更新。
谢谢,
dll - 如何在 Inno Setup 的安装和卸载时使用具有依赖关系的 DLL?
卸载应用程序时,我想在我的 .iss 中导入两个 dll。我找不到办法做到这一点。
adcore.dll
我也想在程序中导入Uninstalled
。它失败了,如下所示;
这没用。
Installed()
并且Uninstalled()
在 中StatisticInstallInfo.dll
,这取决于adcore.dll
。
decimal - 如何在 Inno Setup 中定义 Single-type 变量中的小数位数?
我需要计算我的设置中所有组件的总大小。由于一些自定义代码,我不能为此使用 Inno Setup 的内部功能。
问题是组件共享大量文件。所以我为每个组件定义了一个字符串,其中包含他们使用的文件的变量。然后,我将这些字符串添加到单个字符串中,如果在该字符串中找到某个变量,则将文件的大小(以字节为单位)添加到 type 的变量“size”中Single
。最后“大小”显示安装需要多少空间。
实际上这很好用,但我想在下一页显示以 GB 为单位的大小。但是该函数FloatToStr
在小数点后添加了很多数字,而我只想有两个。
这是脚本(问题出现在最后几行):
如您所见,我尝试了几件事来摆脱数字。问题是 中的FloatToStr
函数MsgBox
,它会自动添加所有数字。如果我选择Integer
“大小”的类型,它仍然显示长数字,但我不能使用Integer
和IntToStr
(MsgBox
什么可以解决问题),因为这里处理的数字太大,我想在点后有两位小数。
我也尝试将Format
函数放入,MsgBox
但我也得到了“类型不匹配”错误。
FloatToStrF
Inno Setup 不支持。
预先使用转换“大小”FloatToStr
并截断它也不起作用,因为编译器会检查“大小”声明的类型并坚持在后面FloatToStr
使用MsgBox
。
我不知道如何将这个数字四舍五入。也许一些不同的方法会有所帮助?
我期待着您的回答!
inno-setup - 如何在 Inno Setup 中安装期间为可选文件添加复选框?
我正在尝试在我的自定义页面中制作一个自定义复选框(因为它是一个单页安装程序),只需要一个没有对话框或任何东西的复选框,我试图编译的安装程序非常线性和简单。
我想以FILE3.EXE
这种方式绑定复选框:如果选中复选框,则将文件 ( FILE3.EXE
) 复制到 中DestDir
,否则如果未选中复选框,则FILE3.EXE
在安装过程中跳过文件 ()。
这是我使用的代码,显然复选框代码丢失了,因为我无法做到这一点
inno-setup - Innosetup - 识别标准用户的管理员用户和 dll 注册
在我的 innosetup 应用程序安装期间,我正在注册一个 dll(用于 Windows 右键单击上下文菜单和图标覆盖,类似于 dropbox/tortoise cvs)并执行一些其他操作。到目前为止,我只为管理员用户安装应用程序。该dll会在HKCR、HKLM中写入信息。现在,我也计划支持其他非管理员用户(标准用户)的安装。
我尝试了以下几件事,
- 将所需的权限从管理员更改为无。
- 将所有注册表更新从 HKLM 更改为 HKCU。
但是,如果我尝试安装应用程序,由于无法在 HKCR 上写入,dll 注册失败。所以,我打算只为管理员用户注册 dll。对于其他普通用户,计划跳过 dll 注册并做其他事情。但我不知道,如何识别当前用户是管理员用户。任何人都可以让我知道以下事情,
- 我们能否确定当前登录用户是否是管理员/高级用户?
- 我们可以在没有管理员权限的情况下注册 dll(编写 HKCR)吗?
感谢您的回复。
drag-and-drop - 如果标题栏被禁用,使 Inno Setup WizardForm 可移动
我想制作一个具有自定义外观的安装程序,并通过BorderStyle
将bsNone
.
现在我不能再移动窗口了。我环顾四周,找到了德尔福的解决方案:http:
//www.chami.com/tips/delphi/010397D.html
这可以在 Inno Setup 中完成吗?
我已经WM_NCHITTEST
在 MSDN 上查找了这个东西,但我不知道我是否以及如何使它工作。
编辑:在环顾四周并使用高级编译器高级编译器编译它之后,我想出了这个,但它不起作用。它可以编译,但是当我在窗口内单击时,我无法拖动它。
inno-setup - 如何在自定义页面处理后强制调用 Check 谓词
我Check
在组件部分使用参数来检查用户是否选中了某个单选按钮。
在向用户显示自定义页面之前调用我的谓词,并且我总是返回默认值。
如何从自定义页面获取用户输入以影响最终组件选择?
inno-setup - Inno Setup:如何在 64 位操作系统中重命名 system32 文件
System32 和 syswow64 文件夹存在于 64 位操作系统的 C:\Windows 下。
xyz.sys
我在文件夹下有一个文件System32\drivers
。我尝试重命名xyz.sys
为xyz1.sys
使用以下代码:
但在 64 位操作系统中,innosetup 是{sys}='Driveletter:\Windows\syswow64'
默认设置。
即使我尝试下面的代码来重命名xyz.sys
文件System32\drivers
:
但上面的代码也不起作用,谁能建议我如何在 64 位操作系统中重命名 system32 文件。
我正在使用windows2008R2。