INSTALADOR COM BASE DE DADOS ACOPLADA.

SANROMAN 16/11/2015 12:19:45
#453972
Boa tarde, rapaziada

Estou tentando criar um instalador, que instale junto o banco de dados da aplicação. Já vi vários tutoriais na net com Inno Setup, InstallShied mas não consigo adicionar meu banco de dados criado em sql server.

Gostaria que fosse igual a firebird que se instala silenciosamente junto com a aplicação. Isso é possível com sql server?

Não consigo imaginar meu cliente instalando, pessoalmente, o sql server em sua máquina.



DS2T 16/11/2015 13:32:15
#453973
Não sei se é a melhor forma, mas uma sugestão:

Cria seu pacote de instalação usando o Publish mesmo do Visual Studio, ou qualquer outro instalador simples. Coloque o pacote de instalação do SQL Server e do arquivo do seu banco de dados (pode ser um .sql) como Content do pacote de instalação.

Crie um novo projeto. Pode ser Windows Form ou Console mesmo. Ele vai ser responsável por chamar o pacote de instalação e executar a instalação do sql server.
Use Process.Start para iniciar chamar o outro pacote de instalação (que você gerou anteriormente).
Acabando de instalar, você verifica via código se o arquivo do pacote de instalação do SQL Server tá aonde deveria estar. Se tiver, basta você usar Process.Start novamente. Só que dessa vez, você vai passar LINHA DE COMANDO para passar os dados de instalação. (Exemplo: nome da instância, modo de autenticação, usuário padrão, etc).

Uma vez finalizado o processo, você verifica se o SQL Server foi instalado via código. (Melhor verificar, vai que o usuário finalizou a instalação).
Estando instalado, agora basta você executar o arquivo .sql e ser feliz.

Abraços!
NICKOSOFT 16/11/2015 20:54:11
#454008
Resposta escolhida
veja q um programa pra usar sqlserver em geral é multi usuário, e roda em rede.....o sqlserver em si precisa estar apenas em um servidor q nem sempre precisa ter o seu programa instalado....
tirando essa etapa, e imaginando agora seu programa devidamente instalado e configurado o caminho ao servidor do sql, o código do seu programa deve fazer as verificações se o banco e tabelas existem, se não existirem, seu código deve criar o banco e tabelas......
SANROMAN 17/11/2015 08:26:42
#454015
Bom dia, NICKOSOFT

Você poderia me indicar algum tutorial para criar o código necessário para que seja feita a verificação se o banco existe ou não. OU algum esboço de código para que eu possa me apoiar na criação do mesmo.

NICKOSOFT 17/11/2015 10:04:41
#454025
veja se ajuda, é pra MYSQL, e parte de uma enorme classe q uso pra esse gerenciamento e toda manipulação dos dados diretamente no BD
  
Public Function TestarServidor() As Boolean
If Conexao.State = ConnectionState.Open Then
Conexao.Close()
End If
Conexao.ConnectionString = [Ô]Server=[Ô] & My.Settings.SERVER & [Ô];User id=[Ô] & My.Settings.USER & [Ô];Password=[Ô] & plainText
Try
Conexao.Open()
Return True
Catch ex As Exception
Return False
End Try
End Function

Public Function TestarBD() As Boolean
If Conexao.State = ConnectionState.Open Then
Conexao.Close()
End If
Conexao.ConnectionString = [Ô]Server=[Ô] & My.Settings.SERVER & [Ô];User id=[Ô] & My.Settings.USER & [Ô];Password=[Ô] & plainText & [Ô];database=[Ô] & My.Settings.DATABASE
Try
Conexao.Open()
Return True
Catch ex As Exception
Return False
End Try
End Function

Public Function CriarBD() As Boolean
Conexao.ConnectionString = [Ô]Server=[Ô] & My.Settings.SERVER & [Ô];User id=[Ô] & My.Settings.USER & [Ô];Password=[Ô] & plainText
Conexao.Open()
Try
[ô]Conexao = AbreConexao()
If Conexao.State = ConnectionState.Open Then
Dim sql As String = [Ô]CREATE DATABASE SEIBO[Ô]
Comando = New MySqlCommand(sql, Conexao)
Comando.ExecuteNonQuery()
Return True
Else
Return False
End If
Catch ex As Exception
Return False
End Try

End Function

Public Sub VerificarTabelas()
[ô]verificacao da tabela alunos
Try
Conexao = AbreConexao()
Dim sql As String = [Ô]select * from alunos[Ô]
Comando = New MySqlCommand(sql, Conexao)
Comando.ExecuteNonQuery()
Catch ex As Exception
Conexao = AbreConexao()

Dim sql As String = [Ô]create table Alunos ([Ô] _
& [Ô]ID INT not null auto_increment PRIMARY KEY, [Ô] _
& [Ô]Nome varchar(150), [Ô] _
& [Ô]Situacao varchar(1), [Ô] _
& [Ô]Entrada date, [Ô] _
& [Ô]Saida date)[Ô]
Comando = New MySqlCommand(sql, Conexao)
Comando.ExecuteNonQuery()
Finally
Conexao.Close()
End Try


do testar servidor já retorna true/false q dao continuidade ou disparam a tela para configuração do caminho do servidor.....q salva nas variáveis lidas pra conexão...
SANROMAN 19/11/2015 16:22:08
#454168
Olá NICKOSOFT, boa tarde

Muito obrigado por sua ajuda, sem ela não conseguiria.

Instalei o sql server e com o inno setup montei o instalador e tudo correu bem.

Estou estudando bastante o código me disponibilizou, foi de grande ajuda.

Estou encerrando o tópico.

Um abraço

Tópico encerrado , respostas não são mais permitidas