Как запускать команды после установки в автоматическом режиме с помощью установки Inno?

Я использую Inno Setup для создания установщика для своего приложения. Часть процесса установки включает установку двоичного файла Ollama и запуск пары команд для настройки моделей. Однако команды, похоже, не выполняются должным образом. Вот мой сценарий установки Inno:

[Setup]
AppName=Chat2Find
AppVersion=1.0
DefaultDirName = {pf}\Chat2Find
DefaultGroupName=Chat2Find
OutputDir=.
OutputBaseFilename=Chat2FindInstaller
Compression=lzma
SolidCompression=yes
DiskSpanning=yes

[Files]
; Include the executable
Source: "C:\Users\presh\c2f\dist\Chat2Find.exe"; DestDir: "{app}"; Flags: ignoreversion

; Include the GGUF files to be extracted to a permanent location
Source: "C:\Users\presh\c2f\dist\Mistral-7B-Instruct-v0.3.Q4_K_M.gguf"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\presh\c2f\dist\Phi-3-mini-4k-instruct-q4.gguf"; DestDir: "{app}"; Flags: ignoreversion

; Include the Ollama setup binary
Source: "C:\Users\presh\c2f\dist\OllamaSetup.exe"; DestDir: "{tmp}"; Flags: ignoreversion deleteafterinstall

; Include other resources
Source: "C:\Users\presh\c2f\dist\menu.png"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\presh\c2f\dist\close.png"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\presh\c2f\dist\new_note.jpg"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\presh\c2f\dist\copy.png"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\presh\c2f\dist\send_icon.png"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\presh\c2f\dist\chat2find.jpeg"; DestDir: "{app}"; Flags: ignoreversion

[Icons]
Name: "{group}\Chat2Find"; Filename: "{app}\Chat2Find.exe"
Name: "{commondesktop}\Chat2Find"; Filename: "{app}\Chat2Find.exe"; Tasks: desktopicon

[Tasks]
Name: "desktopicon"; Description: "Create a &desktop icon"; GroupDescription: "Additional icons:"; Flags: checkedonce

[Run]
Filename: "{app}\Chat2Find.exe"; Description: "Launch Chat2Find"; Flags: nowait postinstall skipifsilent
; Run Ollama setup silently
Filename: "{tmp}\OllamaSetup.exe"; Description: "Install Ollama"; Flags: waituntilterminated

; Run Ollama commands silently using a script
Filename: "cmd.exe"; Parameters: "/C {app}\run_ollama_commands.bat"; Flags: runhidden postinstall

[Code]
procedure CurStepChanged(CurStep: TSetupStep);
var
  GGUFDir: String;
  MistralDef, Phi3Def, OllamaScript: String;
begin
  if CurStep = ssPostInstall then
  begin
    GGUFDir := ExpandConstant('{app}');
    
    if not DirExists(GGUFDir) then
    begin
      CreateDir(GGUFDir);
    end;
    
    MistralDef := GGUFDir + '\mistral_definition';
    SaveStringToFile(MistralDef,
      'FROM ' + GGUFDir + '\Mistral-7B-Instruct-v0.3-Q4_K_M.gguf' + #13#10 +
      'TEMPLATE """[INST] {{ if .System }}{{ .System }} {{ end }}{{ .Prompt }} [/INST]"""' + #13#10 +
      'PARAMETER stop "[INST]"' + #13#10 +
      'PARAMETER stop "[/INST]"', False);

    Phi3Def := GGUFDir + '\phi3_definition';
    SaveStringToFile(Phi3Def,
      'FROM ' + GGUFDir + '\Phi-3-mini-4k-instruct-q4.gguf' + #13#10 +
      'TEMPLATE """<s>{{ if .Prompt }}' + #13#10 +
      '{{ .Prompt }}' + #13#10 +
      '{{ end }}' + #13#10 +
      '{{ .Response }}"""' + #13#10 +
      'PARAMETER stop' + #13#10 +
      'PARAMETER stop' + #13#10 +
      'PARAMETER stop' + #13#10 +
      'PARAMETER num_ctx 4096', False);

    OllamaScript := GGUFDir + '\run_ollama_commands.bat';
    SaveStringToFile(OllamaScript,
      'ollama create C2F_mistral -f "' + MistralDef + '"' + #13#10 +
      'ollama create C2F_phi3 -f "' + Phi3Def + '"', False);
  end;
end;

Проблема:

Команды в run_ollama_commands.bat, похоже, не выполняются должным образом. Как я могу гарантировать, что эти команды будут выполняться автоматически после установки двоичного файла Ollama?

Дополнительный контекст:

OllamaSetup.exe правильно устанавливает двоичный файл Ollama.

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

Пакетный файл (run_ollama_commands.bat) должен работать автоматически, без отображения окна командной строки.

Мы будем очень признательны за любые идеи или предложения о том, как правильно выполнять эти команды после установки!

Этот сайт поможет вам решить проблему с кодом, который вы написали для выполнения конкретной задачи. Кажется, вы спрашиваете, как выполнить конкретную задачу с помощью кода. По этой причине этот сайт в настоящее время не является для вас подходящей платформой.

Compo 07.08.2024 16:10

@Compo Если вы ничего не знаете по этому вопросу, просто скажите прямо, что не знаете. Не ходите вокруг да около и не ищите оправданий.

noocoder777 07.08.2024 20:26

Этот сайт помогает решить проблему с программным кодом. Я прочитал ваш вопрос, и он спрашивает нас, как запускать команды после установки из установки inno. Поэтому вам нужна информация об исследовании использования, а не помощь в исправлении того, что вы уже закодировали. (Кстати, своим комментарием выше вы не будете подталкивать меня к ответу на вопрос, не по теме, и вряд ли будете мотивировать других сделать это).

Compo 07.08.2024 21:24
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы используете Inno Setup и вам необходимо автоматически выполнять команды после установки, выполните следующие действия, чтобы убедиться, что все работает гладко. Вот изысканное решение:

  1. Обновите сценарий установки Inno:

Удалите раздел [Код], который динамически создает файлы определений и пакетный сценарий. Вместо этого вручную подготовьте эти файлы и включите их в свой установщик. Вот как вам следует изменить сценарий установки Inno:

[Setup]
AppName=Chat2Find
AppVersion=1.0
DefaultDirName = {pf}\Chat2Find
DefaultGroupName=Chat2Find
OutputDir=.
OutputBaseFilename=Chat2FindInstaller
Compression=lzma
SolidCompression=yes
DiskSpanning=yes

[Files]
; Include the executable
Source: "C:\Users\presh\c2f\dist\Chat2Find.exe"; DestDir: "{app}"; Flags: ignoreversion

; Include the GGUF files
Source: "C:\Users\presh\c2f\dist\Mistral-7B-Instruct-v0.3.Q4_K_M.gguf"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\presh\c2f\dist\Phi-3-mini-4k-instruct-q4.gguf"; DestDir: "{app}"; Flags: ignoreversion

; Include pre-created definition files
Source: "C:\Users\presh\c2f\dist\mistral_definition"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\presh\c2f\dist\phi3_definition"; DestDir: "{app}"; Flags: ignoreversion

; Include the Ollama setup binary
Source: "C:\Users\presh\c2f\dist\OllamaSetup.exe"; DestDir: "{tmp}"; Flags: ignoreversion deleteafterinstall

; Include the batch file
Source: "C:\Users\presh\c2f\dist\run_ollama_commands.bat"; DestDir: "{app}"; Flags: ignoreversion

; Include other resources
Source: "C:\Users\presh\c2f\dist\menu.png"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\presh\c2f\dist\close.png"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\presh\c2f\dist\new_note.jpg"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\presh\c2f\dist\copy.png"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\presh\c2f\dist\send_icon.png"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\presh\c2f\dist\chat2find.jpeg"; DestDir: "{app}"; Flags: ignoreversion

[Icons]
Name: "{group}\Chat2Find"; Filename: "{app}\Chat2Find.exe"
Name: "{commondesktop}\Chat2Find"; Filename: "{app}\Chat2Find.exe"; Tasks: desktopicon

[Tasks]
Name: "desktopicon"; Description: "Create a &desktop icon"; GroupDescription: "Additional icons:"; Flags: checkedonce

[Run]
Filename: "{tmp}\OllamaSetup.exe"; Description: "Install Ollama"; Flags: waituntilterminated runhidden

; Run Ollama commands silently
Filename: "{app}\run_ollama_commands.bat"; Parameters: ""; Flags: waituntilterminated runhidden

Filename: "{app}\Chat2Find.exe"; Description: "Launch Chat2Find"; Flags: postinstall
  1. Подготовьте командный файл:

Создайте файл run_ollama_commands.bat со следующим содержимым. Этот файл должен быть включен в ваш установщик:

@echo off
cd /d %~dp0
echo Running Ollama commands...

ollama create C2F_mistral -f mistral_definition
if %errorlevel% neq 0 (
    echo Failed to create C2F_mistral model
    exit /b %errorlevel%
)

ollama create C2F_phi3 -f phi3_definition
if %errorlevel% neq 0 (
    echo Failed to create C2F_phi3 model
    exit /b %errorlevel%
)

echo Ollama commands executed successfully. Deleting GGUF files...

del /f /q "Mistral-7B-Instruct-v0.3.Q4_K_M.gguf"
del /f /q "Phi-3-mini-4k-instruct-q4.gguf"

echo GGUF files deleted.
exit

Объяснение:

Команда @echo off подавляет вывод команды, чтобы избежать беспорядка. (Inno Setup также запускает его автоматически) cd /d %~dp0 изменяет каталог, в котором находится командный файл. Команды выполняются с проверкой ошибок, и обо всех ошибках сообщается. Файлы GGUF удаляются после успешного выполнения команды. Следуя этим инструкциям, вы обеспечите бесшумное и эффективное выполнение команд после установки.

Пожалуйста, не публикуйте содержимое пакетного файла в качестве решения, не включая содержимое его предварительного решения в свой вопрос. Мы понятия не имеем, изменили ли вы что-нибудь в этом файле, и никому, кроме вас, было абсолютно невозможно узнать об этом. Создание вопроса для сообщества, но не предоставление им достаточно подробностей для ответа на него, не является дружественным к сообществу.

Compo 08.08.2024 18:31

Ваш ответ для себя выглядит как набор инструкций о том, как выполнить задачу с использованием определенного набора инструментов. Это справочное руководство, и хотя оно может быть кому-то полезно, оно не относится к теме этого сайта. Здесь мы имеем дело с единственной, конкретной и воспроизводимой проблемой с отправленным вами программным кодом, учитывая минимальный воспроизводимый пример и достаточную информацию об отладке, среде и выполнении.

Compo 08.08.2024 18:40

Пожалуйста, воздержитесь от грубости по отношению к людям. Несколько комментариев, адресованных конкретно одному человеку, являются оскорбительными и неуважительными, и в данном конкретном случае этот человек этого не ценит.

Compo 08.08.2024 21:26

Другие вопросы по теме