Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.142.12.240] |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
function GetVersionNumbersString(const Filename: String; var Version: String): Boolean;
подскажите что писать |
Сообщ.
#2
,
|
|
|
Писать правильно сформулированный вопрос.
|
Сообщ.
#3
,
|
|
|
Как оформить function GetVersionNumbersString(const Filename: String; var Version: String): Boolean; чтобы вписать название файла и версию
|
Сообщ.
#4
,
|
|
|
[Code] var ver: String; procedure InitializeWizard(); begin GetVersionNumbersString('c:\somefile.exe', ver); //Теперь номер версии в виде строки (напр. 1.2.3.0) файла somefile.exe находится в переменной ver end; |
Сообщ.
#5
,
|
|
|
Скрытый текст [Code] var ver: String; procedure InitializeWizard(); begin GetVersionNumbersString('{app}\worldoftanks.exe', 0.8.11); //Теперь номер версии в виде строки (напр. 1.2.3.0) файла somefile.exe находится в переменной ver end; правильно? |
Сообщ.
#6
,
|
|
|
Функция GetVersionNumbersString предназначена для получения версии файла. Чего ты хочешь добиться, передавая в неё вместо переменной (куда она будет записывать № версии) цифры 0.8.11?
|
Сообщ.
#7
,
|
|
|
0.8.11 это версия
|
Сообщ.
#8
,
|
|
|
[Telepat="On"]
Вам надо куда-то на форму вывести версию устанавливаемого файла? Или же установить только если версия больше (это решается штатными средствами)? Или же все же изменить версию какого-то файла при сборке инсталлятора? [Telepat="Off"] |
Сообщ.
#9
,
|
|
|
Сообщ.
#10
,
|
|
|
как так сделать?
|
Сообщ.
#11
,
|
|
|
procedure CurStepChanged(CurStep: TSetupStep); var ver: String; begin if (CurStep = ssInstall) then begin GetVersionNumbersString(ExpandConstant('{app}') + '\somefile.exe', ver); if ver <> '0.8.11' then begin MsgBox('Данный модпак предназначен только для версии 0.8.11!', mbError, MB_OK); Abort(); end; end; end; |
Сообщ.
#12
,
|
|
|
Сообщ.
#13
,
|
|
|
с
Прикреплённая картинка
Добавлено если меняю версию серавно одно и тоже вот script.iss Скрытый текст #define GameID "{5F05CE9B-7768-490E-9A71-C6R92B4EX123}" ;Ид инстолятора #define MyAppName "Nelegalsp Mod Pack 0.8.11" ;Название инстоллятора #define MyInfoVer "3.0" ;Версия инсталлятора #define MyAppVer "3.0" ;Версия игры #define MyAppPublisher "UPRO inc." ;Имя компании или человека кто делал #define MyAppURL "www.worldoftanks.ru" ;Ссылка для лого #include "Components.iss" ;Компаненты, они же моды #include "Messages.iss" ;Сообщение, надписи на кнопках и т.д. [Setup] AppId={{#GameID} AppName={#MyAppName} AppVersion={#MyAppVer} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} PrivilegesRequired=none //====={ Ссылки }=====\\ AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} //====={ Папка устанвки }=====\\ ;DefaultDirName={pf}\{#MyAppName} DefaultDirName={code:MyDirName} DefaultGroupName={#MyAppName} //====={ Картинки }=====\\ SetupIconFile=Files\wot_ico.ico WizardSmallImageFile=Files\img2.bmp WizardImageFile=Files\img1.bmp //====={ Отключение строниц }=====\\ DisableProgramGroupPage=yes //====={ Лицензия и Фак }=====\\ LicenseFile=licensia.txt InfoBeforeFile=faq.rtf //====={ Папка создания и название сетапа }=====\\ OutputDir=.\Output OutputBaseFilename=Setup //====={ Сжатие сетапа }=====\\ InternalCompressLevel=ultra64 Compression=lzma2/ultra64 SolidCompression=true //====={ Основные файлы сетапа }=====\\ [Files] Source: Files\logo.bmp; Flags: dontcopy noencryption noencryption [Code] function MyDirName(S:String): String; var InsPath: String; er: boolean; myFile:String; begin Result:=ExpandConstant('C:\Games\World_of_Tanks\'); //если ключа нет то будем ставить сюда er := RegQueryStringValue(HKLM, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1', 'InstallLocation', InsPath); if er and (InsPath<>'') then //если ключ существует и там что-то записано begin Result := InsPath; end; end; procedure LogoOnClick(Sender: TObject); var ResCode: Integer; begin ShellExec('', '{#MyAppURL}', '' , '', SW_SHOW, ewNoWait, ResCode) end; procedure RedesignWizardForm; var i: integer; BtnPanel: TPanel; BtnImage: TBitmapImage; begin ExtractTemporaryFile('logo.bmp') BtnPanel:=TPanel.Create(WizardForm) with BtnPanel do begin Left:=0 Top:=0 Width:=0 Height:=0 Cursor:=crHand OnClick:=@logoOnClick Parent:=WizardForm end; with WizardForm do begin Caption := ExpandConstant('{cm:Main}'); end; with WizardForm.WizardBitmapImage do begin Width := ScaleX(502); end; with WizardForm.WelcomeLabel2 do begin Visible := False; end; with WizardForm.WelcomeLabel1 do begin Visible := False; end; with WizardForm.WizardSmallBitmapImage do begin Left := ScaleX(0); Width := ScaleX(502); Height := ScaleY(70); end; with WizardForm.PageDescriptionLabel do begin Visible := False; end; with WizardForm.PageNameLabel do begin Visible := False; end; with WizardForm.WizardBitmapImage2 do begin Width := ScaleX(502); end; with WizardForm.FinishedLabel do begin Visible := False; end; with WizardForm.FinishedHeadingLabel do begin Visible := False; end; end; procedure CurStepChanged(CurStep: TSetupStep); var ver: String; begin if (CurStep = ssInstall) then begin GetVersionNumbersString(ExpandConstant('{app}') + '\WordlOfTanks.exe', ver); if ver <> '0.8.11' then begin MsgBox('Данный модпак предназначен только для версии 0.8.11!', mbError, MB_OK); Abort(); end; end; end; function DeleteFile(const FileName: string): Boolean; begin end; Добавлено все равно* |
Сообщ.
#14
,
|
|
|
Цитата Nelegal @ если меняю версию серавно одно и тоже вот script.iss Это потому, что в винде номер версии кодируется не 3-мя а четырьмя числами (напр. 0.8.11.0). Если тебе надо проверять на соответствие только первые 3, то вот код: function NextButtonClick(CurPageID: Integer): Boolean; var ms, ls: Cardinal; begin if CurPageID = wpSelectDir then begin GetVersionNumbers(ExpandConstant('{app}\worldoftanks.exe'), ms, ls); if not (((ms shr 16) = 0) and ((ms and $ffff) = 8) and ((ls shr 16) = 11)) then begin MsgBox('Данный модпак предназначен только для версии 0.8.11!', mbError, MB_OK); Result := false; end else Result := true; end else Result := true; end; Чтобы было понятнее, где тут твой номер версии, тоже приведу картинку Прикреплённая картинка
|
Сообщ.
#15
,
|
|
|
спасибо большое:)
Добавлено Помоги с чтобы удалял перед установкой папки: 1. res_mods/xvm/* 2. res_mods/0.8.11 function DeleteFile(const FileName: string): Boolean; begin end; ! Вопрос должен звучать как-то так: "А как удалить перед установкой следующие папки?"! Еще одно такое сообщение, и предупреждение будет не устным! |