Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 9]

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

Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1264
Благодарности: 1024


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: El Sanchez
Дата: 06-06-2020
Внимание! Данная тема предназначена только для обсуждения написания скриптов!
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


Показать/скрыть: Справка, руководство, примеры:

Показать/скрыть: Ссылки на примеры скриптов:

Показать/скрыть: Дополнительные программы для Inno Setup:
  • ISTool - неплохой редактор скриптов Inno Setup.
    Последняя версия: 5.3.0.1 [29.09.2009] - Скачать | зеркало;

  • Inno Script Generator - генератор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать | зеркало на русифицированную программу;
    Примечание: Родной сайт www.hisoft2000.de более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы.
    Последняя версия: 2.0.8 [12.11.2006] - Скачать;
    Примечание: Родной сайт http://isfd.kaju74.de/index.php?isfd более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup GameScript Generator - программа генерирует скрипты для Inno Setup . С помощью GameScript Generator и Inno Setup вы сможете быстро создать простенький инсталляционный пакет для любой игры. В инсталлятор можно встроить музыку, слайдшоу и фоновый рисунок. Для специалистов созданный скрипт, возможно, будет неплохой заготовкой для дальнейшей модернизации;

  • ISSkin - Программа для создания и добавления в инсталлятор скинов. Инструкция.
    Последняя версия: 3.0.0.0 [19.01.2010] - Скачать;

  • ISSJoiner - Программа для объединения нескольких скриптов InnoSetup в один.
    Последняя версия: 3.0 [23.07.2009]

  • Converter - Программа конвертирует reg-файлы в формат *.iss (формат скриптов Inno Setup).
    Последняя версия: 0.1.4 [13.03.2010] - Скачать;

  • RegExporter - Бесплатная утилита для экспорта реестра и конвертации файлов *.reg и *.ini в инсталляционные скрипты Inno Setup и NSIS.
    Последняя версия: 1.3.0 [17.01.2015] - Скачать;



Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:

Скрипты Inno Setup. Помощь и советы [часть 6] | Скрипты Inno Setup. Помощь и советы [часть 6].7z
Скрипты Inno Setup. Помощь и советы [часть 7] | Скрипты Inno Setup. Помощь и советы [часть 7].7z
Скрипты Inno Setup. Помощь и советы [часть 8] | Скрипты Inno Setup. Помощь и советы [часть 8].7z
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:09, 04-04-2018

 

Аватара для nik1967

Старожил


Сообщения: 440
Благодарности: 251

Профиль | Сайт | Отправить PM | Цитировать


ChopMan,
Справочку внимательно изучаем

[Setup]: AppendDefaultDirName
Возможные значения:
yes или no
Значение по умолчанию:
yes

Описание:
По умолчанию при указании пути на странице Выбор папки назначения с помощью кнопки Обзор... (Browse...) инсталлятор автоматически добавляет в конце имя папки, указанной в директиве DefaultDirName, в которую будет установлена программа. Например, если DefaultDirName={pf}\My Program и пользователь выбрал в обзоре диск "Z:\", то программа установится в "Z:\My Program".

Если значение директивы no, то папка с указанным DefaultDirName именем в конечном каталоге создаваться не будет. На странице выбора появится кнопка "Создать папку" (Make New Folder).

-------
Если сообщение оказалось полезным для Вас, то помимо спасибо, можно нажать на "Полезное сообщение".


Отправлено: 07:17, 27-08-2018 | #91



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1264
Благодарности: 1024

Профиль | Отправить PM | Цитировать


Цитата из ЛС:
Можете обновить примеры для inno setup закрепления ярлыка на панели задач и в меню пуск? Те что есть не закрепляют на win10 pro.
PinToTaskbar

Код: Выделить весь код
function PinToTaskbar(const FileName: string; IsPin: Boolean): Boolean;
// FileName : full path to executable file
// IsPin    : False - unpin from TaskBar, True - pin to TaskBar
var
  ShellApp: Variant;
  Verb: string;
begin
  Result := False;
  if not FileExists(FileName) then Exit;
  try
    if IsPin then
      Verb := 'taskbarpin' else
      Verb := 'taskbarunpin';
    ShellApp := CreateOleObject('Shell.Application');
    ShellApp.Windows.Item.Document.Application.NameSpace(ExtractFileDir(FileName)).ParseName(ExtractFileName(FileName)).InvokeVerb(Verb);
    Result := True;
  except
    ShowExceptionMessage;
  end;
end;

PinToStartMenu

Код: Выделить весь код
function PinToStartMenu(const FileName: string; const IsPin: Boolean): Boolean;
// FileName : full path to exe- or lnk-file
// IsPin    : False - unpin from StartMenu, True - pin to StartMenu
var
  ShellApp, FolderItem: Variant;
  Verb, LnkName: string;
begin
  Result := False;
  if not FileExists(FileName) then Exit;
  try
    ShellApp := CreateOleObject('Shell.Application');
    FolderItem := ShellApp.Windows.Item.Document.Application.NameSpace(ExtractFileDir(FileName)).ParseName(ExtractFileName(FileName));
    if GetWindowsVersion < $06020000 then // below Windows 8
    begin
      if IsPin then
        Verb := 'startpin' else
        Verb := 'startunpin';
      FolderItem.InvokeVerb(Verb);
      Result := True;
    end
    else  // Windows 8 and above
    begin
      if not FolderItem.IsLink then
      begin
        LnkName := FolderItem.ExtendedProperty('FileDescription');
        if LnkName = '' then
          LnkName := ExtractFileName(FileName);
        LnkName := ExpandConstant('{commonprograms}\') + ChangeFileExt(LnkName, '.lnk');
        if IsPin then
          Result := not FileExists(LnkName) and
            FileExists(CreateShellLink(LnkName, '', FileName, '', '', '', 0, SW_SHOWNORMAL))
        else
          Result := DeleteFile(LnkName);
      end
      else
      begin
        LnkName := ExpandConstant('{commonprograms}\') + ExtractFileName(FolderItem.Path);
        if IsPin then
          Result := not FileExists(LnkName) and
            FileCopy(FolderItem.Path, LnkName, False)
        else
          Result := DeleteFile(LnkName);
      end;
    end;
  except
    ShowExceptionMessage;
  end;
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:26, 05-10-2018 | #92


Аватара для ROMKA-1977

Пользователь


Сообщения: 74
Благодарности: 2

Профиль | Отправить PM | Цитировать


Здраствуйте. Помогите пож. разобратся с ярлыком деинсталятора в меню пуск.

Всегда указывал так:
[Icons]
Name: {group}\{cm:UninstallProgram,{#MyName}}; Filename: {uninstallexe}; Check: CheckError

Ярлык деинсталятора в меню пуск Win 7 отображался. Установив прогу в Win 10 ярлык деинсталятора не отображается. Заметил что такая же проблема и в инсталяторах других разработчиков.
Запустив установку в Win 10 в режиме совместимости с Win 7 всё нормально, рабочий ярлык на своём месте.

Прописал следующее:
[Icons]
Name: {group}\Деинсталлировать {#MyName}; Filename: {uninstallexe}; Check: CheckError

После этого всё норм, рабочий ярлык на своём месте.
В чем же проблема в первом случае ?

Последний раз редактировалось ROMKA-1977, 08-10-2018 в 15:20.


Отправлено: 14:31, 08-10-2018 | #93


Аватара для ErikPshat

Пользователь


Сообщения: 54
Благодарности: 11

Профиль | Отправить PM | Цитировать


Цитата ROMKA-1977:
{cm:UninstallProgram,{#MyName}}; »
Наверное лучше писать так:
Код: Выделить весь код
{cm:UninstallProgram} {#MyName};

Отправлено: 19:32, 08-10-2018 | #94


Аватара для ErikPshat

Пользователь


Сообщения: 54
Благодарности: 11

Профиль | Отправить PM | Цитировать


Ребята, нубский вопрос...
Как средствами Inno Setup создать новый пустой текстовой файл?

Я знаю только один хак создания через лист:
Код: Выделить весь код
var
  List: TStringList; txt: string; res: Integer;
begin
  txt:= ExpandConstant('{tmp}\file.txt');
   List:= TStringList.Create;
   List.Add('Добавляем первую строку в файл');
   List.SaveToFile(txt);
   List.Free;
end;
Может быть можно просто написать эту строку отдельно, как самостоятельную:
Код: Выделить весь код
SaveToFile(file.txt);
Но по-моему к этому должна предшествовать какая-та трансляция.

Последний раз редактировалось ErikPshat, 09-10-2018 в 15:36.


Отправлено: 15:12, 09-10-2018 | #95


Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1264
Благодарности: 1024

Профиль | Отправить PM | Цитировать


Цитата ROMKA-1977:
Всегда указывал так:
[Icons]
Name: {group}\{cm:UninstallProgram,{#MyName}}; Filename: {uninstallexe}; Check: CheckError »
ROMKA-1977, если UninstallProgram вынесен во внешний файл, то проверьте его кодировку, должна быть UTF-8. Либо CheckError возвращает False на Win 10.
Цитата ErikPshat:
Наверное лучше писать так: »
ErikPshat, там все правильно написано, читайте справку.
Цитата ErikPshat:
Как средствами Inno Setup создать новый пустой текстовой файл? »
ErikPshat,
Код: Выделить весь код
SaveStringToFile(ExpandConstant('{tmp}\file.txt'), '', False);
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:50, 09-10-2018 | #96


Аватара для ErikPshat

Пользователь


Сообщения: 54
Благодарности: 11

Профиль | Отправить PM | Цитировать


El Sanchez, о да, спасибо, проверил работает.
Если указано False, тогда перезаписывает файл, а если указать True, тогда записывает строку в конец файла.

А я перелопатил в документации весь хэлп и почему-то пропустил эту команду. Оказывается она там есть )))
Спасибо ещё раз!

Отправлено: 16:09, 09-10-2018 | #97


Аватара для ErikPshat

Пользователь


Сообщения: 54
Благодарности: 11

Профиль | Отправить PM | Цитировать


Подскажите пожалуйста, как проверить наличие записи в INI-файле?

У меня в секцию [CONFIG] записывается ключ "InstallDirectory" с путём в параметре. И я делаю отдельную функцию на его считывание:
Код: Выделить весь код
function InsDir(Default:String):String;
  Begin
    Result:= GetIniString('CONFIG','InstallDirectory','',ExpandConstant('{tmp}\config.ini'));
  end;
А теперь мне нужно проверить, присутствует ли ключ с параметром. Если да, то я его считываю. Если нет, то я беру данные из другого ключа. Ну типа как-то так:
Код: Выделить весь код
if (ExpandConstant('{code:InsDir}') > 0) then begin DIR:= ExpandConstant('{code:InsDir}') end else
if (ExpandConstant('{code:NewDir}') > 0) then begin DIR:= ExpandConstant('{code:NewDir}') end;
То есть, я не знаю с чем сравнивать. Правильно ли будет узнавать наличие ключа, потому что он больше нуля?
Мне нужно на переменную DIR назначить существующий ключ.

Последний раз редактировалось ErikPshat, 09-10-2018 в 18:58.


Отправлено: 18:47, 09-10-2018 | #98


Аватара для ROMKA-1977

Пользователь


Сообщения: 74
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата ErikPshat:
{cm:UninstallProgram} {#MyName}; »
В данном вами примере инсталятор берёт полное название ярлыка из файла Russian.isl и получается в итоге - Деинсталлировать %1MyName
Может есть какойто метод оптимизации секции [Icons] не прибегая к подробному тексту - Name: {group}\Деинсталлировать {#MyName}; Filename: {uninstallexe}; Check: CheckError
Уточняю проблему - это только но win 10 и подобное не только у моих инсталяшек

Последний раз редактировалось ROMKA-1977, 09-10-2018 в 21:01.


Отправлено: 20:47, 09-10-2018 | #99


Аватара для ErikPshat

Пользователь


Сообщения: 54
Благодарности: 11

Профиль | Отправить PM | Цитировать


ROMKA-1977, вам выше совет дал El Sanchez, вы читали?
То есть, вы вписали ключ MyName в файл Russian.isl и теперь хотите вывести его в секции [Icons]?
А почему бы в шапке не написать через
Код: Выделить весь код
#define   MyName  "Моё Название"
а потом выводить куда захочешь?
Или в секцию CustomMessage через en. и ru.

Кстати, нужно бы параметры в кавычки брать, а у вас без кавычек. Просто в Inno Setup иногда запятая всё решает.
Из меня правда плохой советчик, кто бы мне самому подсказал, но у меня в секции [Icons] всегда так:
Код: Выделить весь код
[Icons]
Name: "{group}\{cm:UninstallProgram,{#MyName}}"; Filename: "{uninstallexe}"; Check: "CheckError";

Последний раз редактировалось ErikPshat, 09-10-2018 в 21:34.

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:08, 09-10-2018 | #100



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 9]

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 7] El Sanchez Автоматическая установка приложений 2499 02-02-2015 08:59
Скрипты Inno Setup. Помощь и советы [часть 6] El Sanchez Автоматическая установка приложений 2494 10-03-2014 11:51
Скрипты Inno Setup. Помощь и советы [часть 5] El Sanchez Автоматическая установка приложений 1999 28-03-2013 19:09
Скрипты Inno Setup. Помощь и советы [часть 4] El Sanchez Автоматическая установка приложений 2099 22-05-2012 23:16
Скрипты Inno Setup. Помощь и советы [часть 3] Serega Автоматическая установка приложений 3755 26-10-2011 17:58




 
Переход