Inno 安装程序在 AppVeyor 上找不到使用蒙版的图像文件



我们有一个OSS项目,我正在尝试升级到Inno Setup 6.0.5。当我在本地编译构建脚本时,它可以按预期工作。然而,当我尝试通过AppVeyor构建它时,它找不到文件。我都试过了:

  1. 使用全路径(这适用于第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
    
  2. 使用通配符:

    #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主版本。

最新更新