我们有一个OSS项目,我正在尝试升级到Inno Setup 6.0.5。当我在本地编译构建脚本时,它可以按预期工作。然而,当我尝试通过AppVeyor构建它时,它找不到文件。我都试过了:
-
使用全路径(这适用于第6.5.6条(:
#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:projectsrubberduckRubberduck.DeploymentInnoSetupInstallers
Reading file (LicenseFile)
Reading file (WizardImageFile)
File: C:projectsrubberduckRubberduck.DeploymentInnoSetupGraphicsWizardImageFilesRubberduck.Duck.*.bmp
Error on line 81 in C:projectsrubberduckRubberduck.DeploymentInnoSetupRubberduck.Installer.Build.iss: Could not read "C:projectsrubberduckRubberduck.DeploymentInnoSetupGraphicsWizardImageFilesRubberduck.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控制台输出(包括几个杂注消息(可以在这里看到。
完整的ISS构建脚本可以在这里看到。
完整的Appveyor YML可以在这里看到。
为什么它会在本地工作,但在Appveyor上失败?
尽管您另有声明,但您仍在使用5.5.9:
编译器引擎版本: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预装了5.5.9,这可能就是为什么当运行构建脚本时,会执行5.5.9。尝试使用iscc
的完整路径来确保运行的是正确的Inno Setup主版本。