Модуль fileinput может делать то, что вы хотите - если аргументы non-option находятся в args
, тогда:
import fileinput
for line in fileinput.input(args):
print line
Если args
пуст, тогда fileinput.input()
будет читать от stdin; в противном случае он читает из каждого файла по очереди, аналогично Perl while(<>)
.
Никакая потребность передать что-либо! Можно просто позволить Препроцессору 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, для обновления)
Можно получить ProductVersion для WiX от версии файла в пакете. Синтаксис - что-то как:
<Product Version="$(var.FileVersion.FileId)">
Или можно обеспечить, это на командной строке к свече с помощью "-dVersionFromCommandLine=1.0.0.0" переключается с синтаксисом как:
<Product Version="$(var.VersionFromCommandLine)">
Любой работы в последних сборках WiX v3. Только последние работы над WiX v2.
Путем я делаю это со сценарием WSF (я использую JavaScript, но Вы могли использовать VBScript или даже использование сценария SH Cygwin), который создает заголовочный файл, содержащий определения для номеров версий. Можно использовать оператор Wix <include>
для опозорения номера версии.
Для Установки Inno я создаю .iss файл, который содержит номер версии, который является #included в основной iss сценарий.
я дома, но могу отправить некоторый пример кода завтра, если Вам нравится.
РЕДАКТИРОВАНИЕ: Я забыл упоминать, что я запускаю скрипт, который генерирует файлы, содержащие номер сборки во время этапа перед сборкой моих различных проектов VS.
Я нашел это для раздела установки inno, который похож на него, работал бы:
Некоторый пример кода, как обещано. Этого должно быть достаточно для запущения Вас.
следующий 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 это помогает.
allow_blank
иpresence
вместе:) – Slevin 24 January 2013 в 19:25