Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 9]
Dodakaedr
17-02-2020, 22:49
но в реестре, в конце пути стоит символ {;} как его удалить? »
а еще лутше так
C:\Program Files (x86)\Internet Explorer
тоисть удалить все что идет посте последнего \ »
используйте функции Copy и ExtractFilePath
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[code]
procedure InitializeWizard();
var
s: string;
begin
s := 'Path=C:\Program Files (x86)\Internet Explorer\IEXPLORE.EXE;';
s := Copy(s, 0, Length(s)-1);
s := RemoveBackslash(ExtractFilePath(s));
MsgBox(s, mbInformation, MB_OK);
end;
Gnom_aka_Lexander
18-02-2020, 00:03
Beavimo, самое простое, использовать в такой ситуации функцию ExtractFilePath(const FileName: string):string Она отсекает с хвоста все до первого слеша.ExtractFilePath(ExpandConstant('{reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\IEXPLORE.EXE,Path}')); даст на выходе C:\Program Files (x86)\Internet Explorer\
Если нужно без косой черты, то ExtractFileDir - она возвращает тоже самое, но без слеша
наконец то....:shot:..... целую ночь провозился, с этой кажись - такой мелочью. :vampire:
[Setup]
AppName=TEST1
AppVerName=TEST2
OutputDir=userdocs:..\desktop
CreateAppDir=no
Uninstallable=no
[*Code]
function InitializeSetup(): Boolean; var
FileName: String;
begin
FileName:=ExtractFilePath(ExpandConstant('{reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\IEXPLORE.EXE,Path}'));
if not FileExists((FileName)+('Internet Explorer\iexplore.exe')) then
Result:=True
else
MsgBox((FileName)+'Internet Explorer' #13''#13 'Папка Установки При Обновлении !', mbInformation, MB_OK);
end;
[Files]
//Source: "userdocs:..\desktop\TEST.exe"; DestDir: "{app}"; Flags: ignoreversion
Теперь другов вопрос, как его этот путь "(FileName)+'Internet Explorer'", сохранить в например в дириктиву #define, или например в {app} неважно куда и как важно чтобы в (DestDir) каталог установки брался автоматом, так как пишеться апдейт а не полноценный софт.
Beavimo,
DefaultDirName={code:ExtractFilePath|{reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\IEXPLORE.EXE,|}}
Привет. что я делаю не так? Помогите новичку. Винда 10-64
Root: HKLM; SubKey: SOFTWARE\Boris FX, Inc.\Boris Graffiti 6.6; ValueType: string; ValueName: DefaultLibraryPath; ValueData: {pf64}\Boris FX, Inc\Keyframe Libraries 6; Flags: uninsdeletevalue uninsdeletekeyifempty
а прописывается в
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\WOW6432Node
Спасибо.
habib2302
20-02-2020, 16:52
VLADEV, Замените HKLM на HKLM64
habib2302,
Спасибо я конечно это сделал. я использовал конвертер реестра Converter.exe
и он не проставляет мне HKLM64 Вот я и не понял почему .
и он не проставляет мне HKLM64 Вот я и не понял почему . »
А откуда ему знать, какая разрядность у целевой системы и программы, которой эти ветки реестра предназначаются?
Там, где предполагается несовпадение разрядности программы и системы, пути в реестре и на диске надо самому проверять.
а прописывается в
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\WOW6432Node »
Меня всегда интересовал вопрос о тех, кто задаёт похожие или одни и теже вопросы: Есть ли у людей логика, или всё-таки как класс она отсутствует?
1. Справка (Пожалуй это самое важное правило.).
2. Поиск (Это самое важное правило после первого пункта).
Далее:
Совсем недавно было: Сообщение #487.
Далее:
я использовал конвертер реестра Converter.exe »Действительно ли вам Converter так необходим?
Читайте сообщение #530 о Inno Script Studio.
Вам нужно импортировать данные реестра.
Экспортируете необходимый подраздел реестра из RegEdit сохранив в файл *.reg.
Открываете Inno Script Studio, или скрипт в нём.
Переводите фокус на Registry и щёлкаете по нему левой кнопкой мыши.
Вы в секции Registry:
https://i1.imageban.ru/thumbs/2020.02.21/1febeac99e72519956fec0678c7e4224.png (https://i1.imageban.ru/out/2020/02/21/1febeac99e72519956fec0678c7e4224.png)
Далее щёлкаете левой кнопкой мыши по подготовленному файлу *.reg и не отпуская кнопки перетаскиваете в область Registry:
https://i5.imageban.ru/thumbs/2020.02.21/00f82bde989d4b742eb8d43c2f0018c5.png (https://i5.imageban.ru/out/2020/02/21/00f82bde989d4b742eb8d43c2f0018c5.png)
Замечательно, данные импортировались:
https://i2.imageban.ru/thumbs/2020.02.21/9adb38cc4847ca1e1581b935c31d5692.png (https://i2.imageban.ru/out/2020/02/21/9adb38cc4847ca1e1581b935c31d5692.png)
[hr]
Вам нужно изменить список строк.
Делаете как я (Делаю везде где только вздумается, не только в Inno):
Выделяете необходимые данные для копирования:
https://i6.imageban.ru/thumbs/2020.02.21/016fb7cd82892e852053395423abb679.png (https://i6.imageban.ru/out/2020/02/21/016fb7cd82892e852053395423abb679.png)
Нажимаете комбинацию клавиш CTRL+C чтоб скопировать выделенное.
Переводите фокус к началу первой строки:
https://i4.imageban.ru/thumbs/2020.02.21/1a94573c9df2e273ffe9867e146f9dd4.png (https://i4.imageban.ru/out/2020/02/21/1a94573c9df2e273ffe9867e146f9dd4.png)
Нажимаете комбинацию клавиш CTRL+H чтоб начать работу с заменой текста.
В первом поле вставляете (CTRL+V) скопированный текст, который будет заменён:
https://i3.imageban.ru/thumbs/2020.02.21/4616f35d1f19d239e429012766d4739c.png (https://i3.imageban.ru/out/2020/02/21/4616f35d1f19d239e429012766d4739c.png)
Во втором вводите данные для замены:
https://i1.imageban.ru/thumbs/2020.02.21/d33dcbfcdf3c8b8bb59ece0619421d96.png (https://i1.imageban.ru/out/2020/02/21/d33dcbfcdf3c8b8bb59ece0619421d96.png)
Щёлкаете клавишу Replace All чтоб заменить все заданные условия:
https://i6.imageban.ru/thumbs/2020.02.21/be497f22d39c479bfea7560c89c04eb6.png (https://i6.imageban.ru/out/2020/02/21/be497f22d39c479bfea7560c89c04eb6.png)
затем подтверждаете щёлкнув клавишу All:
https://i3.imageban.ru/thumbs/2020.02.21/52a86815604f13a489da928ffda10aad.png (https://i3.imageban.ru/out/2020/02/21/52a86815604f13a489da928ffda10aad.png)
Как видите необходимые данные были заменены:
https://i4.imageban.ru/thumbs/2020.02.21/ee3643cb24d7688aeff0c815f9624876.png (https://i4.imageban.ru/out/2020/02/21/ee3643cb24d7688aeff0c815f9624876.png)
Эти данные в 64-разрядной ОС будут внесены в WOW6432Node.
[hr]
Для x64 аналогично.
Выделяете необходимые данные для копирования:
https://i2.imageban.ru/thumbs/2020.02.21/e0dffcdcc913a7d99403f036a156e119.png (https://i2.imageban.ru/out/2020/02/21/e0dffcdcc913a7d99403f036a156e119.png)
Нажимаете комбинацию клавиш CTRL+C чтоб скопировать выделенное.
Переводите фокус не к началу как ранее, а куда-нибудь в коментарии:
https://i4.imageban.ru/thumbs/2020.02.21/efa18dc00cc9a5c17966fff6fe74a5a7.png (https://i4.imageban.ru/out/2020/02/21/efa18dc00cc9a5c17966fff6fe74a5a7.png)
Нажимаете комбинацию клавиш CTRL+H чтоб начать работу с заменой текста.
В первом поле вставляете (CTRL+V) скопированный текст, который будет заменён:
https://i6.imageban.ru/thumbs/2020.02.21/89a993959481bb77a7c00fc4139fda02.png (https://i6.imageban.ru/out/2020/02/21/89a993959481bb77a7c00fc4139fda02.png)
Во втором вводите данные для замены:
https://i5.imageban.ru/thumbs/2020.02.21/0952d5f02cfd6abfc0c5ef7bf43d1b78.png (https://i5.imageban.ru/out/2020/02/21/0952d5f02cfd6abfc0c5ef7bf43d1b78.png)
Щёлкаете клавишу Replace All чтоб заменить все заданные условия:
https://i1.imageban.ru/thumbs/2020.02.21/d0fa64c1a85d18d3fb4e863dff9d5c31.png (https://i1.imageban.ru/out/2020/02/21/d0fa64c1a85d18d3fb4e863dff9d5c31.png)
затем подтверждаете щёлкнув клавишу All:
https://i5.imageban.ru/thumbs/2020.02.21/6b859961e597162918f68fc9ef6926f9.png (https://i5.imageban.ru/out/2020/02/21/6b859961e597162918f68fc9ef6926f9.png)
Как видите и в этом случае необходимые данные были заменены:
https://i4.imageban.ru/thumbs/2020.02.21/92e2fde74d3b231f407e50e937c7cc4c.png (https://i4.imageban.ru/out/2020/02/21/92e2fde74d3b231f407e50e937c7cc4c.png)
Всё, теперь вы умеете импортировать *.reg и заменять некорректные данные на необходимые!
Хочу заметить: Всё в одной программе.
Nordek, Низкий поклон. Голова пока кипит ))) Взял на вооружение. Никаких конвертеров теперь
Gnom_aka_Lexander
22-02-2020, 21:15
Старинный проект. Пришлось немного переписать, на win10 работать не хотел.
Поиск и закрытие определенного процесса. В теории, при запуске от имени админа, убивает даже системные процессы, поэтому использовать с осторожностью, имя процесса указывать максимально точно.
может кто знает как сделать чтобы сетап, удалял самого себя после инсталляции? пробовал батником но не получается, вообщем не могу выполнить батник после закрытия инсталлятора. может у кого есть идеи на сей щет... хочу сделать удалятор из инсталлятора, чтобы не было етого unins000, файла unins000.dat рядом, и была возможность редактировать описание файла.
как сделать чтобы сетап, удалял самого себя после инсталляции? »
Никогда не делайте так.
Iska, :) боюсь даже спрашивать почему...
Beavimo, потому что для пользователя будет нелепо выглядеть удаление инсталляционного пакета после инсталляции и не вызовет ничего, кроме ругани в адрес автора.
Iska, ты наверное не понял я хочу удалятор на основе инсталлятора построить
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Test]
"DisplayName"="Test"
"Publisher"="Test.com"
"DisplayVersion"="1.0.0.0"
"DisplayIcon"="C:\\Test\\Test.exe"
"InstallLocation"="C:\\Test\\"
"UninstallString"="C:\\Test\\Test.exe"
"NoModify"=dword:00000001
это поможет организовать иконку в программы и компоненты
я хочу удалятор на основе инсталлятора построить »
Beavimo, а так — тем более не делайте.
а так — тем более не делайте. »Быть может не то, что вы подумали?!
я хочу удалятор на основе инсталлятора построить »
Например #532 (http://forum.oszone.net/showpost.php?p=1826311) (Варианты перебираю с помощью поиска. Вы же не хотите для себя этого сделать.).
Gnom_aka_Lexander
26-02-2020, 12:06
Beavimo, Есть объект UninstallProgressForm, тоже самое, что и Wizardform, делать с ним можно тоже все, что душе заблагорассудиться - менять размеры, накладывать картинки, добавлять объекты, в том числе и NoteboockPage, соответственно и страницы. Нет нужды делать отдельный деинсталлятор, все можно сделать и на оригинальном.
Быть может не то, что вы подумали?! »
Ну, как было написано — так я и понял.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.