Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 3]
Помогите оптимизировать код
Function cm(Message: String): String; Begin Result:= ExpandConstant('{cm:'+ Message +'}') End;
function NextButtonClick(CurPageID: Integer): Boolean;
var i: Integer;
Begin
Result:=True;
if CurPageID = wpSelectDir then
begin
for i:= 1 to Length(WizardForm.DirEdit.Text) do
if WizardForm.DirEdit.Text[i] > #122 then
begin
MsgBox(cm('Cyrillic'), mbError, mb_Ok);
Result:=False;
Exit;
end;
if (Pos(Uppercase(ExpandConstant('{pf}')), Uppercase(ExpandConstant('{app}'))) > 0)
or (Pos(Uppercase(ExpandConstant('{win}')), Uppercase(ExpandConstant('{app}'))) > 0) then
begin
MsgBox(cm('SysDirSelect'), mbError, mb_Ok);
Result:=False;
Exit;
end;
end;
End;
Можно объединить begin MsgBox ...... end
а также условия Pos(Uppercase(ExpandConstant('{...}'))
Gnom_aka_Lexander
13-07-2011, 21:26
Можно объединить begin MsgBox ...... end
а также условия Pos(Uppercase(ExpandConstant('{...}')) »Можно, у меня както так вышло:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[Code]
Function cm(Message: String): String; Begin Result:= ExpandConstant('{cm:'+ Message +'}') End;
function NextButtonClick(CurPageID: Integer): Boolean;
var i: Integer; S:String; One,Two: Boolean;
Begin Result:=True; if CurPageID = wpSelectDir then begin
for i:= 1 to Length(WizardForm.DirEdit.Text) do if (WizardForm.DirEdit.Text[i] > #122)
then begin One:=True;S:='Cyrillic'; end;
if (Pos(Uppercase(ExpandConstant('{pf}')), Uppercase(ExpandConstant('{app}'))) > 0) then Two:=True;
if (Pos(Uppercase(ExpandConstant('{win}')),Uppercase(ExpandConstant('{app}'))) > 0) then Two:=True;
if Two then S:='SysDirSelect'; if One or Two then begin
MsgBox(S, mbError, mb_Ok); Result:=False; Exit;end; end; End;
Лександер, Спасибо!
Код запрещает устанавливать программу в папку Windows или Program Files, а также запрещает использовать кириллицу в пути установки.
Вот конечный вариант »
Для чего вы используете Function cm(Message: String): String;, на мой взгляд бесполезная функция. Так же в цикле for...to...do не хватает Break;, т.е. для чего перебирать дальше, если мы уже нашли...
Как говорят, оптимизации кода нет предела, но всё же я бы записал так:
function NextButtonClick(CurPageID: Integer): Boolean;
var
i: Integer;
path: string;
begin
if CurPageID = wpSelectDir then
begin
path := Uppercase(WizardForm.DirEdit.Text);
if (Pos(Uppercase(ExpandConstant('{pf}')), path) > 0)
or (Pos(Uppercase(ExpandConstant('{win}')), path) > 0) then
begin
MsgBox(ExpandConstant('{cm:SysDirSelect}'), mbError, MB_OK);
Exit;
end;
for i := 1 to Length(path) do
if path[i] > #122 then
begin
MsgBox(ExpandConstant('{cm:Cyrillic}'), mbError, MB_OK);
Exit;
end;
end;
Result := True;
end;
Соединил два предложенные варианта:
Function cm(Message: String): String; Begin Result:= ExpandConstant('{cm:'+ Message +'}') End;
function NextButtonClick(CurPageID: Integer): Boolean;
var
i: integer;
path,s: string;
One,Two: boolean;
Begin
Result:=True;
if CurPageID = wpSelectDir then
begin
path:= Uppercase(WizardForm.DirEdit.Text);
for i := 1 to Length(path) do if path[i] > #122 then
begin One:=True;S:=cm('Cyrillic'); end;
if (Pos(Uppercase(ExpandConstant('{pf}')), path) > 0) or (Pos(Uppercase(ExpandConstant('{win}')), path) > 0) then
begin Two:=True;S:=cm('SysDirSelect'); end;
if One or Two then
begin
MsgBox(S, mbError, mb_Ok); Result:=False; Exit;
end;
end;
End;
Если не подключать ф-ю Function cm в этом варианте, то CustomMessages не сработает
ILIA_1992
14-07-2011, 01:05
помогите разобраться с прогой regshot
Дело в том,что мне нужен реестр игры властелин колец,хоть и игра запускается с русским текстом и звуком во время игры но во время показа роликов звука нет.
Поэтому нужен реестр
Помогите
Neutron, изменить сетапник нереально (разве что иконку), так что смысла в проверке сумм нету.
R.i.m.s.k.y.
14-07-2011, 08:01
Дело в том,что мне нужен реестр игры властелин колец,хоть и игра запускается с русским текстом и звуком во время игры но во время показа роликов звука нет.
Поэтому нужен реестр »
вывод в стиле "таракан без ног не слышит" :)
звуковые файлы могут распаковываться не только в {app}, но и в {appdata}, моидокументы
ILIA_1992
14-07-2011, 14:56
может нужно было поставить [ht=http://img.ii4.ru/images/2011/07/14/127569_Bezemyanney.jpg[/ht] галочку возле rus
У меня после добавления реестра игра стала на аглийском и звук в роликах появился но на английском.ВЧём может быть проблема???
ILIA_1992
14-07-2011, 20:38
Neutron, я немного не понял,в моих документах ничего кроме сохранённого профиля и конфигурации грфики нет
Помогите, как я могу выдать сообщение только пользователям Windows 7, с помощью http://wiki.delphi-jedi.org/wiki/JCL_Help:IsWin7 или http://wiki.delphi-jedi.org/wiki/JCL_Help:TWindowsVersion
Только без помощи Major, Minor.
Habetdin
14-07-2011, 23:01
MrLOLs, пример:
procedure CurPageChanged(CurPageID: Integer);
var
Version: TWindowsVersion;
begin
if CurPageID = wpWelcome then
begin
GetWindowsVersionEx(Version);
if (Version.Major = 6) and (Version.Minor = 1) then
begin
MsgBox('Привет, пользователь Windows 7 / Windows Server 2008 R2!', mbInformation, mb_Ok);
end;
end;
end;
как сюда перенести чекбоксы с vscredit и directX
http://i25.fastpic.ru/big/2011/0714/cc/49fa5afe9141c7c48899850fe8569fcc.jpg
tiestos, как на счет использования этого перевода украинского языка http://www.jrsoftware.org/files/istrans/Ukrainian-7/Ukrainian-7-5.1.11.isl (кандидата в официальный перевод), на который я потратил кучу времени.
спасибо, я сам перевёл, меня устраивает)
murlakatamenka
15-07-2011, 01:08
tiestos, так можно
[Tasks]
Name: additional; Description: "Дополнительнео ПО";
Name: additional\dx; Description: "Обновить DirectX"; Flags: unchecked
Name: additional\vcr; Description: "Обновить библиотеки Visual C++"; Flags: unchecked;
[Run]
Filename: {src}\Redist\DirectX\dxsetup.exe; Tasks: additional\dx; StatusMsg: Обновление DirectX ...; Parameters: /silent;
Filename: {src}\Redist\vcredist_x86.exe; Tasks: additional\vcr; StatusMsg: Обновление библиотек Visual C++ ...; Parameters: /q;
ILIA_1992
18-07-2011, 13:32
у меня вопрос.Возможно ли сделать так,чтобы инсталлятор брал иконку с авторуна ,чтобы потом иконка создалать там куда прописана иконка
и как в setup.exe можно изменить версию файла первоначальная стоит 0.0.0.0
valyok666
18-07-2011, 16:17
ILIA_1992,
AppVersion=2.9b\\\пример
SetupIconFile=Setup.ico
Какие есть еще методы сжатия кроме 7Zip-Srep-Precomp-Arc?
tiestos, тут не принято это обсуждать и считается офтопиком, т.к. не касается инно, я не нашёл такой темы на осзоне, но возможно вам помогут тут (http://forum.ru-board.com/topic.cgi?forum=5&topic=32025) и тут (http://forum.ru-board.com/topic.cgi?forum=5&topic=30239&start=0)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.