Установка WinForms приложения вместе с базой данных
От:
Аноним
Дата:
30.11.08 22:22
Оценка:
Народ, кто чем пользуется для установки написанного WinForms/C# приложения вместе с базой данных, с которой оно должно работать, на клиентскую машину? Я уже рассматривал внутренние возможности VS2008, почему-то некоторые пути, описанные в паре толстенных книжек, не существуют в моей версии VS2008 Professional, может быть для этих целей надо было бы иметь еще более полную версию, не знаю. Сторонние разработки типа InstallShield тяжеловаты по деньгам. Может как один из вариантов неплохо использовать студийный установщик, сделать setup, там в пререквизитах будет упомянута, скажем, MS SQL Server Express 2005, и потом уже прицепиться к ней и просто создать свою новвую базу из скрипта или восстановить прямо из бэкапа, так как там как минимум несколько табличек уже должны беть полные при установке? В общем, какие варианты, приемлимые по простоте-цене-удобству? Есно со временем надо будет уметь накатывать апдейты на эту же программу, не снося клиентских данных.
Дмитрий
Re: Установка WinForms приложения вместе с базой данных
Здравствуйте, Аноним, Вы писали:
А>Народ, кто чем пользуется для установки написанного WinForms/C# приложения вместе с базой данных, с которой оно должно работать, на клиентскую машину? Я уже рассматривал внутренние возможности VS2008, почему-то некоторые пути, описанные в паре толстенных книжек, не существуют в моей версии VS2008 Professional, может быть для этих целей надо было бы иметь еще более полную версию, не знаю. Сторонние разработки типа InstallShield тяжеловаты по деньгам. Может как один из вариантов неплохо использовать студийный установщик, сделать setup, там в пререквизитах будет упомянута, скажем, MS SQL Server Express 2005, и потом уже прицепиться к ней и просто создать свою новвую базу из скрипта или восстановить прямо из бэкапа, так как там как минимум несколько табличек уже должны беть полные при установке? В общем, какие варианты, приемлимые по простоте-цене-удобству? Есно со временем надо будет уметь накатывать апдейты на эту же программу, не снося клиентских данных.
А>Дмитрий
Накатывать обновления достаточно просто. Создаёшь в своей БД табличку
create table sysupdate (
idsysupdate int NOT NULL,
filename varchar (512),
filechecksum varbinary (8)
)
В какую нить папку Update складываешь файлы с SQL скриптами. и каждый раз при запуске приложения нюхаешь эту папку и сравниваешь её со совей табличкой. если такого файла нетуть в таблице, выполняешь его.
Тока скрипты желательно писать правильно, т.е. с проверками.
что-то типа
if (not exists (select * from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'mytable' and COLUMN_NAME = 'newcolumn'))
alter table mytable add newcolumn int
go---
строку go--- я использую для разделения скрипта на части.
Re[2]: Установка WinForms приложения вместе с базой данных
От:
Аноним
Дата:
01.12.08 08:26
Оценка:
Здравствуйте, Ziggi111, Вы писали:
Z>строку go--- я использую для разделения скрипта на части.
Спасибо, я знаю, как писать скрипты, в общем, и была такая же идея апдейтов, ну может с небольшой модификацией. Пишется версия локальной базы и сравнивается с разработческой, и потом все скрипты накатываются один за одним, каждый — транзакция, чтобы знать, если рухнет, хотя надо проверять, есно, до того, как к клиентам все это полетит.
Вопрос более сложный был — как сделать правильно и с меньшими потерями начальную установку базы данных и подключить к ней установленную программу? Саму программу установить, я так понимаю, проблем нет, есть стандартный установщик в студии, он же и пререквизиты добьет, если надо. А вот дальше? Даже если я сумею сделать и отправить файл с базой к юзеру, и он поместится в подкаталог программы, скажем, \Database\, его надо будет прицепить к самому движку базы. Это сделать надо прямо из моей апликушки или как? Или есть более стандартные пути? Я допускаю, что можно будет, зная путь файла с базой, подключиться к джижку и просто прицепить этот файл. Но опять-таки, аккаунты, работа из командной строки в установщике базы, пусть даже это сделано внутри моей программы... В общем, думаю, что мысль понятна. Только кажется мне, что все это криво, и есть более прямые и традиционные пути, которых я просто не знаю, потому что никогда не надо было.
Re[3]: Установка WinForms приложения вместе с базой данных
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Ziggi111, Вы писали:
Z>>строку go--- я использую для разделения скрипта на части.
А>Спасибо, я знаю, как писать скрипты, в общем, и была такая же идея апдейтов, ну может с небольшой модификацией. Пишется версия локальной базы и сравнивается с разработческой, и потом все скрипты накатываются один за одним, каждый — транзакция, чтобы знать, если рухнет, хотя надо проверять, есно, до того, как к клиентам все это полетит.
А>Вопрос более сложный был — как сделать правильно и с меньшими потерями начальную установку базы данных и подключить к ней установленную программу? Саму программу установить, я так понимаю, проблем нет, есть стандартный установщик в студии, он же и пререквизиты добьет, если надо. А вот дальше? Даже если я сумею сделать и отправить файл с базой к юзеру, и он поместится в подкаталог программы, скажем, \Database\, его надо будет прицепить к самому движку базы. Это сделать надо прямо из моей апликушки или как? Или есть более стандартные пути? Я допускаю, что можно будет, зная путь файла с базой, подключиться к джижку и просто прицепить этот файл. Но опять-таки, аккаунты, работа из командной строки в установщике базы, пусть даже это сделано внутри моей программы... В общем, думаю, что мысль понятна. Только кажется мне, что все это криво, и есть более прямые и традиционные пути, которых я просто не знаю, потому что никогда не надо было.
Не совсем понятно, при чём тут командная строка. Насколько я видел студийный установщик, там можно спросить какие нить доп параметры и выполнить строку кода. Кто мешает в нём спросить логин и пароль к SQLServer, создать SQLConnection и выполнить скрипт "restore database...". Насколько я понимаю, бэкап тоже можно в дистрибутив засунуть.
Re[3]: Установка WinForms приложения вместе с базой данных
Здравствуйте, Аноним, Вы писали:
А>Вопрос более сложный был — как сделать правильно и с меньшими потерями начальную установку базы данных и подключить к ней установленную программу? Саму программу установить, я так понимаю, проблем нет, есть стандартный установщик в студии, он же и пререквизиты добьет, если надо. А вот дальше? Даже если я сумею сделать и отправить файл с базой к юзеру, и он поместится в подкаталог программы, скажем, \Database\, его надо будет прицепить к самому движку базы. Это сделать надо прямо из моей апликушки или как? Или есть более стандартные пути? Я допускаю, что можно будет, зная путь файла с базой, подключиться к джижку и просто прицепить этот файл. Но опять-таки, аккаунты, работа из командной строки в установщике базы, пусть даже это сделано внутри моей программы... В общем, думаю, что мысль понятна. Только кажется мне, что все это криво, и есть более прямые и традиционные пути, которых я просто не знаю, потому что никогда не надо было.
Напиши custom setup project и там все автоматом устанавливай...
ДДТ!
Re: Установка WinForms приложения вместе с базой данных
Здравствуйте, Аноним, Вы писали:
А>Народ, кто чем пользуется для установки написанного WinForms/C# приложения вместе с базой данных, с которой оно должно работать, на клиентскую машину? Я уже рассматривал внутренние возможности VS2008, почему-то некоторые пути, описанные в паре толстенных книжек, не существуют в моей версии VS2008 Professional, может быть для этих целей надо было бы иметь еще более полную версию, не знаю. Сторонние разработки типа InstallShield тяжеловаты по деньгам. Может как один из вариантов неплохо использовать студийный установщик, сделать setup, там в пререквизитах будет упомянута, скажем, MS SQL Server Express 2005, и потом уже прицепиться к ней и просто создать свою новвую базу из скрипта или восстановить прямо из бэкапа, так как там как минимум несколько табличек уже должны беть полные при установке? В общем, какие варианты, приемлимые по простоте-цене-удобству? Есно со временем надо будет уметь накатывать апдейты на эту же программу, не снося клиентских данных.
А>Дмитрий
Есть такой инсталлятор, как InnoSetup. Он БЕСПЛАТНЫЙ, и при этом обладает достаточно неплохими возможностями. Основная его прелесть в том, что его скриптовый язык (на котором можно писать ПОЧТИ ВСЕ, что нужно) — Object Pascal. Кроме того, "вес" инстялляхи получается достаточно неплохой (минимум в 1,5 раза "легче", чем при использовании Install Shield).