Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows 10 (http://forum.oszone.net/forumdisplay.php?f=118)
-   -   [решено] Не отображается ссылка на программу в меню "Все программы" (http://forum.oszone.net/showthread.php?t=327840)

asds1 24-06-2017 14:07 2746987

Не отображается ссылка на программу в меню "Все программы"
 
У меня своя программа(написана мною)
Записываю в реестр пути деинсталяции. Деинсталятор тоже самописный и срабатывает все отлично
Решил прописать ссылку на деинсталятор в меню Все программы.
Создаю ссылку и помещаю(программно) её в C:\ProgramData\Microsoft\Windows\Start Menu\Programs
Вот все работает, только этот ярлык не отображается в меню Все программы.
В ярлыке указано все как обычно - объект, рабочая директория и так далее.
Программа работает от имени администратора
Пишу на AutoIT
Система win 10. Работает хорошо. проблем с установкой софта нет.

Iska 24-06-2017 14:34 2746993

Цитата:

Цитата asds1
Решил прописать ссылку на деинсталятор в меню Все программы.
Создаю ссылку и помещаю(программно) её в C:\ProgramData\Microsoft\Windows\Start Menu\Programs
Вот все работает, только этот ярлык не отображается в меню Все программы.
В ярлыке указано все как обычно - объект, рабочая директория и так далее. »

asds1, без исходного кода — разговор ни о чём.

asds1 24-06-2017 15:39 2747004

Iska, ))))
Код:

$gtprname - произвольное имя, которое вводит пользователь
                $unico - иконка, которая будет отображаться в меню. Берется или из файла деинсталятора или непосредственно из файла *.ico, который выбрал пользователь
                $unmod = @ProgramFilesDir & '\' & $gtprname
                DirCreate($unmod)
                FileCopy($wkdir & '\unmod.exe', $unmod & '\unmod.exe')
                DirCreate(@ProgramsCommonDir & '\' & $gtprname)
                FileCreateShortcut($unmod & '\unmod.exe', @ProgramsCommonDir & '\' & $gtprname & '\unmod.lnk', $unmod, '', '', $unico)

остальная тысяча строк не имеет отношения к созданию ярлыка

Iska 24-06-2017 15:57 2747008

Цитата:

Цитата asds1
только этот ярлык не отображается в меню Все программы. »

А после завершения сеанса и повторного входа (или после перезагрузки)?

asds1 24-06-2017 16:08 2747010

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

asds1 02-07-2017 13:15 2748550

так и не нашел в чем проблема. ограничился созданием ярлыка без папки

Petya V4sechkin 02-07-2017 13:30 2748554

asds1, такой вариант бывает.

asds1 03-07-2017 12:04 2748723

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

Iska 03-07-2017 12:30 2748732

asds1, не думали использовать не самописный инсталлятор, а какой-нибудь WiX, InnoSetup или NSIS?

Petya V4sechkin 03-07-2017 12:44 2748739

asds1, сделайте лог Process Monitor следующим образом:
  1. запустите Process Monitor;
  2. откройте меню Пуск -> Все программы;
  3. сохраните лог: меню File -> Save -> PML-формат;
  4. заархивируйте и выложите на любой файлообменник, например dropmefiles.com;
  5. сообщите, какой ярлык не виден в списке.

asds1 03-07-2017 13:21 2748757

Цитата:

Цитата Iska
asds1, не думали использовать не самописный инсталлятор, а какой-нибудь WiX, InnoSetup или NSIS? »

так в том то и суть, что мой проект это и есть альтернатива тому же IS, только с узкой специализацией. Желающих собрать свой модпак достаточно, но изучать кодирование есть далеко не у всех. вот я и предоставил такой инструмент. в предыдущих версиях не было опции "деинсталяция", добавил по просьбе.

Цитата:

Цитата Petya V4sechkin
сделайте лог Process Monitor с »

сделаю

Iska 03-07-2017 13:42 2748764

Не вижу, в чём тут альтернатива, кроме возникшей проблемы.

asds1, Вы можете оставить свою оболочку ровно такой же, но делать готовую инсталляцию, например, под тот же InnoSetup, благо сборка им вполне может делаться программно: Inno Setup Help - Command Line Compiler Execution. И никому изучать кодирование (кроме Вас) не понадобится.

asds1 03-07-2017 16:54 2748828

Iska, не важно на чем кодировать, проблем все равно не избежать. Даже благоприятная среда кодирования не сделает код за тебя )
В AutoIT я вижу достаточно инструментов, чтобы делать свой проект
Установка деинсталятора это мелочь, просто не люблю оставлять не решенных задач

Теперь о самой проблеме. Запустил "трудный" код создания папки+ярлыка деинсталятора - сейчас все работает норм. никуда не исчезает ничего. перегружал систему, в меню Все приложения ярлык есть
сделал, правда, незначительное дополнение, но на суть оно не должно было повлиять
далее конкретная часть регистрации деинсталяции в системе
Код:

$unmod = @ProgramFilesDir & '\' & $gtprname
DirCreate($unmod)
FileCopy($wkdir & '\unmod.exe', $unmod & '\unmod.exe')
$unico = $unmod & '\uninst.ico' или $unico = $unmod & '\unmod.exe'
RegWrite('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' & $gtprname, 'DisplayIcon', 'REG_SZ', $unico)
RegWrite('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' & $gtprname, 'DisplayName', 'REG_SZ', $gtprname)
RegWrite('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' & $gtprname, 'UninstallString', 'REG_SZ', $unmod & '\unmod.exe')
RegWrite('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' & $gtprname, 'UninstallDirectory', 'REG_SZ', $unmod)
RegWrite('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' & $gtprname, 'InstallLocation', 'REG_SZ', $unmod)
RegWrite('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' & $gtprname, 'Publisher', 'REG_SZ', $gtprname)
DirCreate(@ProgramsCommonDir & '\' & $gtprname)
FileCreateShortcut($unmod & '\unmod.exe', @ProgramsCommonDir & '\' & $gtprname & '\Удалить ' & $gtprname & '.lnk', $unmod, '', '', $unico)

если возникнет опять ситуация с пропажей ярлыка, тогда сделаю лог от PM
Спасибо всем за помощь советами

Iska 03-07-2017 17:18 2748836

Цитата:

Цитата asds1
Iska, не важно на чем кодировать, »

Не могу с Вами согласиться, коллега.

Цитата:

Цитата asds1
Даже благоприятная среда кодирования не сделает код за тебя ) »

Разумеется. Но к пользователю Вашего проекта это не будет иметь никакого отношения.

Цитата:

Цитата asds1
В AutoIT я вижу достаточно инструментов, чтобы делать свой проект »

Дык, кто ж запретит. Там вон и готовый проект инсталлятора где-то на официальном форуме лежит.

Цитата:

Цитата asds1
Установка деинсталятора это мелочь, просто не люблю оставлять не решенных задач »

Не мелочь. Это необходимость.

asds1 04-07-2017 14:13 2749024

история повторилась. сделал лог из PM
ссылка
не виден ярлык - Удалить ModPack World of Tanks ver.0.9.19.0.2.lnk
расположение ярлыка - C:\ProgramData\Microsoft\Windows\Start Menu\Programs\ModPack World of Tanks ver.0.9.19.0.2\Удалить ModPack World of Tanks ver.0.9.19.0.2.lnk

Petya V4sechkin 04-07-2017 16:16 2749075

asds1, в этом логе нет обращений к Start Menu.

asds1 04-07-2017 17:26 2749091

сделал еще раз
скачать

asds1 11-07-2017 11:00 2750557

примерно так выходит.
если создание папки в Start Menu идет после записи деинсталяции в реестр, то наблюдаю описанную проблему с исчезновением ярлыка
если сначала создаю ярлык в собственной папке по адресу C:\ProgramData\Microsoft\Windows\Start Menu\Programs, а потом уже пишу в реестр, то ярлык не исчезает.
не могу уловить взаимосвязи очередности создания папки и записи в реестр. конечно же, указанная очередность работает, но вот почему так, не могу понять.


Время: 17:53.

Время: 17:53.
© OSzone.net 2001-