Номер версии автоматической сборки с WiX, Inno Setup и VS2008

Модуль fileinput может делать то, что вы хотите - если аргументы non-option находятся в args, тогда:

import fileinput
for line in fileinput.input(args):
    print line

Если args пуст, тогда fileinput.input() будет читать от stdin; в противном случае он читает из каждого файла по очереди, аналогично Perl while(<>).

16
задан Davy8 10 December 2008 в 22:16
поделиться

5 ответов

Никакая потребность передать что-либо! Можно просто позволить Препроцессору InnoSetup считать информацию о версии прямо из ресурса версии двоичного файла, например:

#define AppName "My App"
#define SrcApp "MyApp.exe"
#define FileVerStr GetFileVersion(SrcApp)
#define StripBuild(str VerStr) Copy(VerStr, 1, RPos(".", VerStr)-1)
#define AppVerStr StripBuild(FileVerStr)

[Setup]
AppName={#AppName}
AppVersion={#AppVerStr}
AppVerName={#AppName} {#AppVerStr}
UninstallDisplayName={#AppName} {#AppVerStr}
VersionInfoVersion={#FileVerStr}
VersionInfoTextVersion={#AppVerStr}
OutputBaseFilename=MyApp-{#FileVerStr}-setup

Перед версией 5.4.1 (2011-02-09) ISPP не был включен в пакет InnoSetup по умолчанию. Необходимо было загрузить Пакет Быстрого запуска InnoSetup: http://www.jrsoftware.org/isdl.php#qsp (благодарит @Gwyn, для обновления)

26
ответ дан Oliver Giesen 11 December 2008 в 08:16
поделиться
  • 1
    Большое спасибо! Я просто нашел этот отрывок где-нибудь на stackoverflow и стал любопытным, почему кто-то должен использовать allow_blank и presence вместе:) – Slevin 24 January 2013 в 19:25

Можно получить ProductVersion для WiX от версии файла в пакете. Синтаксис - что-то как:

<Product Version="$(var.FileVersion.FileId)">

Или можно обеспечить, это на командной строке к свече с помощью "-dVersionFromCommandLine=1.0.0.0" переключается с синтаксисом как:

<Product Version="$(var.VersionFromCommandLine)">

Любой работы в последних сборках WiX v3. Только последние работы над WiX v2.

8
ответ дан Rob Mensching 10 December 2008 в 22:16
поделиться

Путем я делаю это со сценарием WSF (я использую JavaScript, но Вы могли использовать VBScript или даже использование сценария SH Cygwin), который создает заголовочный файл, содержащий определения для номеров версий. Можно использовать оператор Wix <include> для опозорения номера версии.

Для Установки Inno я создаю .iss файл, который содержит номер версии, который является #included в основной iss сценарий.

я дома, но могу отправить некоторый пример кода завтра, если Вам нравится.

РЕДАКТИРОВАНИЕ: Я забыл упоминать, что я запускаю скрипт, который генерирует файлы, содержащие номер сборки во время этапа перед сборкой моих различных проектов VS.

1
ответ дан Rob 11 December 2008 в 08:16
поделиться

Я нашел это для раздела установки inno, который похож на него, работал бы:

http://agiletracksoftware.com/blog.html?id=4

0
ответ дан Davy8 11 December 2008 в 08:16
поделиться
  • 1
    Спасибо Stephen, но является моим пониманием корректных внутренностей? – coding4fun 3 May 2012 в 06:09

Некоторый пример кода, как обещано. Этого должно быть достаточно для запущения Вас.

следующий JavaScript может использоваться для создания файла InnoSetup iss, содержащего номер версии. Фактический файл будет похож на это:

VersionInfoVersion=1.2.3.12345
AppVerName=My App v1.2.3.12345

основной сценарий Установки Inno будет включать этот файл путем добавления следующего в конец [Установка] раздел:

[Setup]
AppId={{...}}
...

#include "version.iss"

Вот JavaScript (это было бы сохранено как отдельный файл - version.js, например):

createInnoSetupIncludeFile("My App", 1, 2, 3, 12345, "version.iss");

function createInnoSetupIncludeFile(appName, verMajor, verMinor, verSubMinor, buildNumber, headerFileName)
{
    var versionString = verMajor + "." + verMinor + "." + verSubMinor + "." + buildNumber;
    var fileSystemObject = WScript.CreateObject("Scripting.FileSystemObject");
    var fileObject = fileSystemObject.CreateTextFile(headerFileName, true);
    fileObject.WriteLine("VersionInfoVersion=" + versionString);
    fileObject.WriteLine("AppVerName=" + appName + " v" + versionString);
    fileObject.Close();
    fileObject = null;
    fileSystemObject = null;
}

Вы могли настроить этот сценарий для создания version.iss файла в другой папке.

Наконец необходимо выполнить JavaScript - лучшее место было бы в Событии Перед сборкой проекта Visual Studio. Добавьте следующее:

cscript version.js //NoLogo

необходимо было бы измениться, это, чтобы также создать совместимый Wix включает файл. Я раньше делал это, но вывел Wix в пользу Установки Inno, таким образом, у меня нет этого кода для вручения. Существует механизм для сценария Wix, хотя, так, чтобы указал на Вас в правильном направлении - понятие является тем же - генерируют текстовый файл, который определяет номер версии, и затем включайте его.

Hope это помогает.

1
ответ дан Rob 11 December 2008 в 08:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: