例如,如果exe的完整文件路径提供为C:\Projects\Executable\Serial Data Streaming Recorder.exe
,我需要提取exe的名称。那是Serial Data Streaming Recorder
,我想动态地将这个值分配给exe的完整文件路径中的变量。
手动完成,如下例所示:
#define ExePath "C:\Projects\Executable\Serial Data Streaming Recorder.exe"
#define AppName "Serial Data Streaming Recorder"
我想从exe的完整文件路径动态地将值Serial Data Streaming Recorder
分配给变量AppName
。
我在许多文件的inno脚本中的许多地方使用此名称,所以我不想通过将此值分配给变量来手动执行此操作。
答案 0 :(得分:2)
要在[Code]
运行时执行此操作您可以使用ExtractFileName()
获取文件名和扩展名。我认为您可以通过将空白传递给ChangeFileExt()
函数来删除扩展名,但如果没有,您可以使用Pos()
和Delete()
之类的标准字符串操作来查找和删除它。
如果您需要在编译时执行此操作,则需要使用ISPP,大多数函数具有相同的名称和签名,因此请使用ExtractFileName()
获取文件名本身,RPos()
以获取期间和Delete()
将其删除。
答案 1 :(得分:0)
嗯......我通常只是在安装脚本中不使用任何绝对路径来解决这个问题。您也可以像这样定义ExePath:
#define BasicName "Serial Data Streaming Recorder"
#define ExePath "C:\Projects\Executable\" + BasicName + ".exe"
然后只要您需要名称就使用{#BasicName}
。
还有一些预处理程序脚本函数(不是pascalscript)可以执行字符串操作来执行更高级的操作。