Почему не отрабатывает батник?

Andreo Fadio

Старожил
У тебя в батнике могут пути одни к примеру С, а ты выбираешь D
понимаешь что пишешь или от балды строчишь?
Выбор куда ставить и то что в батнике не взаимосвязано... И не плохо бы для начала почитать описание вопроса автора (в котором содержимое батника указано - системными переменными, которые выбором пути не сменить).
 

Crachlow

Старожил
понимаешь что пишешь или от балды строчишь?
Выбор куда ставить и то что в батнике не взаимосвязано... И не плохо бы для начала почитать описание вопроса автора (в котором содержимое батника указано - системными переменными, которые выбором пути не сменить).
Просто этот батник на уже установленной системе частично только и отработает. Он предназначен для SetupComplete.cmd для первой установки, и то сомневаюсь что все выполнит.
 

Crachlow

Старожил
И папки темп тмп нужно создавать не директивой MD, а
Reg.exe add "HKCU\Environment" /v "TEMP" /t REG_SZ /d "%SYSTEMDRIVE%\Temp" /f
Reg.exe add "HKCU\Environment" /v "TMP" /t REG_SZ /d "%SYSTEMDRIVE%\Tmp" /f
 

Crachlow

Старожил
Еще вариант запускать этот батник через PowerRun.exe тогда, возможно, он отработает как надо даже в установленной системе
 

Crachlow

Старожил
Можно попробовать еще такой вариант в начало батника

Код:
takeown /f "%windir%\system32\cmd.exe" /a                             
icacls "%windir%\system32\cmd.exe" /grant Administrators:f 
icacls "%windir%\system32\cmd.exe" /setowner "NT SERVICE\TrustedInstaller"
в конец перед exit
Код:
icacls "%windir%\system32\cmd.exe" /grant:r Administrators:rx
 

Александр85

Новичок
Значит попробуй PrivilegesRequired=poweruser или admin

Вообще-то это ПО УМОЛЧАНИЮ СТОИТ, если НЕ менять! Но я поставил вручную эту строчку - разницы нет!
P.S. Ничего старшного в моём баттнике в начале темы - нет! Вы конечно НЕ обязаны, но могли бы попробовать прежде чем советовать что-то у вас отрабатывает?! )) Какого? )) он вручную отрабатывает, а Inno Setup его не может запустить? ((
 

Crachlow

Старожил
Вообще-то это ПО УМОЛЧАНИЮ СТОИТ, если НЕ менять! Но я поставил вручную эту строчку - разницы нет!
P.S. Ничего старшного в моём баттнике в начале темы - нет! Вы конечно НЕ обязаны, но могли бы попробовать прежде чем советовать что-то у вас отрабатывает?! )) Какого? )) он вручную отрабатывает, а Inno Setup его не может запустить? ((
Александр. Я попробовал ваш батник на 7 х64, что от запуска самого батника, что через Filename: "{%COMSPEC}"; Parameters: "/c ""{app}\1.bat"""; Flags: waituntilterminated skipifdoesntexist результат один и тот же. К некоторым процессам батник не может получить доступ. Так что вы зря горячитесь. Поэтому я и спросил вас о ваших правах в системе.
 

Crachlow

Старожил
2023-04-08_223151.png
Это запуск чисто батника. Права Администратор.
 

Александр85

Новичок
Это запуск чисто батника. Права Администратор.
Александр. Я попробовал ваш батник на 7 х64, что от запуска самого батника, что через Filename: "{%COMSPEC}"; Parameters: "/c ""{app}\1.bat"""; Flags: waituntilterminated skipifdoesntexist результат один и тот же. К некоторым процессам батник не может получить доступ. Так что вы зря горячитесь. Поэтому я и спросил вас о ваших правах в системе.
Ну и что же делать? я не горячусь! )) Вручную он хотя бы запускается и отрабатывает, а через Inno Setup нет!
 

Александр85

Новичок
Подскажите, кто-нибудь, как тогда, как "по-тихому", запустить стандартное средство очистки cleanmgr.exe, чтобы там было по максимуму галочек и без какого либо участия и отображения для пользователя?!
 

Crachlow

Старожил
Александр. Выслушайте без горячки. Вы сказали что батник безопасен. Это не совсем так. Логи которые создает система имеют ограниченный доступ. Даже если вам каким то образом, не исключаю, что вы изменили права доступа к некоторым папкам, получить к ним доступ и удалить - это не совсем безопасно для системы т.е. другим пользователям. Хорошо если система восстановит все. А если нет? Будете работать на не совсем работоспособной системе? По началу это не так видно будет, но в последствии выплывут косяки. Это сугубо мое мнение - надо доработать батник и если чистку проводить то безопасную.
 

Александр85

Новичок
Александр. Выслушайте без горячки. Вы сказали что батник безопасен. Это не совсем так. Логи которые создает система имеют ограниченный доступ. Даже если вам каким то образом, не исключаю, что вы изменили права доступа к некоторым папкам, получить к ним доступ и удалить - это не совсем безопасно для системы т.е. другим пользователям. Хорошо если система восстановит все. А если нет? Будете работать на не совсем работоспособной системе? По началу это не так видно будет, но в последствии выплывут косяки. Это сугубо мое мнение - надо доработать батник и если чистку проводить то безопасную.
Да, пожалуйста! Давайте УБЕРЁМ из батника удаление логов, пофиг )) ! Пусть только все Temp чистятся, где бы они не были! И это не отрабатывает! И еще раз вручную батник отрабатывает, а через Inno Setup нет, почему?
 

Хамик

Старожил
Принципиально именно батник использовать? Ведь все эти элементарные операции можно сделать в самой инке. Можно использовать как системные константы так и встроенные инновские.
code_language.pascal:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
OutputDir=.

[Code]
procedure RunCleaner();
begin
  DelTree(ExpandConstant('{%SYSTEMDRIVE}\*.log'), false, true, true); //удалить файлы по расширению
  DelTree(ExpandConstant('{%TMP}\*'), false, true, true); //удалить всё содержимое папки
  DelTree(ExpandConstant('{localappdata}\Temp\*'), false, true, true); //удалить всё содержимое папки
  DelTree(ExpandConstant('{localappdata}\Temporary Internet Files\Content.IE5\*'), false, true, true); //удалить всё содержимое папки
  DelTree(ExpandConstant('{sd}\Temp\*'), false, true, true); //удалить всё содержимое папки
  DelTree(ExpandConstant('{userappdata}\Temp\*'), false, true, true); //удалить всё содержимое папки
  DelTree(ExpandConstant('{win}\Temp\*'), false, true, true); //удалить всё содержимое папки
end;

procedure InitializeWizard();
begin
  if MsgBox('Очистить кеш?', mbConfirmation, MB_YESNO or MB_DEFBUTTON2) = IDYES then RunCleaner();
end;
 

Александр85

Новичок
Принципиально именно батник использовать? Ведь все эти элементарные операции можно сделать в самой инке. Можно использовать как системные константы так и встроенные инновские.
code_language.pascal:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
OutputDir=.

[Code]
procedure RunCleaner();
begin
  DelTree(ExpandConstant('{%SYSTEMDRIVE}\*.log'), false, true, true); //удалить файлы по расширению
  DelTree(ExpandConstant('{%TMP}\*'), false, true, true); //удалить всё содержимое папки
  DelTree(ExpandConstant('{localappdata}\Temp\*'), false, true, true); //удалить всё содержимое папки
  DelTree(ExpandConstant('{localappdata}\Temporary Internet Files\Content.IE5\*'), false, true, true); //удалить всё содержимое папки
  DelTree(ExpandConstant('{sd}\Temp\*'), false, true, true); //удалить всё содержимое папки
  DelTree(ExpandConstant('{userappdata}\Temp\*'), false, true, true); //удалить всё содержимое папки
  DelTree(ExpandConstant('{win}\Temp\*'), false, true, true); //удалить всё содержимое папки
end;

procedure InitializeWizard();
begin
  if MsgBox('Очистить кеш?', mbConfirmation, MB_YESNO or MB_DEFBUTTON2) = IDYES then RunCleaner();
end;
НЕТ, НЕ принципиально! Я же написал в начале темы - предложите свои варианты! )) И не только файлы, в папках TEMP, бывают и папки )) Но только без запроса, запрос будет в задачах, если пользователь выберет! Как связать с задачей?
 
Сверху