Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Uninstall in Setup project VS2005

226  
viger2 постоялец09.08.09 23:43
viger2
NEW 09.08.09 23:43 
всем привет! в VS2005 есть так называемый Setup project при помощи которого можно создать инсталяционную программку.
к сожалению там нет возможности прямо создать деинсталлационку. но можно прикрепить .bat с msiexec /x {бля бля бля}
Вроде работает нормально, но если в директории где была аппликация останутся файлы которых небыло
в самой инсталяции то этот орднер остается жить.
Как его можно автоматически убить вместе с оставшимся содержимым? у msiexec вроде нет такой опции...
все что вы сделаете в интернете может быть использовано против вас!
#1 
Murr коренной житель09.08.09 23:50
Murr
NEW 09.08.09 23:50 
в ответ viger2 09.08.09 23:43
Набери в Комманд Промпте HELP RMDIR и будет тебе счастье... особенно в комбинации с RUN ONCE реестра.
#2 
viger2 постоялец10.08.09 00:03
viger2
NEW 10.08.09 00:03 
в ответ Murr 09.08.09 23:50
В ответ на:
Набери в Комманд Промпте HELP RMDIR и будет тебе счастье... особенно в комбинации с RUN ONCE реестра.

про RMDIR я уже думал, и засунуть эго тоже в тотже .bat Но просто когда он запустится то msiexec физически
удалит этот .bat, если конечно сможет т.к. .bat будет для системы числится открытым. Во всяком случае, боюсь,
что к тому времени когда должен будет запустится RMDIR етого скрипта уже небудет...
все что вы сделаете в интернете может быть использовано против вас!
#3 
Murr коренной житель10.08.09 00:14
Murr
NEW 10.08.09 00:14 
в ответ viger2 10.08.09 00:03
Тебе и не надо чтобы он был. Что надо - прописать в реестре разовое выполнение RMDIR при перезагрузке.
#4 
viger2 постоялец10.08.09 00:21
viger2
NEW 10.08.09 00:21 
в ответ Murr 10.08.09 00:14
В ответ на:
прописать в реестре разовое выполнение RMDIR при перезагрузке.

хмм... к сожалению при инсталляции и деинсталяции непредусмотрен ресет машины.
но спасибо за совет ,
завтра попробую поковырятся....
все что вы сделаете в интернете может быть использовано против вас!
#5 
Simple Nothing is f*cked10.08.09 09:49
Simple
NEW 10.08.09 09:49 
в ответ viger2 09.08.09 23:43
А чем тебе это мешает? Это же не твоя проблема, что юзер пихает в папку всякий мусор.
#6 
Программист постоялец10.08.09 12:07
NEW 10.08.09 12:07 
в ответ viger2 09.08.09 23:43
В ответ на:
всем привет! в VS2005 есть так называемый Setup project при помощи которого можно создать инсталяционную программку.

Если нужна какая-то мелкая инстоляшка, то вполне пойдет. Если надо что-то больше, чем просто скопировать файлы, то используй либо InstallShield (стоит бабок), либо WiX (бесплатно).
В ответ на:
к сожалению там нет возможности прямо создать деинсталлационку. но можно прикрепить .bat с msiexec /x {бля бля бля}

В этом мне совсем не верится :)
Во-певых, есть ARP (Add/Remove Programs). И если ты умышлено не выключил создание записи в ARP (ARPSYSTEMCOMPONENT) и/или не выключил кнопку Remove (ARPNOREMOVE), то удалить можно и без танцев с батником. Кстати этот {бля бля бля} - это ProductCode, который в следующей версии будет другой -> должен быть другой батник :) А т.к. батник - это просто текстовый файл без версии, то при minor upgrade'е у тебя еще добавится танцев с бубном :)
В ответ на:
Вроде работает нормально, но если в директории где была аппликация останутся файлы которых небыло
в самой инсталяции то этот орднер остается жить.

Это технология msi, собтвенно говоря все правильно. Если инсталлер не скопировал/создал какой-то файл/запись в реесте, то он и не будет его удалять. Для этого есть таблица RemoveFile/RemoveRegistry и соответствующие экшены.
Вообще - создавать какие-то файлы в папке инстоляции - некошерно :) Хотябы только из-за того, что на Висте и Windows 7 доступ к Program Files разрешен только админам ;) Так что надо бы еще раз продумать что и куда писать.
В ответ на:
Как его можно автоматически убить вместе с оставшимся содержимым? у msiexec вроде нет такой опции...

Есть несколько вариантов:
1) Как я уже говорил, используй таблицы RemoveFile/RemoveRegistry и соответствующие экшены
2) Удалять свой мусор в кастом экшене
3) Всязь архитектора за яйца и вместе с ним прочитать книжку по msi :) И довести до его сведения, что во время работы программа не должна ничего писать в Program Files, для этого есть %appdata%.
#7 
  scorpi_ скептик10.08.09 12:39
NEW 10.08.09 12:39 
в ответ viger2 09.08.09 23:43
В ответ на:
Как его можно автоматически убить вместе с оставшимся содержимым?

Ты не должен убивать то, что ты не устанавливал.
#8 
viger2 постоялец12.08.09 00:10
viger2
NEW 12.08.09 00:10 
в ответ Программист 10.08.09 12:07
Программист
В ответ на:
3) Всязь архитектора за яйца и ...

Отличная идея! только вот незнаю уже кто именно архитектор, и где у него яйца?
так уж сложилось исторически, что за три года над каждой версией програмки работало уже куча народу.
Изначальная экстерная фирма разработчик саппорт не делает. Походу дела меняются потребности
но все руководствуются принципом "Never Touch a Running System" только вот "это" нужно
сделать и все!, и вот "это" все накапливается как снежный ком что проще наверное на данный момент
создать новый проэкт и концепт чем постоянно этот workaround... Но естественно никто нехочет брать
на себя такую ответсвенность, тем более за три недели до релиза...
Последние пол года программулькой занимался студент,
сейчас его уже нет и выясняется что там еще куча багов, тут пришлось
вспомнить что когдато я тоже читал книжку фор дамиес как можно нажимать кнопки в Visual Studio...
В ответ на:
И довести до его сведения, что во время работы программа не должна ничего писать в Program Files, для этого есть %appdata%.

изначально, и для некоторых переменных до сих пор, сеттинги остаются в регестри, незнаю кто именно и когда это сделал, но сейчас большенство установок сохраняются
именно в файлах в Program Files апликации
В ответ на:
Вообще - создавать какие-то файлы в папке инстоляции - некошерно :) Хотябы только из-за того, что на Висте и Windows 7 доступ к разрешен только админам ;) Так что надо бы еще раз продумать что и куда писать.

упс... это серьезно? никогда еще под вистой неработал, представляю что будет когда будем под ней тестировать...
В ответ на:
Кстати этот {бля бля бля} - это ProductCode, который в следующей версии будет другой -> должен быть другой батник

хммм, как раз на днях я это тоже осознал на собственной шкуре... сейчас просто создаю батник с правильным ProductCode в сеттингах
прекомпиляции инстляционки... он там рядом написан Пока для внутренних релизов будем делать так, ендрелиз будем делать в InstallShield´е, вроде ктото в отделе
имеет лицензию...
Simple
В ответ на:
А чем тебе это мешает? Это же не твоя проблема, что юзер пихает в папку всякий мусор.

да, подумав, решил всетаки не городить огород. Ети два пустых файла в которые программка записывает свои установки при исполнении,
просто запихнул в инсталяционку, чтоб при деинсталяции они автоматически удалялись. Иначе при первом запуске новой версии
со старыми установками программа грохнится... Ну вот так вот все там через одно место...
scorpi_
В ответ на:
Ты не должен убивать то, что ты не устанавливал.

согласен
все что вы сделаете в интернете может быть использовано против вас!
#9 
Программист постоялец12.08.09 09:54
NEW 12.08.09 09:54 
в ответ viger2 12.08.09 00:10
В ответ на:
Отличная идея! только вот незнаю уже кто именно архитектор, и где у него яйца?

Это проблема :)
В любом случае, инстоллер - это нечто более серьезное, чем просто склепанный на коленке msi :) При этом, что интересно, фирмы зачастую этого не осознают :)
В ответ на:
изначально, и для некоторых переменных до сих пор, сеттинги остаются в регестри, незнаю кто именно и когда это сделал, но сейчас большенство установок сохраняются
именно в файлах в Program Files апликации

Ну с реестром проблем нет, если это HKCU :) В HKLM в Висте и Windows 7, по дефолту, писать могут только администраторы (ну и те юзеры, которым дали соответствующие права)
С Program Files таже история :)
В ответ на:
упс... это серьезно? никогда еще под вистой неработал, представляю что будет когда будем под ней тестировать...

Все зависит от программы, в принципе можно в манифесте указать, что программа требует административных прав и тогда все будет ОК :)
Ну вот только у пользователей с админскими правами будет соотщение от UAC'а (если он включен), а у неадминов будет предложение залогиниться админом :)
Надеюсь речь идет о какой-то серьезной программе, а не об mp3 плейре
В ответ на:
хммм, как раз на днях я это тоже осознал на собственной шкуре... сейчас просто создаю батник с правильным ProductCode в сеттингах

Зачем тебе вообще батник? Тебе мало удаления через ARP?
В ответ на:
прекомпиляции инстляционки... он там рядом написан Пока для внутренних релизов будем делать так, ендрелиз будем делать в InstallShield´е, вроде ктото в отделе
имеет лицензию...

Книжку надо по MSI прочитать, а смена инструмента ничего не даст. Гвозди можно забивать и газовым ключом, и молотком, и топором и даже лопатой :)
В ответ на:
Ети два пустых файла в которые программка записывает свои установки при исполнении,
просто запихнул в инсталяционку, чтоб при деинсталяции они автоматически удалялись. Иначе при первом запуске новой версии
со старыми установками программа грохнится... Ну вот так вот все там через одно место...

Одно некошерное рещение заменяете другим :)
Не думаю, что пользователь будет рад тому, что его заставляют в новой версии программы по новой устанавливать все настройки :)
И второе, кто тебе вообще сказал, что оставлять данные после деинстоляции плохо? :)
После деинстоляции можно, и в коммерческих программах даже нужно, оставлять данные :) Иначе такие вещи как тестовая лиценззия на Х дней просто не будет работать ;)
#10 
Simple Nothing is f*cked12.08.09 10:13
Simple
NEW 12.08.09 10:13 
в ответ Программист 12.08.09 09:54
В ответ на:
Не думаю, что пользователь будет рад тому, что его заставляют в новой версии программы по новой устанавливать все настройки :)

Есть же ключик Permanent.
#11 
Simple Nothing is f*cked12.08.09 10:15
Simple
NEW 12.08.09 10:15 
в ответ viger2 12.08.09 00:10
У нас почти та же ситуация (разве что продукт уже довольно давно в наших руках, и ноухау какое-никакое уже восстановлено). Поначалу коллега, который уже ушел, сделал инсталлер на VS2005. Я продолжил его славное дело, но потихоньку задумался о переходе на NSIS (чтобы был завершенный процесс с CMake). Но пока я был в отпуске, шефиня переделала все по InstallShield, благо лицензия есть.
#12 
Программист постоялец12.08.09 10:23
NEW 12.08.09 10:23 
в ответ Simple 12.08.09 10:13
Permanent конечно есть, но вот только
viger2
В ответ на:
Иначе при первом запуске новой версии со старыми установками программа грохнится...

;)
А вообще, при деинстоляции настройки удалять не жуно :)
#13 
Simple Nothing is f*cked12.08.09 10:27
Simple
NEW 12.08.09 10:27 
в ответ Программист 12.08.09 10:23
Чуется мне, что их продукт еще хуже нашего, хотя казалось бы, куда хуже?! :-D
#14 
viger2 постоялец13.08.09 10:58
viger2
13.08.09 10:58 
в ответ Программист 12.08.09 09:54
В ответ на:
В любом случае, инстоллер - это нечто более серьезное, чем просто склепанный на коленке msi :) При этом, что интересно, фирмы зачастую этого не осознают :)

я тоже это раньше не осознавал...
В ответ на:
в принципе можно в манифесте указать, что программа требует административных прав и тогда все будет ОК :)

да так вроде и раньше делали...
В ответ на:
Надеюсь речь идет о какой-то серьезной программе, а не об mp3 плейре

программка для узких прикладных специалистов но о серьзности которой никто незадумывался
пока на горизонте небыло видно термина сдачи, иначе бы ее недали делать студенту...
В ответ на:
Зачем тебе вообще батник? Тебе мало удаления через ARP?

сказали "нужнО"! Шоб была в стартменю иконка на нее давиш и программка удаляется и чтоб
в "Control Panel" не лазить...
А что такое ARP? в гугле много вариантов... (надеюсь никто небудет тут надо мной смеятся за тупые вопросы...? )
все что вы сделаете в интернете может быть использовано против вас!
#15 
viger2 постоялец13.08.09 11:02
viger2
NEW 13.08.09 11:02 
в ответ Simple 12.08.09 10:27
В ответ на:
Чуется мне, что их продукт еще хуже нашего, хотя казалось бы, куда хуже?! :-D

да, куда еще хуже?... Будете смеятся но там такие вещи наделаны, например
GUI вызывает напрямую функции которые по опредению длятся по несколько минут
и все это без каких либо там разделений процессов и т.д. т.е. просто все виснет
пока незакончится функция... Я не информатик, и у меня мало опыта в программировании
под операционками, но я и то понимаю что так делать нельзя!
Одно только успакаивает что эта программка у нас не является основным продуктом,
а скорее второстепенным или даже третистепенным с ограниченными возможностями,
она дается юзеру бесплатно если покупает наши приборы, а с приборами можно работать и
без программки.
есть конечно у нас и профессионально сделанные прикладные пакеты но они стоят денег...
все что вы сделаете в интернете может быть использовано против вас!
#16 
Simple Nothing is f*cked13.08.09 11:30
Simple
NEW 13.08.09 11:30 
в ответ viger2 13.08.09 11:02
Я не буду смеяться, так как у нас и не такое встречается :)
#17 
Программист постоялец13.08.09 11:50
NEW 13.08.09 11:50 
в ответ viger2 13.08.09 10:58
В ответ на:
я тоже это раньше не осознавал...

Ну вобщем-то 3 года тому назад я тоже думал, что инсталлер - это фигня :)
Потом я попал в Installer Team :) (правда мы тут не только инсталлер делаем, но и целую deploy систему :))
В ответ на:
да так вроде и раньше делали...

Ну если юзеры работают в админском профайле и с выключенным UAC'ом, то можно и дальше так делать :)
В ответ на:
сказали "нужнО"! Шоб была в стартменю иконка на нее давиш и программка удаляется

Ну надо тогда просто шорткат добавить и все дела. Если не получится сделать прямой шорткат на msiexec /x {ProductCode}, то сделай так:
uninstall.bat
В ответ на:
msiexec /x %1

И ProductCode передавай как аргумент. В этом случае не надо будет каждый раз переписывать батник.
Хотя это извращение
В ответ на:
А что такое ARP?

Add/Remove Programms
#18 
viger2 постоялец14.08.09 12:58
viger2
NEW 14.08.09 12:58 
в ответ Программист 12.08.09 09:54
В ответ на:
Книжку надо по MSI прочитать, а смена инструмента ничего не даст

хммм помоему мне без этого уже необойтись.... может что посоветовать? типа MSI для чайников...
все что вы сделаете в интернете может быть использовано против вас!
#19 
Программист постоялец14.08.09 13:10
NEW 14.08.09 13:10 
в ответ viger2 14.08.09 12:58
Я в свое время читал Windows Installer 3.1 автор Andreas Kerl.
Сейчас есть Inside Windows Installer 4.5 его же.
#20