Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / InnoSetup и Windows 10 / 22 сообщений из 22, страница 1 из 1
03.05.2018, 16:46
    #39639539
Listratenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InnoSetup и Windows 10
В WINDOWS 10, во время инсталляции, возникает проблема с созданием ярлыка на рабочем столе. (на w7 и XP всё Ок.)
Инсталляция проходит успешно, программа потом запускается как положено. Но вот ярлык на рабочем столе не создаётся. Причем в конце инсталляции - во время создания ярлыка происходит ошибка:

IPersistFile::Save: сбой; код 0x8007002. Не удаётся найти указанный файл.

Это происходит из за включенного по умолчанию запрета на внесение изменений в т.н. "Контролируемых папках с управляемым доступом". В том числе и на рабочем столе. Папка "Рабочий стол" как и некоторые другие входит по умолчанию в этот список.

Вопрос: - Как красиво обработать ошибку (если она возникнет) если винда не дает создать ярлык. Ну что бы пользователь понял о чем идет речь и почему инсталлятор ругается.

Код обычный:
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}";
[Icons]
Name: "{userdesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}";Comment: "Приложение такое то"; Tasks: desktopicon

Если снимаю галочку "Создать ярлык на рабочем столе", - ошибки не возникает. Если отключаю функцию "Контролируемых папок", то ошибка так же не возникает.
Т.е. проблема ясна, теперь как обработать ошибку?! Например, что бы выскакивало сообщение "Ярлык на рабочий стол добавьте вречную".

Может пример кто кинет или куда копать...

Спасибо.
...
Рейтинг: 0 / 0
03.05.2018, 16:52
    #39639549
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InnoSetup и Windows 10
Админские права включены?
...
Рейтинг: 0 / 0
03.05.2018, 16:54
    #39639551
Listratenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InnoSetup и Windows 10
И манифест в екзешнике есть и права... ВСЁ
Проблема только в том - как обработать ошибку. Что бы пользователь понял.
...
Рейтинг: 0 / 0
03.05.2018, 16:55
    #39639554
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InnoSetup и Windows 10
Listratenko,

Вот что на форуме InnoSetup есть - оно?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SOLVED:
We circumvent the errormessage with the help of registry keys.
You just have to change following registry key right before and, right after installation via OPSI script.
Change before Installation (to e.g.: C:\tmp):
HKEY_USERS\S-1-5-18\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
Change after installation back to the old entry (%USERPROFILE%\Desktop):
HKEY_USERS\S-1-5-18\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
That worked like a charm.
...
Рейтинг: 0 / 0
03.05.2018, 16:58
    #39639556
Listratenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InnoSetup и Windows 10
Главное вот в чём: - Программа лежит в Интернете и её скачивают юзеры с 0-выми знаниями. Они не знают что такое права.
Им поставили винду и всё!
Им нужно дать подсказку - Не боись, - жми дальше!!! А то там сбоку, в винде выскакивает сообщение о небезопасных файлах и возможных вирусах.
...
Рейтинг: 0 / 0
03.05.2018, 16:58
    #39639557
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InnoSetup и Windows 10
ListratenkoКод обычный:

А что у тебя прописано для "PrivilegesRequired"?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
03.05.2018, 16:59
    #39639559
Listratenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InnoSetup и Windows 10
Вопрос только один - как обработать ошибку!
...
Рейтинг: 0 / 0
03.05.2018, 17:00
    #39639561
Listratenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InnoSetup и Windows 10
Я же написал что манифест есть. Значит и права админские.
Вопрос в только как обработать ошибку.
...
Рейтинг: 0 / 0
03.05.2018, 17:04
    #39639565
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InnoSetup и Windows 10
ListratenkoА то там сбоку, в винде выскакивает сообщение о небезопасных файлах и возможных вирусах.

Тогда тебе нужен дважды подписанный инсталлятор.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
03.05.2018, 17:16
    #39639572
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InnoSetup и Windows 10
ListratenkoЯ же написал что манифест есть.
При чем здесь манифест? У установщика или у устанавливаемой программы?
...
Рейтинг: 0 / 0
03.05.2018, 17:22
    #39639575
Listratenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InnoSetup и Windows 10
Как ошибку обработать?
Если хотите поболтать, - на другую ветку!!!
Если хотите помочь, - буду благодарен.
Вас про права никто не спрашивал. - Спрашивали как обработать ошибку?!
...
Рейтинг: 0 / 0
03.05.2018, 17:25
    #39639578
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InnoSetup и Windows 10
ListratenkoКак ошибку обработать?

Скачать исходники InnoSetup и поправить. Другого пути для тебя - нет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
03.05.2018, 17:42
    #39639585
white_nigger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InnoSetup и Windows 10
Dimitry SibiryakovСкачать исходники InnoSetup и поправить. Другого пути для тебя - нет.Ну один нормальный по крайней мере есть - задать вопрос на форуме InnoSetup
...
Рейтинг: 0 / 0
03.05.2018, 19:52
    #39639647
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InnoSetup и Windows 10
ListratenkoВопрос: - Как красиво обработать ошибку (если она возникнет) если винда не дает создать ярлык. Ну что бы пользователь понял о чем идет речь и почему инсталлятор ругается.


Навскидку: сделать check-функцию для этого ярлыка, где попытаться создать на рабочем столе пустой файл. Если удалось - возвращаем True и InnoSetup создаёт ярлык, если не удалось - показываем пользователю нужное сообщение и возвращаем False - InnoSetup не будет создавать ярлык.
...
Рейтинг: 0 / 0
03.05.2018, 20:47
    #39639659
asutp2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InnoSetup и Windows 10
ListratenkoКак ошибку обработать?
Если хотите поболтать, - на другую ветку!!!
Если хотите помочь, - буду благодарен.
Вас про права никто не спрашивал. - Спрашивали как обработать ошибку?!с таким отношением к другим придется тебе самому решать свою проблему.
...
Рейтинг: 0 / 0
03.05.2018, 23:03
    #39639684
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InnoSetup и Windows 10
Listratenko,

Боюсь, что, Листратенко, скоро ты будешь обрабатывать свои ошибки сам с таким подходом к обсуждению.
По теме: подписывай сетап и бинарники, если хочешь минимум проблем с UAC'ом.
...
Рейтинг: 0 / 0
04.05.2018, 07:10
    #39639736
Listratenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InnoSetup и Windows 10
alekcvp,

Спасибо за идею. - Это работает! То, что нужно!
...
Рейтинг: 0 / 0
04.05.2018, 09:16
    #39639782
pit_alex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InnoSetup и Windows 10
Listratenko,

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Check: IsControlledFolderAccesEnabled; 

[code]

function IsControlledFolderAccesEnabled: boolean;
var
  Val: Cardinal;
  RootKey: integer;
begin
  Result := True;

  if IsWin64 then
    RootKey := HKLM64
  else
    RootKey := HKLM32;

  if RegQueryDWordValue(RootKey, 'SOFTWARE\Microsoft\Windows Defender\Windows Defender Exploit Guard\Controlled Folder Access', 'EnableControlledFolderAccess', val) then
    Result := Val = 0;
end;
...
Рейтинг: 0 / 0
04.05.2018, 09:25
    #39639787
Listratenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InnoSetup и Windows 10
pit_alex,
Я сделал через создание файла. Если файл создается - значит доступ есть, - можно создавать и ярлык.
Попробую Ваш метод. Потом сообщу..
Огромное спасибо.


function alowAccess(): Boolean;
var Hndl: Thandle;
SA: SECURITY_ATTRIBUTES;
begin
Result:= False;
SA.nLength:=SizeOf(SA);
SA.bInheritHandle:=True;
Hndl:= CreateFile(PChar(ExpandConstant('{userdesktop}\test.tmp')), GENERIC_READ or GENERIC_WRITE, 0, SA, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
//Если не удается создать файл, дает ошибку - файл не найден.
if Hndl>0 then
Result:= True
else
begin
Result:=False;
MsgBox('Ярлык на рабочем столе создать не удалось, т.к. запрещено операционной системой.'+#13#10+'Позже создайте его вручную.', mbInformation, MB_ok);
end;
CloseHandle(Hndl);
DeleteFile(ExpandConstant('{userdesktop}\test.tmp'));
end;
...
Рейтинг: 0 / 0
04.05.2018, 09:31
    #39639791
pit_alex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InnoSetup и Windows 10
Listratenko,

при использовании
Код: pascal
1.
Check

метода, если возвращается False, то CheckBox вообще не будет отображен, поэтому что то писать пользователю не комильфо, так как пользователь еще не выбирал эту опцию. Да и создавать удалять файл без необходимости тоже не есть гуд ИМХО.
...
Рейтинг: 0 / 0
04.05.2018, 09:46
    #39639804
Listratenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InnoSetup и Windows 10
pit_alex,

Работает. Спасибо!
С моей стороны вопросов больше нету!
...
Рейтинг: 0 / 0
04.05.2018, 09:47
    #39639806
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InnoSetup и Windows 10
pit_alex Да и создавать удалять файл без необходимости тоже не есть гуд ИМХО.
С другой стороны, папка рабочего стола может быть просто без прав записи для пользователя (да, извращение, но я такое встречал), ваш вариант этого не предусматривает.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / InnoSetup и Windows 10 / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]