Первая установка / развертывание на клиентской машине - PullRequest
1 голос
/ 05 января 2010

У нас есть веб-приложение ASP.NET Silverlight, которое необходимо развернуть на клиентском сервере вместе с базой данных Sql Server. После развертывания на своем сервере многие рабочие станции могут получить к нему доступ и запустить клиент Silverlight.

Я думал о создании небольшого проекта развертывания, добавлении необходимых файлов сценариев к ресурсам и создании msi. После завершения установки мы можем выполнить сценарии sql для добавления базы данных и ее таблиц. Я не уверен, что это возможно, есть ли лучший способ сделать это? Кроме того, если есть какие-либо будущие обновления для app / db, как это можно сделать на сервере (автоматическое обновление / установка)?

Любые ссылки / шаги / процедуры высоко ценятся.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 07 января 2010

Спасибо за ответ, Болди. Это именно то, что я подумал и сделал небольшой тест. У меня есть простое веб-приложение ASP .NET с одной меткой, один проект библиотеки классов, у которого есть метод переопределения Install (создает пакетный файл и выполняет его), и wand-проект WebSetup, который фактически устанавливается, и во время установки он выполняет метод Install из проект библиотеки классов. Вот код -

1) Проект ClassLibrary - MyCustomAction

<RunInstaller(True)> _ 
Public Class SetupAction
Inherits Installer

Public Overrides Sub Install(ByVal stateSaver As System.Collections.IDictionary)
    MyBase.Install(stateSaver)
    Try
        My.Computer.FileSystem.WriteAllText("E:\SetupTest.txt", Environment.NewLine + "File created from MyCustomAction project", True)
        'Shell("SQLCMD -S Dev1 -d Prac -i ""E:\Copy of CreateTable1.sql""", AppWinStyle.MinimizedFocus, True, 5000)
        File.WriteAllText("E:\Test.bat", "SQLCMD -S Dev1 -d Prac -i ""E:\CreateTable1.sql""")
        Process.Start("E:\Test.bat")
    Catch ex As Exception
        My.Computer.FileSystem.WriteAllText("E:\ErrorLog.txt", Environment.NewLine + "Exception: " + ex.Message, True)
    Finally

    End Try
End Sub
End Class

2) Проект ASP .NET - MyApplication

Partial Public Class _Default
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Label1.Text = "Current Time: " + Now.ToString
End Sub

End Class

3) Проект WebSetup - MyApplicationSetup

  • Я добавил в него выходные данные проекта из вышеупомянутых проектов
  • Я добавил новый CustomAction «Tnstall», ссылаясь на него в выводе проекта библиотеки классов MyCustomAction
  • Когда я собираю установщик msi и устанавливаю приложение веб-установки, оно включается (копирует выходные файлы), а также создает файлы SetupTest.txt, Test.bat, но не выполняет ни команды командной строки Shell, ни Process.Start () успешно.
  • После создания файла bat, если я дважды щелкну вручную, он выполнит файл сценария sql.

В качестве примечания: если я запускаю код CustomAction в отдельном приложении для Windows, он отлично работает. Итак, похоже, что во время установки, он не может выполнять команды командной строки (хотя я вижу cmd.exe / SQLCMD.exe в диспетчере задач). Я не уверен, что это будет проблема с разрешениями, но я нахожусь в группе администраторов и у меня есть необходимые разрешения.

Возможно, неуместно писать эти комментарии в разделе «Мой ответ», но хотел дать подробное объяснение ситуации. Я действительно застрял с этим, и было бы очень полезно, если кто-то может бросить указатели на улучшение / альтернативные методы. Заранее спасибо и очень ценю помощь.

0 голосов
/ 06 января 2010

Вы можете создавать сценарии, используя MSI, и затем вы сможете запускать их как часть установки, используя утилиту командной строки sqlcmd или osql, вам, очевидно, нужно позволить пользователю захватывать имя сервера, имя БД и учетные данные как часть установки.

Обновив схему db, вы можете сделать это с помощью кода в своем приложении, что означает, что вам нужно будет поддерживать версию базы данных где-нибудь, чтобы приложение знало, когда запускать скрипт, или просто писать сценарии соответствующих операторов alter и запустите его на сервере в рамках развертывания, снова используя одну из утилит командной строки.

...