![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
Нов |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 8.7.2008 Где: Украина г. Харько в Репутация: нет Всего: нет |
Доброе время суток.
Есть большой WinForm проект, включаяющий в себя 10 solutions (45 мб). Написан на .Net 2.0. Устанавливается он с помощью Setup Project VS2005. Необходимо ставить клиентам расширение функционала + bagfix Есть два подхода: 1. Реализованное ручками средство, меняющее изменненные dll (так как проект не подписан (Signed)) боюсь получить "ад dll"). 2. Переустановка всего проекта (удаление старого и установка нового. Но я так подозреваю, что стандартный установщик студии это сделать не сможет). Вопросы: 1. Существует ли стандартное средство обновления? (Т.е. аналог Setup Project). 2. Какой из двух подходов рациональнее (может кто то сталкивался) Это сообщение отредактировал(а) Нов - 28.8.2009, 19:36 |
|||
|
||||
nagg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 6.1.2008 Где: Minsk Репутация: нет Всего: 4 |
Почему не сможет обновить - повышайте версию в свойствах setup проекта (вам предложат изменить Product code - соглашайтесь)
и запускайте у заказчика... А ещё можно посмотреть в сторону ClickOnce --------------------
I am the State... |
|||
|
||||
Нов |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 8.7.2008 Где: Украина г. Харько в Репутация: нет Всего: нет |
Спасибо. Это скорее всего решение.
Почему то вылетает форма Repeir or Uninstall. Интересно почему он не пишет Update? Ведь версии разные. Нужно будет либо при запуске программы запускать скрипт на модернизацию БД либо на отдельном событии это делать. Сейчас буду с этим всем разбираться. |
|||
|
||||
Нов |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 8.7.2008 Где: Украина г. Харько в Репутация: нет Всего: нет |
Итак что получилось:
1. Замена проекта при новой версии. Есть в свойствах Setup Project св-ва DetectNewerInstalledVersion и RemovePreviousVersions. Выставляешь их - и все ок. 2. Добавил новый проект Setup Project для модернизации. Убрал ненужные формы (ввод данных про БД и т.п.) сейчас буду пробавать идти дальше. Что не получилось: 1. Добавить скрипт расширяющий БД. Но в принципе понимаю в какую сторону необходимо двигаться - добавить класс унаследовать его и т.п. Вопрос: 1. Можно каким то образом влиять на логику появления инсталяционных форм? Это сообщение отредактировал(а) Нов - 6.3.2009, 12:20 |
|||
|
||||
nagg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 6.1.2008 Где: Minsk Репутация: нет Всего: 4 |
Насколько мне известно - никак. Нетакая уж мощная штука, этот сетап. Разве что свои кастом-экшнс можно добавлять.
--------------------
I am the State... |
|||
|
||||
mihryak |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 19 Всего: 36 |
да
инсталляторы можно делать насколько угодно гибкими, но это, увы, совсем не простая процедура конкретных действий не скажу, т.к. до смерти боюсь брать на себя таски по созданию инсталляционных пакетов - дело неблагодарное, очень много возни, никогда не заканчивается и т.д. |
||||
|
|||||
Нов |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 8.7.2008 Где: Украина г. Харько в Репутация: нет Всего: нет |
Возникла следующая проблема:
При той же задаче (сохранить два XML файла конфига при update через инсталлер студии) пока есть два решения: Первое: 1. Удалить эти файлы из File System on Target Machine. 2. RemovePreviousVersions = false Файлы сохраняются. Все что есть в инстеллере - просто переписывает то что уэе установлено. Удовлетворяет условию - т.е. и файлы конфига целы и update стоит. Но есть большой минус - в списке установленных программ становиться две программы. Т.е. база и апдейт. Второе: 1. Свойство RemovePreviousVersions = true 2. Унаследую System.Configuration.Install.Installer своим классом. Добавляю в Custom Actions->install свое действие (Primary output from имя проекта (Active)) 3. Пытаюсь прочитать эти файлы (т.к. при первичной инсталяции в них вписывается значения) в строку и после этого в случае если они не существуют создать их и записать строку. В принципе можно их и скопировать во временный каталог а потом переопределить - не принципиально. Но при установке выкидывается Exception File Not Found и выполняется откат. Вот код (прошу прощения за VB)
Вопросы: 1. Как можно дебажить этот код? Вставлял в код Debugger.Break() - не работает. Аттачился к процессу - и ставил точку останова (No symbol have been loaded on this document...) 2. Как я понимаю, сейчас к моменту наступления Install все файлы предыдущего проекта уже не существуют. Значит необходимо событие, во время которого они еще существуют. И тогда считанные строки можно записать в коллекцию stateSaver и т.д. Итак главный вопрос - что же это за событие? (сейчас я как раз буду искать...) попробовал OnBeforeInstall - не подходит - файлов уже нет. Это сообщение отредактировал(а) Нов - 16.3.2009, 13:06 |
|||
|
||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 18 Всего: 67 |
Ведение логов? -------------------- СУВ, Partizan. |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Нов, инсталлер дебажится только через логи :( еще есть логи MSI. неблагодарное это дело. на старом проекте с определенного момента просто написал полностью кастомный инсталлер.
|
|||
|
||||
Нов |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 8.7.2008 Где: Украина г. Харько в Репутация: нет Всего: нет |
Спасибо. Решил с логами не разбираться. Понаставил MessageBox.
В целом - решил проблему следующим образом -при первом запуске считываю конфиг файлы, изменяю в них кон.стринги и записываю их в папку AllUser... при следующем запуске проверяю на существование и если нет - считываю те файлы и перезаписываю в новые. Кому интересно - вот код
|
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |