2010-01-04 7 views
1

우리는 Sql Server 데이터베이스와 함께 클라이언트의 서버에 배포해야하는 실버 라이트 ASP .NET 웹 응용 프로그램을 보유하고 있습니다. 서버에 배포하면 많은 워크 스테이션에서 액세스하여 실버 라이트 클라이언트를 실행할 수 있습니다.처음으로 클라이언트 컴퓨터에 설치/배포

소규모 배포 프로젝트를 만들고 리소스에 필요한 스크립트 파일을 추가하고 msi를 만들려고했습니다. 설치가 완료되면 SQL 스크립트를 실행하여 데이터베이스와 해당 테이블을 추가 할 수 있습니다. 이것이 가능한지 확실하지 않은데, 더 좋은 방법이 있습니까? 또한 app/db에 대한 향후 업데이트가있을 경우 어떻게 서버에서 수행 할 수 있습니까 (자동 업데이트/설치)?

모든 링크/단계/절차를 높이 평가합니다.

감사합니다.

답변

0

답장을 보내 주셔서 감사합니다. 이것은 내가 생각하고 작은 테스트를 한 것입니다. 나는 하나의 레이블을 가진 간단한 ASP .NET 웹 애플리케이션을 가지고있다. 하나의 클래스 라이브러리 프로젝트는 메소드를 설치 (배치 파일을 생성하고 실행)하고, 실제로 설치하는 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 내가 가진

  • 여기에 코드입니다 위 프로젝트의 프로젝트 산출물을 추가했습니다.
  • MyCustomAction 클래스 라이브러리 프로젝트의 출력에 참조하는 새로운 "Tnstall"CustomAction을 추가했습니다.
  • msi 설치 프로그램을 빌드하고 웹 설치 응용 프로그램을 설치하면 intalls (출력 파일 복사)를하고 SetupTest.txt , Test.bat 파일을 실행하지만 Shell 명령 줄 문이나 Process.Start()도 성공적으로 실행하지 않습니다.
  • 일단 bat 파일이 생성되면 수동으로 두 번 클릭하면 sql 스크립트 파일이 실행됩니다.

별도로 Windows App에서 CustomAction 코드를 실행하면 부작용없이 완벽하게 실행됩니다. 그래서, 설치하는 동안 보이지만 명령 줄 명령을 실행할 수 없습니다 (비록 작업 관리자에서 cmd.exe/SQLCMD.exe를 볼 수 있습니다). 이 권한 문제가 될지 모르겠지만 관리자 그룹에 있고 필요한 권한이 있습니다.

"내 대답"절에이 주석을 쓰는 것이 적절하지 않을 수도 있지만 상황에 대한 자세한 설명이 필요합니다.난 정말이 붙어있어 누군가가 개선/대체 방법에 대한 포인터를 던질 수 있다면 매우 도움이 될 것입니다. 미리 감사 드리며 정말로 도움을 주셔서 감사합니다.

+0

해결책을 얻은 것 같아서 제대로 작동하는 것 같습니다. 설치 관리자는 출력 파일을 설치하고 Shell() 명령을 실행하여 테이블을 만들 수 있습니다. NT Authority \ System 로그인에 대한 SQL Server 사용 권한 문제로 판명되었습니다. 나는 데이터베이스에이 로그인을 매핑해야하고, 데이터 아더 및 데이터 기록자와 함께 테이블 생성 권한을 부여해야합니다. 희망이 사람을 도움이됩니다. 감사! – Vishal

0

MSI를 사용하여 스크립트를 만든 다음 sqlcmd 또는 osql 명령 줄 유틸리티를 사용하여 설치의 일부로 스크립트를 실행할 수 있어야합니다. 사용자가 서버 이름, db 이름을 캡처하도록해야합니다. 및 설치의 일부로 자격 증명이 필요합니다.

db 스키마를 업데이트하면 응용 프로그램의 코드를 통해이를 수행 할 수 있습니다. 즉, 응용 프로그램이 스크립트를 실행할시기를 알기 위해 데이터베이스 버전을 유지하거나 관련 변경 사항을 스크립팅해야합니다. 명령문을 작성한 후 명령 행 유틸리티 중 하나를 사용하여 전개의 일부로 서버에서 실행합니다.

관련 문제