Почему компилятор Inno Setup не устанавливает правильную информацию о версии из Hudson? - PullRequest
0 голосов
/ 05 декабря 2009

Если я запускаю компилятор Inno Setup из командной строки / командного файла, он создает исполняемый файл с информацией о версии в имени файла.

Однако, когда я запускаю из hudson (та же командная строка), я не получаю информацию о версии.

Возможно, я что-то упустил.

Это известная проблема?

Вот как я это делаю в файле сценария iss.

#define FileVerStr GetFileVersion(SrcApp)

EDIT:

Все env-переменные установлены для всех пользователей - не только для моего входа в систему - поэтому у службы есть доступ ко всему, что делает сборка из командной строки.

РЕДАКТИРОВАТЬ: Смотрите мой ответ для решения этого.

Ответы [ 3 ]

3 голосов
/ 15 февраля 2010

Как сказал "tim", тогда относительные пути не работают, как ожидается для определений.

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

Если добавить префикс SourcePath , то относительный путь будет начинаться с пути, где расположен скрипт InnoSetup.

1 голос
/ 05 декабря 2009

Вероятно, вы используете Hudson в Windows, учитывая упомянутую технологию.

Когда есть расхождение между тем, что происходит в командной строке, и тем, что делает Хадсон, это часто происходит потому, что Хадсон работает как служба в Windows. Это означает, что он работает как пользователь службы, который отличается от вашей учетной записи.

Я бы искал переменную среды, которую вы определили в своем профиле пользователя, которая может включить это поведение, но которая не устанавливается для пользователя службы.

0 голосов
/ 06 декабря 2009

Я не совсем уверен, как описать, как я "исправил" это / обошел его.

Кажется, что метод 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 является. (Мне лень выяснять, кто из них заставляет все это работать.

Опять же, это отлично работает из моего командного файла, но не из Гудзона. Я полагаю, это странное взаимодействие с тем, как работает Inno.

...