为什么Inno Setup编译器没有正确设置hudson的版本信息?

时间:2009-12-05 07:41:09

标签: hudson inno-setup

如果我从命令行/批处理文件运行Inno Setup编译器,它会在文件名中创建一个带有版本信息的exe文件。

但是,当我从hudson(同一命令行)运行时,我没有得到版本信息。

也许我错过了什么。

这是一个已知问题吗?

在iss脚本文件中

This is the way I am doing it

#define FileVerStr GetFileVersion(SrcApp)

编辑:

env vars全部为所有用户设置 - 不仅仅是我的登录 - 因此服务可以访问命令行构建的所有内容。

编辑:请参阅我的回答以解决此问题。

3 个答案:

答案 0 :(得分:3)

就像“蒂姆”所说的那样,相对路径不能像定义那样工作。

#define MyAppVer GetFileVersion(SourcePath + "\..\Build\Release\MyExeName.exe")
#if MyAppVer == ""
    #error MyAppVer - Version information not found!
#endif

通过前缀 SourcePath ,相对路径将从InnoSetup脚本所在的路径开始。

答案 1 :(得分:1)

鉴于所提到的技术,你很可能在Windows上运行Hudson。

当命令行上发生的事情与Hudson所做的事情之间存在差异时,通常是因为Hudson在Windows上作为服务运行。这意味着它作为服务用户运行,这与您的登录帐户不同。

我会查找您在用户配置文件中定义的环境变量,该变量可能会启用此行为,而不是为服务用户设置的行为。

答案 2 :(得分:0)

我不确定如何描述我如何“修复”这个/解决它。

似乎GetFileVersion()方法不使用与Inno功能的其他部分相同的基本路径来确定源文件/可安装文件的位置。

用于的相同路径:

// this is for determining what files get put into the install image
[Files]
Source: ..\Build\ForRelease\MyExeName.exe; DestDir: {app}

#define SrcApp "..\Build\ForRelease\MyExename.exe"
#define FileVerStr GetFileVersion(SrcApp)

显然不使用相同的机制来解析文件名/路径。所以我解决这个问题的方法是将包含版本信息的exe文件复制到另外两个不同的位置(除了.. \ Build \ ForRelease) - 其中一个是hudson启动进程,另一个是inoo脚本的路径是。 (我太懒了,不知道哪一个能使它全部工作。

同样,这可以从我的批处理文件中正常工作,但不能从hudson中工作。我猜这与Inno的工作方式基本上是一种奇怪的互动。