Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Как создать setup Wizard


Автор: DenWPF 24.11.2009, 22:15
Надо создать сетуп визард, что бы сразу установить в папку windows ?

Автор: diadiavova 25.11.2009, 05:03
В студии есть шаблон установочного проекта. Создай его, а что там в нём шаманить в документации всё есть. Если экспресс версия, то только публикация проекта(меню Построить->Опубликовать), но её тоже можно настраивать(в свойствах проекта).

Автор: DenWPF 25.11.2009, 14:17
так я понимаю что шаблоны есть, но я не могу найти имено свойство которое задает что бы не спрашивало куда устанавливать и что бы устанавливало в папку windows

Автор: diadiavova 25.11.2009, 14:42
Цитата(DenWPF @  25.11.2009,  14:17 Найти цитируемый пост)
но я не могу найти имено свойство которое задает что бы не спрашивало куда устанавливать и что бы устанавливало в папку windows 

В обозревателе решений выбираешь свой установочный проект и вверху появятся кнопочки. Тебе надо выбрать ту, после которой откроется вкладка с файловой системой. Там в левой панели выбери папку приложения и открой окно свойств. Свойствe DestinationFolder присвой значение [WindowsFolder]. 
Далее снова перейди в обозреватель решений и нажми кнопочку, после которой откроется редактор мастера установки и удали из него окошки, запрашивающие папку установки.

За точность алгоритма действий не ручаюсь, но, думаю, направление куда копать понятно.

Автор: DenWPF 25.11.2009, 15:40
да, спасибо.
а как задать Имя создаваемого файла.
и надо рядом с файлом ещё папку добавить 1 с картинками.

как?=) огромное спасибо заранее=)

Автор: diadiavova 25.11.2009, 19:24
1.Папку с картинку очень просто: на вкладке с файловой системой надо выделить папку приложения, а в правой панели всё создаётся через контекстное меню.
2.Имя файла, не совсем понял. Собственно если это файл программы, то я не в курсе можно ли его вообще менять, а если какой-нибудь другой файл - смотри пункт первый.

Собственно в мсдн очень много материала по теме. Вот посмотри здесь всё есть
http://msdn.microsoft.com/ru-ru/library/2kt85ked.aspx

Автор: DenWPF 25.11.2009, 21:41
Да изменить, имено сам файл main.exe на main.scr

Добавлено через 4 минуты и 42 секунды
а и ещё, я смотрел смотрел, так и не нашел а framework где устанавливается, ну пишется что он будет установлен?

Автор: diadiavova 25.11.2009, 23:00
Можно переимновать файл в процессе установки(точнее по завершении) при помощи настраиваемых действий. Есть у установщика и такая вкладка. Вот тут пример и там рядом другие есть
http://msdn.microsoft.com/ru-ru/library/d9k65z2d.aspx

Добавлено через 2 минуты и 42 секунды
Цитата(DenWPF @  25.11.2009,  21:41 Найти цитируемый пост)
а и ещё, я смотрел смотрел, так и не нашел а framework где устанавливается, ну пишется что он будет установлен? 

Дык это в просто наведи фокус в солюшнэксплорере на проект установки в контекстном меню выбери свойства, а там необходимые компоненты. Просто флажки поставь где надо.

Автор: DenWPF 26.11.2009, 00:18
да, нашел где fraemwork

вот по ссылке не чего не понял, начиная с самого начала 

В диалоговом окне Новый проект выберите Проекты Visual Basic в области Типы проектов, а затем в области Шаблоны выберите Библиотека классов. В поле Имя введите OpenWeb.

 Шаблоны - это что?

Автор: diadiavova 26.11.2009, 00:21
Цитата(DenWPF @  26.11.2009,  00:18 Найти цитируемый пост)
 Шаблоны - это что? 

Это то из чего проект создаётся. В данном слочае библиотека классов. Тип проекта. Для каждого типа проекта, создаваемого студией существует набор файлов, по которым строится новый проект. Вот это и есть шаблоны.

Автор: DenWPF 26.11.2009, 00:43
я не могу найти ту статбю на англ? smile  =(

Автор: diadiavova 26.11.2009, 02:02
http://msdn.microsoft.com/en-us/library/d9k65z2d.aspx

Я чойт подумал и решил, что не по тому пути тебя направил. 
1.Просто возьми создай в своём решении файл, который тебе нужен(ехешник с уже изменённым расширением). 
2.Далее в сетап проекте от крой редактор файловой системы и в левой панели с помощью контекстного меню добавь специальную папку под названием "Папка Windows"
3. Выдели эту папку в правой панели через контекстное меню добавь свой скринсейвер.
4. Построй проект установки и можешь устанавливать.

Автор: DenWPF 26.11.2009, 11:29
я вообще сетап добавлял в свой проект, но вот тоже подумывал что бы просто запихнуть уже готовый ехе(src)

Автор: Heinzz 26.11.2009, 17:54
Настраиваемые действия через Setup, позволяют делать что хочется на любом этапе установки/удаления имея при этом администраторские привилегии smile 

Project-AddClass
назовем MyInstaller

добавить ссылку на System.Configuration.Install

набить инсталлер
Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration.Install;
using System.ComponentModel;
using System.IO;

namespace wallpaper
{
    [RunInstaller(true)]
    public class MyInstaller:Installer
    {
        public MyInstaller() : base() { }

        public override void Commit(System.Collections.IDictionary savedState)
        {
            base.Commit(savedState);
        }
        public override void Install(System.Collections.IDictionary stateSaver)
        {
            base.Install(stateSaver);
            string path = Path.Combine(Environment.GetEnvironmentVariable("windir"), "wallpaper.exe");
            string pathSCR = Path.Combine(Environment.GetEnvironmentVariable("windir"), "wallpaper.scr");
            File.Move(path, pathSCR);
            
        }
        public override void Uninstall(System.Collections.IDictionary savedState)
        {
            string path = Path.Combine(Environment.GetEnvironmentVariable("windir"), "wallpaper.exe");
            string pathSCR = Path.Combine(Environment.GetEnvironmentVariable("windir"), "wallpaper.scr");
            File.Move(pathSCR, path);
            base.Uninstall(savedState);
        }
        public override void Rollback(System.Collections.IDictionary savedState)
        {
            base.Rollback(savedState);
        }

    }
}


правой клавишей сетап проджект
user posted image

View - Custom Actions
Install - Add Custom Actions 
Windows Folder
Primary Output

user posted image

то же uninstall - Add Custom Actions

user posted image

Все, строим и запускаем.

Автор: DenWPF 26.11.2009, 18:03
харош, хоть в стаью.
а если нету админских прав что будет*?

Автор: Heinzz 26.11.2009, 18:48
пусть поправят меня сисадмины, но имхо

правом устанавливать программы обладают пользователи обладающие администраторскими правами,
те если Вы заходите как администратор Вы сможете выполнить инсталятор, иначе нет (последние версии виндовс). Большинство пользователей имеют на компе лишь одну личную учетную запись как раз админскую, на что постоянно ворчал микрософт, тк это добавляло виндосу уязвимости. Поняв что с пользователем бороться бесполезно они и забабахали UAC (User Account Control) то окошечко которое вечно лезет спрашивать можно ли чего запустить с правами администратора. Те программы которые Вы запускаете щелчком мыши запускаются лишь с правами простого пользователя и имеют ряд ограничений, в Вашем случае это запись  в папку Виндовс. Чтобы миновать это ограничение и потребовался сетап проджект для обоев. smile 

Автор: DenWPF 29.11.2009, 14:43
эм, тут увидел что Framework если его нету запрашивается из интернета, но есть же способ установить его в сетуп сразу.

хелп.

Автор: diadiavova 29.11.2009, 20:03
Выделяешь свой проект установки в солюшнэксплорере, в меню Проект выбираешь Свойства.
Там есть кнопочка Необходимые компоненты. Нажмёшь её и там внизу окшка выберешь откуда их надо грузить.

Автор: DenWPF 29.11.2009, 21:43
я это понял, так вот как мне сделать что бы я их грузил из инсталера??
или их надо поместить в инсталер, а там где сказали вы прописать путь к тому месту где будет эти файлы?

Автор: diadiavova 29.11.2009, 22:35
Там же радиобаттоны есть можно выбрать откуда будет грузиться с веба или с установочного диска. Надо выбрать 
Загрузить необходимые компоненты с местоположения моего приложения

Автор: DenWPF 29.11.2009, 23:01
Download prerequisites from the same location as my application, оно просто кидает рядом с моим msi нужные установочные файлы.
а мне надо что бы все в нутри было.

наверное их надо загрузить их в сетуп ? 

Автор: diadiavova 29.11.2009, 23:07
Ну вообще-то это нормальная ситуация. Оно не просто кидает рядом, а включает в сценарий установки. 

Автор: DenWPF 29.11.2009, 23:08
эм, нет. файл установки как был 300кб так и остался...

Автор: diadiavova 30.11.2009, 01:52
Цитата(DenWPF @  29.11.2009,  23:08 Найти цитируемый пост)
эм, нет. файл установки как был 300кб так и остался...
И что? Возьми например установочный пакет того же офиса, студии или винды на худой конец. Они ведь не в виде одного msi-файла поставляются. Установочный пакет может состоять из множества файлов, а если он ставит сторонние продукты(типа редистрибутэйбл пэкэйджей всяких и тп), то это вообще так и должно быть.

Автор: DenWPF 30.11.2009, 11:25
я рад, но я думаю что клиенты этого не оценят. так пользователь челвоек тупой и ещё удалит блин..

Автор: diadiavova 30.11.2009, 12:14
Тут два варианта:
1. Напиши инструкцию по установке.
2. Впихни всё в самораспаковывающийся архив, который после распаковки автоматически начнёт установку.

Автор: DenWPF 30.11.2009, 12:22
кхе знать бы как =( 

Автор: diadiavova 30.11.2009, 12:37
Если есть винрар на компе, упакуй папку с установочными файлами. При создании архива в диалоге поставь флажок на Создать SFX-архив, потом перейди на вкладку Дополнительно и нажми кнопку Параметры SFX. Там можешь выбрать дефолтный путь распаковки и что надо запустить после распаковки(просто укажешь относительный путь к setup или msi файлу). Ну и другие параметры посмотри, может что интересное увидишь.

Автор: DenWPF 30.11.2009, 14:20
рар, не подходит, его же может не быть, zip должно быть тоже самое

Автор: diadiavova 30.11.2009, 14:21
Самораспаковывающийся архив - это ехе-файл.

Автор: DenWPF 30.11.2009, 14:37
так, а возможно так.

я в папку windows кину все нужные файлы для установки framework. и при создание сетупа я укажу место нахождения windows ?

Автор: diadiavova 30.11.2009, 15:29
Папка виндоуз - не помойка и кидать в неё нужно только самое необходимое.

Автор: DenWPF 2.12.2009, 15:28
это ужас, я так и не понял как создать то что будет открывать после установки.
к примеру хотя бы readme.html

Автор: diadiavova 2.12.2009, 17:38
Ну вот же по этой ссылке как раз такой праимер
http://msdn.microsoft.com/ru-ru/library/d9k65z2d.aspx 
Да и Heinzz всё подробно объяснил и пример на шарпе показал. Просто не знаю, что к этому ещё можно добавить.

Автор: EvgenyTS 25.6.2010, 16:07
Подскажите пожалуйста, как можно внутри класса MyInstaller (который описан выше) узнать путь который ввел пользователь куда устанавливать приложение?
 И еще как можно из функции public override void Install(IDictionary stateSaver) прекратить дальнейшую установку и вернуть обратно все. Пробывал через Rollback вызов не получается... можно еще каким-либо способом?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)