Inno Setup 无法在 AppVeyor 上使用掩码找到图像文件
Inno Setup can't find image files using mask on AppVeyor
我们有一个 OSS 项目,我正在尝试升级到 Inno Setup 6.0.5。当我在本地编译构建脚本时,它按预期工作。但是,当我尝试通过 AppVeyor 构建它时,它找不到文件。我都试过了:
使用完整路径(这适用于 5.6.1):
#define BuildDir ExtractFileDir(ExtractFileDir(SourcePath)) + "\bin\"
#define IncludesDir SourcePath + "Includes\"
#define GraphicsDir SourcePath + "Graphics\"
...
WizardSmallImageFile={#GraphicsDir}Rubberduck.Duck.Small.55x55.bmp, \
{#GraphicsDir}Rubberduck.Duck.Small.64x68.bmp, \
{#GraphicsDir}Rubberduck.Duck.Small.83x80.bmp, \
{#GraphicsDir}Rubberduck.Duck.Small.92x97.bmp, \
{#GraphicsDir}Rubberduck.Duck.Small.110x106.bmp, \
{#GraphicsDir}Rubberduck.Duck.Small.119x123.bmp, \
{#GraphicsDir}Rubberduck.Duck.Small.138x140.bmp
WizardImageFile={#GraphicsDir}Rubberduck.Duck.164x314.bmp, \
{#GraphicsDir}Rubberduck.Duck.192x386.bmp, \
{#GraphicsDir}Rubberduck.Duck.246x459.bmp, \
{#GraphicsDir}Rubberduck.Duck.273x556.bmp, \
{#GraphicsDir}Rubberduck.Duck.328x604.bmp, \
{#GraphicsDir}Rubberduck.Duck.355x700.bmp
使用通配符:
#define BuildDir ExtractFileDir(ExtractFileDir(SourcePath)) + "\bin\"
#define IncludesDir SourcePath + "Includes\"
#define GraphicsDir SourcePath + "Graphics\"
#define WizardImageFilesDir GraphicsDir + "WizardImageFiles\"
#define WizardSmallImageFilesDir GraphicsDir + "WizardSmallImageFiles\"
...
WizardSmallImageFile={#WizardSmallImageFilesDir}Rubberduck.Duck.Small.*.bmp
WizardImageFile={#WizardImageFilesDir}Rubberduck.Duck.*.bmp
文件存在于预期位置,并且是有效的位图。然而,在 AppVeyor 上我们得到这个错误:
Creating output directory: C:\projects\rubberduck\Rubberduck.Deployment\InnoSetup\Installers
Reading file (LicenseFile)
Reading file (WizardImageFile)
File: C:\projects\rubberduck\Rubberduck.Deployment\InnoSetup\Graphics\WizardImageFiles\Rubberduck.Duck.*.bmp
Error on line 81 in C:\projects\rubberduck\Rubberduck.Deployment\InnoSetup\Rubberduck.Installer.Build.iss: Could not read "C:\projects\rubberduck\Rubberduck.Deployment\InnoSetup\Graphics\WizardImageFiles\Rubberduck.Duck.*.bmp".
Error: The filename, directory name, or volume label syntax is incorrect.
Compile aborted.
我们使用 Chocolately 安装 Inno Setup。我们发现我们必须明确指定版本;否则,它将使用 5.5.9 而不是 6.0.5:
原文:
- cinst innosetup -version 5.6.1
修改:
- cinst innosetup --version=6.0.5
可以看到完整的 AppVeyor 控制台输出(包括几个 pragma 消息)here。
可以看到完整的 ISS 构建脚本 here。
可以看到完整的 Appveyor YML here。
为什么它可以在本地运行但在 Appveyor 上失败?
尽管您另有声明,但您仍在使用 5.5.9:
Compiler engine version: Inno Setup 5.5.9 (u)
Wizard*ImageFile
指令中的通配符受支持,因为仅 Inno Setup 5.6。
虽然你的脚本似乎安装了 6.0.5。因为它是不同的主要版本,所以它在不同的路径中,C:\Program Files (x86)\Inno Setup 6\
而不是 C:\Program Files (x86)\Inno Setup 5\
。 AppVeyor comes with 5.5.9 preinstalled,这可能就是为什么当时间到了 运行 构建脚本时,反而执行了 5.5.9。尝试使用 iscc
的完整路径以确保您 运行 使用正确的 Inno Setup 主要版本。
我们有一个 OSS 项目,我正在尝试升级到 Inno Setup 6.0.5。当我在本地编译构建脚本时,它按预期工作。但是,当我尝试通过 AppVeyor 构建它时,它找不到文件。我都试过了:
使用完整路径(这适用于 5.6.1):
#define BuildDir ExtractFileDir(ExtractFileDir(SourcePath)) + "\bin\" #define IncludesDir SourcePath + "Includes\" #define GraphicsDir SourcePath + "Graphics\" ... WizardSmallImageFile={#GraphicsDir}Rubberduck.Duck.Small.55x55.bmp, \ {#GraphicsDir}Rubberduck.Duck.Small.64x68.bmp, \ {#GraphicsDir}Rubberduck.Duck.Small.83x80.bmp, \ {#GraphicsDir}Rubberduck.Duck.Small.92x97.bmp, \ {#GraphicsDir}Rubberduck.Duck.Small.110x106.bmp, \ {#GraphicsDir}Rubberduck.Duck.Small.119x123.bmp, \ {#GraphicsDir}Rubberduck.Duck.Small.138x140.bmp WizardImageFile={#GraphicsDir}Rubberduck.Duck.164x314.bmp, \ {#GraphicsDir}Rubberduck.Duck.192x386.bmp, \ {#GraphicsDir}Rubberduck.Duck.246x459.bmp, \ {#GraphicsDir}Rubberduck.Duck.273x556.bmp, \ {#GraphicsDir}Rubberduck.Duck.328x604.bmp, \ {#GraphicsDir}Rubberduck.Duck.355x700.bmp
使用通配符:
#define BuildDir ExtractFileDir(ExtractFileDir(SourcePath)) + "\bin\" #define IncludesDir SourcePath + "Includes\" #define GraphicsDir SourcePath + "Graphics\" #define WizardImageFilesDir GraphicsDir + "WizardImageFiles\" #define WizardSmallImageFilesDir GraphicsDir + "WizardSmallImageFiles\" ... WizardSmallImageFile={#WizardSmallImageFilesDir}Rubberduck.Duck.Small.*.bmp WizardImageFile={#WizardImageFilesDir}Rubberduck.Duck.*.bmp
文件存在于预期位置,并且是有效的位图。然而,在 AppVeyor 上我们得到这个错误:
Creating output directory: C:\projects\rubberduck\Rubberduck.Deployment\InnoSetup\Installers
Reading file (LicenseFile)
Reading file (WizardImageFile)
File: C:\projects\rubberduck\Rubberduck.Deployment\InnoSetup\Graphics\WizardImageFiles\Rubberduck.Duck.*.bmp
Error on line 81 in C:\projects\rubberduck\Rubberduck.Deployment\InnoSetup\Rubberduck.Installer.Build.iss: Could not read "C:\projects\rubberduck\Rubberduck.Deployment\InnoSetup\Graphics\WizardImageFiles\Rubberduck.Duck.*.bmp".
Error: The filename, directory name, or volume label syntax is incorrect.
Compile aborted.
我们使用 Chocolately 安装 Inno Setup。我们发现我们必须明确指定版本;否则,它将使用 5.5.9 而不是 6.0.5:
原文:
- cinst innosetup -version 5.6.1
修改:
- cinst innosetup --version=6.0.5
可以看到完整的 AppVeyor 控制台输出(包括几个 pragma 消息)here。
可以看到完整的 ISS 构建脚本 here。
可以看到完整的 Appveyor YML here。
为什么它可以在本地运行但在 Appveyor 上失败?
尽管您另有声明,但您仍在使用 5.5.9:
Compiler engine version: Inno Setup 5.5.9 (u)
Wizard*ImageFile
指令中的通配符受支持,因为仅 Inno Setup 5.6。
虽然你的脚本似乎安装了 6.0.5。因为它是不同的主要版本,所以它在不同的路径中,C:\Program Files (x86)\Inno Setup 6\
而不是 C:\Program Files (x86)\Inno Setup 5\
。 AppVeyor comes with 5.5.9 preinstalled,这可能就是为什么当时间到了 运行 构建脚本时,反而执行了 5.5.9。尝试使用 iscc
的完整路径以确保您 运行 使用正确的 Inno Setup 主要版本。