问题描述
我们有一个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
可以在here上看到完整的appveyor控制台输出(包括一些实用信息)。
可以在here上看到完整的ISS构建脚本。
可以看到here的完整传送器YML。
为什么会在本地运行但在appveyor上失败?
解决方法
尽管您有其他主张,但您仍在使用5.5.9:
编译器版本:Inno Setup 5.5.9(u)
仅从issue thread开始支持 104.192.143.1 bitbucket.org
104.192.143.2 bitbucket.org
18.205.93.0 bitbucket.org
指令中的通配符。
尽管您的脚本似乎已安装6.0.5。由于它是不同的主要版本,因此它的路径不同,Wizard*ImageFile
而不是C:\Program Files (x86)\Inno Setup 6\
。 Inno Setup 5.6,这可能是为什么当需要运行构建脚本时,会执行5.5.9的原因。尝试使用C:\Program Files (x86)\Inno Setup 5\
的完整路径来确保您正在运行正确的Inno Setup主版本。