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

时间:2011-12-08 09:02:01

标签: installer inno-setup uninstaller

例如,如果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脚本中的许多地方使用此名称,所以我不想通过将此值分配给变量来手动执行此操作。

2 个答案:

答案 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)可以执行字符串操作来执行更高级的操作。