Скрипты Inno Setup. Помощь и советы [часть 8]

Ответить
 • Просмотры: 44
Аватара пользователя
Shkutu

Re: Скрипты Inno Setup. Помощь и советы [часть 8]

Сообщение Shkutu »

Цитата Dodakaedr:



Как в inno сгенерировать случайное число на 10 цифр?
Скрипты Inno Setup. Помощь и советы [часть 8]




Например, так:



Код:

Код: Выделить всё

Function InitializeSetup(): Boolean;
var
 I: Integer;
 S: String;
begin
 S := '';
 for I := 0 to 9 do
 begin
  S := S + IntToStr(Random(9));
 end;
 MsgBox(S, mbInformation, MB_OK);
 Result := False;
end;
Аватара пользователя
Shkutu

Re: Скрипты Inno Setup. Помощь и советы [часть 8]

Сообщение Shkutu »

Цитата El Sanchez:



Код:

function NextButtonClick(CurPageID: Integer): Boolean;

begin

Result := True;

case CurPageID of

wpSelectDir:

if DirExists(ExpandConstant('{app}\MyProg')) then

MsgBox('bla-bla-bla', mbInformation, MB_OK);

end;

end;
Скрипты Inno Setup. Помощь и советы [часть 8]




С этим вообще ничего не происходит, устанавливается всегда.
Аватара пользователя
ekspoint

Re: Скрипты Inno Setup. Помощь и советы [часть 8]

Сообщение ekspoint »

Цитата:



А есть еще один вопрос: как можно получить список инстанций MS SQL? Даже не знаю, как и что в гугле спрашивать...



Последний раз редактировалось maraby, 05-05-2015 в 15:21.




В общем, получилось Изображение

Использовала RegGetValueNames. Единственное, если RootKey указать как HKEY_LOCAL_MACHINE - то возвращает пустой список.

В общем надо указать HKLM64



Вопрос: а если инстанция SQL 32-разрядная?





Код:

Код: Выделить всё

 procedure UzupelniNazweInstancjiSQL;
 var
  Names: TArrayOfString;
  I: Integer;
  S: String;
begin
  if RegGetValueNames(HKLM64, 'SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL', Names) 
  then
  begin
    S := '';
    SerwerInstancja.Items.Clear;
    for I := 0 to GetArrayLength(Names)-1 
    do 
      begin
      S := S + Names[i] + #13#10;
      SerwerInstancja.Items.Add(S);
      end;
  end else
  begin
    // add any code to handle failure here
	MsgBox(' :( ', mbInformation, MB_OK);
  end;
end;
Аватара пользователя
svs23

Re: Скрипты Inno Setup. Помощь и советы [часть 8]

Сообщение svs23 »

Цитата maraby:



а если инстанция SQL 32-разрядная?
Скрипты Inno Setup. Помощь и советы [часть 8]




Попробуйте так:


код

[spoiler]Код:
[/spoiler]

Код: Выделить всё

 procedure UzupelniNazweInstancjiSQL;
 var
  Names: TArrayOfString;
  I, RegName: Integer;
  S: String;
begin
 if IsWin64 then
  RegName := HKLM64
 else
  RegName := HKLM32;
  if RegGetValueNames(RegName, 'SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL', Names)
  then
  begin
    S := '';
    SerwerInstancja.Items.Clear;
    for I := 0 to GetArrayLength(Names)-1
    do
      begin
      S := S + Names[i] + #13#10;
      SerwerInstancja.Items.Add(S);
      end;
  end else
  begin
    // add any code to handle failure here
	MsgBox(' :( ', mbInformation, MB_OK);
  end;
end;









з.ы. вместо HKLM32, вроде, можете использовать просто HKLM.
Аватара пользователя
svs23

Re: Скрипты Inno Setup. Помощь и советы [часть 8]

Сообщение svs23 »

Помогите прицепить новый тип установки к новому компонент листу

Код: Выделить всё

[Setup]
AppName=Моя программа
AppVersion=1.5
DefaultDirName={pf}\Моя программа
DirExistsWarning=no
AppendDefaultDirName=no
[CustomMessages]
CompName1=Компонент 1
CompName2=Компонент 2
CompSubtitlesLng=Язык субтитров
CompVoiceLng=Язык озвучки
CompRussian=Русский
CompEnglish=Английский
[_CODE]
var
ComboBox: TNewComboBox;
Page: TWizardPage;
var
ComponentsList1: TNewCheckListBox;
procedure CreateWizardPages;
begin
begin
Page := CreateCustomPage(wpWelcome, '', '');
ComboBox := TNewComboBox.Create(Page);
ComboBox.Width := Page.SurfaceWidth;
ComboBox.Parent := Page.Surface;
ComboBox.Style := csDropDownList;
ComboBox.Items.Add('TComboBox 1');
ComboBox.Items.Add('TComboBox 2');
ComboBox.Items.Add('TComboBox 3');
ComboBox.Items.Add('TComboBox 4');
ComboBox.Items.Add('TComboBox 5');
ComboBox.ItemIndex := 0;
end;
//========================================================================\\
ComponentsList1 := TNewCheckListBox.Create(WizardForm);
with ComponentsList1 do
begin
Parent := Page.Surface;
SetBounds(ScaleX(0), ScaleY(61), ScaleX(417), ScaleY(169));
AddCheckBox(CustomMessage('CompSubtitlesLng'), '', 0, True, True, False, True, nil); //0
AddRadioButton(CustomMessage('CompRussian'), '', 1, True, True, nil); //1
AddRadioButton(CustomMessage('CompEnglish'), '', 1, True, True, nil); //2
AddCheckBox(CustomMessage('CompVoiceLng'), '', 0, True, True, False, True, nil); //3
AddRadioButton(CustomMessage('CompRussian'), '', 1, True, True, nil); //4
AddRadioButton(CustomMessage('CompEnglish'), '', 1, True, True, nil); //5
end;
end;
function IsComponentsForm1(CompIndex: Integer): Boolean;
var
i: Integer;
begin
Result := False;
for i := 0 to ComponentsList1.ItemCount - 1 do
begin
if CompIndex <= (ComponentsList1.ItemCount - 1) then
Result := ComponentsList1.Checked[CompIndex];
end;
end;
procedure InitializeWizard();
begin
CreateWizardPages;
end;
Аватара пользователя
NewMix

Re: Скрипты Inno Setup. Помощь и советы [часть 8]

Сообщение NewMix »

Цитата Николай_Николаич@vk:



С этим вообще ничего не происходит, устанавливается всегда.
Скрипты Inno Setup. Помощь и советы [часть 8]





Цитата Николай_Николаич@vk:



Если в папке MyProgram есть папка Prog - то все отлично, если же её нету, то предупреждение в окошке.
Скрипты Inno Setup. Помощь и советы [часть 8]




Николай_Николаич@vk, ну, я и сделал предупреждение, сообщил и продолжил далее. Так?



Скрытый текст

[spoiler]Код:
[/spoiler]

Код: Выделить всё

function NextButtonClick(CurPageID: Integer): Boolean;
begin
    Result := True;
    case CurPageID of
        wpSelectDir:
            begin
                Result := not DirExists(ExpandConstant('{app}\MyProg'));
                if not Result then
                    MsgBox('bla-bla-bla', mbInformation, MB_OK);
            end;
    end;
end;
Аватара пользователя
svs23

Re: Скрипты Inno Setup. Помощь и советы [часть 8]

Сообщение svs23 »

Цитата El Sanchez:



ну, я и сделал предупреждение, сообщил и продолжил далее. Так?

Скрытый текст

Код:

function NextButtonClick(CurPageID: Integer): Boolean;

begin

Result := True;

case CurPageID of

wpSelectDir:

begin

Result := not DirExists(ExpandConstant('{app}\MyProg'));

if not Result then

MsgBox('bla-bla-bla', mbInformation, MB_OK);

end;

end;

end;
Скрипты Inno Setup. Помощь и советы [часть 8]




Ну дело в том, что нет предупреждения, независимо от того, если ли папка Prog или нету.
Аватара пользователя
NewMix

Re: Скрипты Inno Setup. Помощь и советы [часть 8]

Сообщение NewMix »

а такой вопрос, после того как файл скачался и начал распаковываться почему не появляется cmd со списком распаковываемых компонентов? Ибо пользователь не сразу может понять что будет еще распаковка звуков.
Аватара пользователя
NewMix

Re: Скрипты Inno Setup. Помощь и советы [часть 8]

Сообщение NewMix »

El Sanchez, Dodakaedr, Спасибо, разобрался.



Не подскажите как брать путь установки из реестра.

Например:

Если в реестре есть только ключ -

SOFTWARE\1

Dir - C:\1



То берем C:\1



А если в реестре есть



SOFTWARE\2

Dir - C:\2



То путь установки будет из 2-го.



если имеется два ключа, путь бы брался из второго - C:\2
Ответить

Вернуться в «Автоматическая установка приложений»