COMPILACAO .NET IMPORTANTE
Amigos bom dia.
Acho que todos sabem do NGEN.exe que compila (exe = MSIL) em (exe = binário) para a plataforma correta de execução. Porém o arquivo não pode ser distribuido, uma vez que não rodaria em outros micros com plataforma diferente, só para uso próprio.
Porém estava pesquisando e em alguns fóruns, inclusive a documentação do MSDN, diz claramente que é possÃvel compilar totalmente um programa MSIL no momento da instalação, ou seja, ao insatalar seu programa que ainda é MSIL a instalação faria a compilação final para um arquivo binário, antes de executar o programa.
A questão é:
1- em nenhum desses foruns ou em sites que pesquisei pelo Google consegui descrobrir como fazer isso, só que é possÃvel. Alguém saberia como?
2- essa compilação na instalação, só funciona com o Click Once ou pode ser implementada com outros instaladores como INNO SETUP?
3- após a compilação do binário (durante a instalação) o que ocorre com o MSIL? é ExcluÃdo ou permanece também no micro? Seria possÃvel excluÃ-lo ao final, se isso não for automático?
Acho que todos sabem do NGEN.exe que compila (exe = MSIL) em (exe = binário) para a plataforma correta de execução. Porém o arquivo não pode ser distribuido, uma vez que não rodaria em outros micros com plataforma diferente, só para uso próprio.
Porém estava pesquisando e em alguns fóruns, inclusive a documentação do MSDN, diz claramente que é possÃvel compilar totalmente um programa MSIL no momento da instalação, ou seja, ao insatalar seu programa que ainda é MSIL a instalação faria a compilação final para um arquivo binário, antes de executar o programa.
A questão é:
1- em nenhum desses foruns ou em sites que pesquisei pelo Google consegui descrobrir como fazer isso, só que é possÃvel. Alguém saberia como?
2- essa compilação na instalação, só funciona com o Click Once ou pode ser implementada com outros instaladores como INNO SETUP?
3- após a compilação do binário (durante a instalação) o que ocorre com o MSIL? é ExcluÃdo ou permanece também no micro? Seria possÃvel excluÃ-lo ao final, se isso não for automático?
Se o objetivo disso é tentar proteger o MSIL não tem como.
Acho que o que a microsoft diz se refere ao caso de que você pode fazer o programa de instalação chamar o NGen depois de já ter copiado os arquivos, sei que da pra fazer isso com o Inno Setup mas não sei dizer como pois nunca fiz muita coisa com ele.
O executável não é modificado então não muda em nada a segurança, o NGen gera a imagem nativa do programa em outro local, mas ele ainda requer o executável original para funcionar, não tem como excluir o MSIL em momento algum.
Acho que o que a microsoft diz se refere ao caso de que você pode fazer o programa de instalação chamar o NGen depois de já ter copiado os arquivos, sei que da pra fazer isso com o Inno Setup mas não sei dizer como pois nunca fiz muita coisa com ele.
O executável não é modificado então não muda em nada a segurança, o NGen gera a imagem nativa do programa em outro local, mas ele ainda requer o executável original para funcionar, não tem como excluir o MSIL em momento algum.
Como o OCELOT disse:
Você ainda deve utilizar o executável que está em MSIL, mas ao executar a aplicação, ao invés de recompilar o aplicativo, ele utiliza uma imagem nativa do cache, usando o compilador Just-In-Time (JIT) para compilar o assembly original.
Isto irá em teoria, melhorar o desempenho da aplicação (Não percebi muitas melhorias) ao executa-las.
Para utilizar ela com o INNO SETUP eu faço assim:
Qualquer duvida posta ai.
Forte abraço!
Citação:O executável não é modificado então não muda em nada a segurança, o NGen gera a imagem nativa do programa em outro local, mas ele ainda requer o executável original para funcionar, não tem como excluir o MSIL em momento algum.
Você ainda deve utilizar o executável que está em MSIL, mas ao executar a aplicação, ao invés de recompilar o aplicativo, ele utiliza uma imagem nativa do cache, usando o compilador Just-In-Time (JIT) para compilar o assembly original.
Isto irá em teoria, melhorar o desempenho da aplicação (Não percebi muitas melhorias) ao executa-las.
Para utilizar ela com o INNO SETUP eu faço assim:
Citação:[Run]
Filename: {win}\Microsoft.NET\Framework\v2.0.50727
gen.exe; Parameters: [Ô]install [Ô][Ô]{app} este.exe[Ô][Ô][Ô]; WorkingDir: {app}; StatusMsg: Optimising Performance; Flags: runhidden
Qualquer duvida posta ai.
Forte abraço!
GUIMORAES como você faz para distribuir o programa .Net no inno, pois não há mais registro de DLL e só copiar e colar os arquivos numa pasta especÃfica certo?
Tem como fazer +/- o que o Click Once diz que faz, ou seja, checar se existe o framework correto, SQL server instalado e demais recursos necessários ao funcionamento do sistema?
Um outro detalhe, ouvi dizer que é possÃvel instalar um app Dot.Net no servidor Windows e usar em todas as estações de trabalho, sem ter de intalar em cada uma. Com isso não seria preciso atualizar cada máquina a cada nova versão (correção) do programa, isso procede? Nesse caso a compilação do MSIL ocorre na estação e não no servidor correto?
Tem como fazer +/- o que o Click Once diz que faz, ou seja, checar se existe o framework correto, SQL server instalado e demais recursos necessários ao funcionamento do sistema?
Um outro detalhe, ouvi dizer que é possÃvel instalar um app Dot.Net no servidor Windows e usar em todas as estações de trabalho, sem ter de intalar em cada uma. Com isso não seria preciso atualizar cada máquina a cada nova versão (correção) do programa, isso procede? Nesse caso a compilação do MSIL ocorre na estação e não no servidor correto?
Se todos os componentes usados no programa forem do próprio .Net ou forem todos feitos com o .Net não precisa registrar nada, só copiar os arquivos todos para a mesma pasta que deve funcionar.
O que o Click Once faz não tem a ver com o seu programa em si, isso pode ser feito pelo instalador se ele der este recurso, de detectar e instalar o .Net Framework você encontra exemplos na internet de como fazer com o Inno Setup, vi um que até baixava o instalador do .Net caso não tivesse, já do SQL Server não vi e não recomendo colocar para instalar junto pois ele só é necessário no servidor e não nos clientes.
Isso de instalar no servidor é a mesma coisa quase que as pessoas faziam com o VB6 de instalar no servidor e criar links nos PCs clientes, só que ainda precisava instalar e registrar os componentes localmente, com o .Net é mesma coisa, precisa instalar o Framework localmente para poder rodar, apesar de estar na rede o programa roda localmente, apenas os arquivos são lidos pelo compartilhamento da rede, e pode ser que as polÃticas de segurança do .Net impeçam que o programa rode ou que ele execute certas funções por estar rodando de um local não confiável.
Eu particularmente não recomendo fazer isso pois é praticamente uma falha de segurança, e ainda é necessário fazer com que todos fechem o programa para poder substituir, o ideal acho que é fazer um sistema de atualização automática, onde você coloca os arquivos atualizados no servidor e os clientes detectam e instalam a versão nova quando são executados.
O que o Click Once faz não tem a ver com o seu programa em si, isso pode ser feito pelo instalador se ele der este recurso, de detectar e instalar o .Net Framework você encontra exemplos na internet de como fazer com o Inno Setup, vi um que até baixava o instalador do .Net caso não tivesse, já do SQL Server não vi e não recomendo colocar para instalar junto pois ele só é necessário no servidor e não nos clientes.
Isso de instalar no servidor é a mesma coisa quase que as pessoas faziam com o VB6 de instalar no servidor e criar links nos PCs clientes, só que ainda precisava instalar e registrar os componentes localmente, com o .Net é mesma coisa, precisa instalar o Framework localmente para poder rodar, apesar de estar na rede o programa roda localmente, apenas os arquivos são lidos pelo compartilhamento da rede, e pode ser que as polÃticas de segurança do .Net impeçam que o programa rode ou que ele execute certas funções por estar rodando de um local não confiável.
Eu particularmente não recomendo fazer isso pois é praticamente uma falha de segurança, e ainda é necessário fazer com que todos fechem o programa para poder substituir, o ideal acho que é fazer um sistema de atualização automática, onde você coloca os arquivos atualizados no servidor e os clientes detectam e instalam a versão nova quando são executados.
Tópico encerrado , respostas não são mais permitidas