PDA

Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 9]


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 [29] 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57

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 - она возвращает тоже самое, но без слеша

Beavimo
18-02-2020, 04:43
наконец то....: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) каталог установки брался автоматом, так как пишеться апдейт а не полноценный софт.

nik1967
18-02-2020, 12:14
Beavimo,

DefaultDirName={code:ExtractFilePath|{reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\IEXPLORE.EXE,|}}

VLADEV
20-02-2020, 16:27
Привет. что я делаю не так? Помогите новичку. Винда 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

VLADEV
20-02-2020, 22:38
habib2302,

Спасибо я конечно это сделал. я использовал конвертер реестра Converter.exe
и он не проставляет мне HKLM64 Вот я и не понял почему .

iglezz
20-02-2020, 23:22
и он не проставляет мне HKLM64 Вот я и не понял почему . »
А откуда ему знать, какая разрядность у целевой системы и программы, которой эти ветки реестра предназначаются?

Там, где предполагается несовпадение разрядности программы и системы, пути в реестре и на диске надо самому проверять.

Nordek
21-02-2020, 02:41
а прописывается в
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 и заменять некорректные данные на необходимые!
Хочу заметить: Всё в одной программе.

VLADEV
21-02-2020, 22:07
Nordek, Низкий поклон. Голова пока кипит ))) Взял на вооружение. Никаких конвертеров теперь

Gnom_aka_Lexander
22-02-2020, 21:15
Старинный проект. Пришлось немного переписать, на win10 работать не хотел.
Поиск и закрытие определенного процесса. В теории, при запуске от имени админа, убивает даже системные процессы, поэтому использовать с осторожностью, имя процесса указывать максимально точно.

Beavimo
24-02-2020, 09:35
может кто знает как сделать чтобы сетап, удалял самого себя после инсталляции? пробовал батником но не получается, вообщем не могу выполнить батник после закрытия инсталлятора. может у кого есть идеи на сей щет... хочу сделать удалятор из инсталлятора, чтобы не было етого unins000, файла unins000.dat рядом, и была возможность редактировать описание файла.

Iska
24-02-2020, 18:04
как сделать чтобы сетап, удалял самого себя после инсталляции? »
Никогда не делайте так.

Beavimo
24-02-2020, 22:54
Iska, :) боюсь даже спрашивать почему...

Iska
25-02-2020, 00:05
Beavimo, потому что для пользователя будет нелепо выглядеть удаление инсталляционного пакета после инсталляции и не вызовет ничего, кроме ругани в адрес автора.

Beavimo
25-02-2020, 01:04
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

это поможет организовать иконку в программы и компоненты

Iska
25-02-2020, 05:21
я хочу удалятор на основе инсталлятора построить »
Beavimo, а так — тем более не делайте.

Nordek
26-02-2020, 02:12
а так — тем более не делайте. »Быть может не то, что вы подумали?!

я хочу удалятор на основе инсталлятора построить »
Например #532 (http://forum.oszone.net/showpost.php?p=1826311) (Варианты перебираю с помощью поиска. Вы же не хотите для себя этого сделать.).

Gnom_aka_Lexander
26-02-2020, 12:06
Beavimo, Есть объект UninstallProgressForm, тоже самое, что и Wizardform, делать с ним можно тоже все, что душе заблагорассудиться - менять размеры, накладывать картинки, добавлять объекты, в том числе и NoteboockPage, соответственно и страницы. Нет нужды делать отдельный деинсталлятор, все можно сделать и на оригинальном.

Iska
26-02-2020, 17:22
Быть может не то, что вы подумали?! »
Ну, как было написано — так я и понял.




© OSzone.net 2001-2012