Installation 如何从exe的完整路径获取Innosetup脚本中的exe名称?

Installation 如何从exe的完整路径获取Innosetup脚本中的exe名称?,installation,inno-setup,uninstallation,Installation,Inno Setup,Uninstallation,例如,如果exe的完整文件路径为C:\Projects\Executable\Serial Data Streaming Recorder.exe,则需要提取exe的名称。这就是串行数据流记录器,我想从exe的完整文件路径中动态地将这个值分配给一个变量 手动完成,如以下示例所示: #define ExePath "C:\Projects\Executable\Serial Data Streaming Recorder.exe" #define AppName "Serial Data Stre

例如,如果exe的完整文件路径为
C:\Projects\Executable\Serial Data Streaming Recorder.exe
,则需要提取exe的名称。这就是串行数据流记录器,我想从exe的完整文件路径中动态地将这个值分配给一个变量

手动完成,如以下示例所示:

#define ExePath "C:\Projects\Executable\Serial Data Streaming Recorder.exe"
#define AppName "Serial Data Streaming Recorder" 
我想从exe的完整文件路径将值
串行数据流记录器
动态分配给变量
AppName


我在inno脚本中的许多地方为许多文件使用此名称,因此我不想通过将此值分配给变量来手动执行此操作。

要在运行时在
[code]
中执行此操作,可以使用。我认为您可以通过向函数传递blank来删除扩展名,但如果没有,您可以使用标准的字符串操作(如和)查找并删除扩展名


如果需要在编译时执行此操作,则需要使用ISPP,大多数函数都具有相同的名称和签名,因此使用
ExtractFileName()
获取文件名本身,
RPos()
获取句点,
Delete()
删除它。

Hmm。。。我通常通过在安装脚本中从不使用任何绝对路径来解决这个问题。您也可以这样定义ExePath:

#define BasicName "Serial Data Streaming Recorder"
#define ExePath   "C:\Projects\Executable\" + BasicName + ".exe"
然后,只要需要名称,就使用
{#BasicName}


还有几个预处理器脚本函数(不是pascalscript)可以执行字符串操作以执行更高级的操作。

感谢您的回复。我无法使用ChangeFileExt()更改删除文件扩展名,它在名称末尾返回“.”。可能为我提供了一些删除最后4个字符的方法,但我对此表示赞赏。我确实这样做了,在ISPP中使用了
RPos()
delete()
。#定义myappexepath“C:\Executable\Serial Data Streaming Recorder.exe”
定义MyAppExeName ExtractFileName(MyExePath)#定义MyAppName副本(MyAppExeName,1,Pos(.exe),MyAppExeName)-1)我是这样解决的……。:)