September 15, 2011

Converter milisegundos, segundos, minutos (C#)

Converter milisegundos, segundos, minutos em C#… de maneira fácil e rápida…

using System;

public static class TimeSpanUtil
{
#region To days
public static double ConvertMillisecondsToDays(double milliseconds)
{
return TimeSpan.FromMilliseconds(milliseconds).TotalDays;
}

public static double ConvertSecondsToDays(double seconds)
{
return TimeSpan.FromSeconds(seconds).TotalDays;
}

public static double ConvertMinutesToDays(double minutes)
{
return TimeSpan.FromMinutes(minutes).TotalDays;
}

public static double ConvertHoursToDays(double hours)
{
return TimeSpan.FromHours(hours).TotalDays;
}
#endregion

#region To hours
public static double ConvertMillisecondsToHours(double milliseconds)
{
return TimeSpan.FromMilliseconds(milliseconds).TotalHours;
}

public static double ConvertSecondsToHours(double seconds)
{
return TimeSpan.FromSeconds(seconds).TotalHours;
}

public static double ConvertMinutesToHours(double minutes)
{
return TimeSpan.FromMinutes(minutes).TotalHours;
}

public static double ConvertDaysToHours(double days)
{
return TimeSpan.FromHours(days).TotalHours;
}
#endregion

#region To minutes
public static double ConvertMillisecondsToMinutes(double milliseconds)
{
return TimeSpan.FromMilliseconds(milliseconds).TotalMinutes;
}

public static double ConvertSecondsToMinutes(double seconds)
{
return TimeSpan.FromSeconds(seconds).TotalMinutes;
}

public static double ConvertHoursToMinutes(double hours)
{
return TimeSpan.FromHours(hours).TotalMinutes;
}

public static double ConvertDaysToMinutes(double days)
{
return TimeSpan.FromDays(days).TotalMinutes;
}
#endregion

#region To seconds
public static double ConvertMillisecondsToSeconds(double milliseconds)
{
return TimeSpan.FromMilliseconds(milliseconds).TotalSeconds;
}

public static double ConvertMinutesToSeconds(double minutes)
{
return TimeSpan.FromMinutes(minutes).TotalSeconds;
}

public static double ConvertHoursToSeconds(double hours)
{
return TimeSpan.FromHours(hours).TotalSeconds;
}

public static double ConvertDaysToSeconds(double days)
{
return TimeSpan.FromDays(days).TotalSeconds;
}
#endregion

#region To milliseconds
public static double ConvertSecondsToMilliseconds(double seconds)
{
return TimeSpan.FromSeconds(seconds).TotalMilliseconds;
}

public static double ConvertMinutesToMilliseconds(double minutes)
{
return TimeSpan.FromMinutes(minutes).TotalMilliseconds;
}

public static double ConvertHoursToMilliseconds(double hours)
{
return TimeSpan.FromHours(hours).TotalMilliseconds;
}

public static double ConvertDaysToMilliseconds(double days)
{
return TimeSpan.FromDays(days).TotalMilliseconds;
}
#endregion
}

Posted in C#
May 3, 2011

Trabalhando com Session e Request ( POST / GET ) no C#Working with Session and Request ( POST / GET ) in C#Lavorare con Session e Request (POST / GET) in C #Работа с Session и Request (POST / GET) в C #

Request

Obtendo IP do Visitante/Usuário

Request.UserHostAddress.ToString();

Obtendo o valor de um item enviado via GET

Request.QueryString["ItemGET"];

Obtendo o valor de um item enviado via POST

Request.Form["ItemPOST"];

Dica:

Use .ToString(); no final do Request para poder usar o valor para uma String. Exemplo String strValorPost = Request.Form["ItemPOST"].ToString();

Session

Criando uma Session:

 Session["nomeSession"] = "valorSession"; 

Lendo uma Session:

 String strValorSession = Session["nomeSession"]; 

Exibindo o Timeout da Session:

 Response.Write(Session.Timeout.ToString()); 

Definindo o Timeout:

 Session.Timeout = 5; 

Removendo:

 Session.Remove("nomeSession");

Request

Getting IP of User

Request.UserHostAddress.ToString();

Getting the value of an item sent via GET

Request.QueryString["ItemGET"];

Getting the value of an item sent via POST

Request.Form["ItemPOST"];

Tip:

Use .ToString(); the end of the Request in order to use the value to a String. Sample String strValorPost = Request.Form["ItemPOST"].ToString();

Session

Creating a Session

Session["nameSession"] = "amountSession";

Reading a Session

 String strValorSession = Session["nameSession"]; 

View Timeout of Session:

 Response.Write(Session.Timeout.ToString()); 

Setting the TimeOut:

 Session.Timeout = 5; 

Removing:

 Session.Remove("nomeSession");

Request

Ottenere IP del visitatore

Request.UserHostAddress.ToString();

Ottenere il valore di un element inviato tramite GET

Request.QueryString["ItemGET"];

Ottenere il valore di un element inviato tramite POST

Request.Form["ItemPOST"];

Suggerimento:

Usa .ToString(); il fine della richiesta al fine di utilizzare il valore in una stringa. Esempio String strValorPost = Request.Form["ItemPOST"].ToString();

Session

Creazione di una Session:

 Session["nomeSession"] = "valorSession"; 

Lettura di una Session:

 String strValorSession = Session["nomeSession"]; 

Lettura di Timeout di Session:

 Response.Write(Session.Timeout.ToString()); 

Impostazione del Timeout:

 Session.Timeout = 5; 

Rimozione:

 Session.Remove("nomeSession");

Request

Получение IP посетителя

Request.UserHostAddress.ToString();

Получение значения пункта отправлено через GET

Request.QueryString["ItemGET"];

Получение значения пункта отправлено по почте

Request.Form["ItemPOST"];

Совет:

Использование .ToString(); конце запроса, чтобы использовать значение в строку. Пример String strValorPost = Request.Form["ItemPOST"].ToString();

Session

Создание сессии:

 Session["nomeSession"] = "valorSession"; 

Чтение сессии:

 String strValorSession = Session["nomeSession"]; 

Просмотр сессии вышло:

 Response.Write(Session.Timeout.ToString()); 

Настройка вышло:

 Session.Timeout = 5; 

Удаление:

 Session.Remove("nomeSession");

May 2, 2011

Trabalhando com Cookies no C#

Metodo Fácil:

Criando

private void CriarCookie(string texto)
{
HttpCookie cookie = new HttpCookie(“SITE”);

cookie.Values.Add(“IP”, this.Page.Request.UserHostAddress.ToString());
cookie.Values.Add(“USERNAME”, texto);

cookie.Expires = DateTime.Now.AddDays(365);
this.Page.Response.AppendCookie(cookie);
}

Lendo

private HttpCookie ReadCookie()
{
try
{
return this.Page.Request.Cookies["SITE"];
}
catch
{
return null;
}
}

 

A classe HttpCookie possui algumas propriedades avançadas:

Propriedade Descrição
Domain Configura o dominío ao qual pertence este cookie. Se utilizado, ele restringe o acesso ao cookie a servidores do domínio espeficicado, como mycompany.com.
Path 

Configura o caminho ao qual o pertence este cookie. Se utilizado, restringe o acesso ao cookie a páginas localizadas no caminho especificado.
Secure 

Configura a flag que determina se o cookie deve ser transmitido de forma segura para o browser do usuário, utilizando o protocolo HTTPS. Seu servidor web deve ter HTTPS configurado para que esta opção funcione.
HasKeys Informe se o cookie é composto de uma coleção de strings

Advanced Properties of the HttpCookie Class

April 18, 2011

SQL – Uniqueidentifier vs. IDENTITY

Primeiro, para aqueles que não estão familiarizados com o tipo de dados uniqueidentifier, aqui vai os detalhes:

Uniqueidentifiers também são referidos como GUIDs. (Globally Unique Identifier)
Ou seja, a chamada de API que retorna um GUID é garantida para sempre retornar um valor único no espaço e no tempo.
Para obter um GUID no SQL Server, você chamar a função NEWID().
O tipo de dados uniqueidentifier no SQL Server são armazenados nativamente como um valor de 16 bytes binários.
Este é um exemplo de um GUID formatado: B85E62C3-DC56-40C0-852A-49F759AC68FB.

DECLARE @GUID uniqueidentifier
SET @GUID = NEWID()
INSERT Item VALUES (@GUID,'Valor')

A principal vantagem de usar GUIDs é que são exclusivos em todos os espaço e tempo. Isto é útil se você estiver consolidando os registros de vários servidores SQL em uma tabela, como em um data warehouse situação. GUIDs são também muito usado por replicação do SQL Server para acompanhar as linhas quando eles estão espalhados entre vários servidores SQL.

A principal desvantagem de usar GUIDs, como valores fundamentais é que eles são grandes. Aos 16 bytes.

Para uso em aplicativos web que usam a ID em Session, Cookie e QueryStrings o recomendado é o UniqueIdentifier, por ser único.

April 18, 2011

Como configurar a reciclagem periódica de um pool de aplicativos no iis7

A Reciclagem de um pool instrui o IIS a retirar qualquer processo de trabalho atual automaticamente após ele ter executado as solicitações existentes. O benefício é que os usuários não verão uma interrupção nos serviços em seu computador, mas o processo de trabalho será substituído por um novo o mais rápido possível. Geralmente a reciclagem de pools de aplicativos é executada quando problemas como vazamentos na memória ou consumo de recursos tendem a aumentar significativamente com o tempo. Quase sempre, a causa dessa disfunção é um defeito ou outro problema no código do aplicativo. A solução ideal é corrigir o problema no aplicativo subjacente. No entanto, é possível resolver pelo menos os sintomas usando a Reciclagem.

Em alguns casos é possível reciclar automaticamente processos de trabalho com base no uso de recursos ou em momentos específicos. Você pode acessar essas opções conforme o tutorial abaixo.

1. Abra o IIS 7/7.5

2. No Painel selecione “Application Pools” (ou Pools de Aplicativos em pt-br)

3. Em Application Pools selecione o Pools desejado e clique com o botão direito e clique em Recycling (ou Reciclagem em pt-br)

4. Na janela Recycling Conditions (ou “Condições de Reciclagem”) do Edit Application Pool Reciclagem Settings Wizard ( ou Assistente de Configurações da Reciclagem do Pool de Aplicativos), seleciona-se pelo menos uma das opções na seção intervalos fixos, digite os valores nas caixas de texto apropriado, e então clique em Avançar, conforme imagem abaixo:

As principais opções de configurações de reciclagem são Fixed Intervals (que é baseada em momentos específicos ou após uma quantidade fixa de solicitações serem processadas) ou Memory Based Maximums. As opções mais apropriadas dependerão dos problemas específicos que você estiver tentando solucionar ou evitar. Em geral a reciclagem de pools de aplicativos pode reduzir o desempenho muito rapidamente. No entando, quando um aplicativo Web tem problemas sérios, é preferível resolvê-los através da reciclagem de processos de trabalho antes que os usuários percebam demoras ou erros no site.

5.  (Opcional) No Log de eventos de reciclagem você seleciona quais os eventos devem ser registrados no log, e, em seguida, clique em Concluir.

O registro de eventos de reciclagem de pool de aplicativos também é uma parte importante do processo para assegurar que o servidor Web e seus aplicativos sejam executados como esperado. Por exemplo, se você configurar os limites máximos de memória provavalmente vai querer saber a freuência com que o pool de aplicativos foi reciclado.

Também é possível fazer a configuração da reciclagem através do arquivo ApplicationHost.config usando o elemento <recycling>, estarei abordando em um futuro artigo.

 

April 2, 2011

Função para Validar Email em C#

public static bool ValidarEmail(string email)

{

bool validEmail = false;

int indexArr = email.IndexOf(‘@’);

if (indexArr > -1)

{

int indexDot = email.IndexOf(‘.’, indexArr);

if (indexDot > -1 && email.Length – 1 > indexDot)

{

validEmail = true;

}

}

return validEmail;

}

March 11, 2011

Entendendo as placas de carros na Rússia

O formato atual usa uma letra seguida de três dígitos e mais duas letras. Para melhorar a legibilidade dos números para os automóveis russos no estrangeiro, apenas um pequeno subconjunto de caracteres cirílicos que se parecem com os caracteres latinos são utilizados (12 letras: А, В, Е, К, М, Н, О, Р, С, Т, У , Х). Finalmente, o número da região (77, 97, 99, 177, 197 e 199 para Moscou, 78, 98 e 178 para São Petersburgo, etc) e as letras “Rus” estão incluídos, bem como a bandeira nacional  Há um formato diferente para reboques (2 letras e 4 dígitos).

O tamanho padrão para a placa é de 520 mm por 110 mm.

Alguns veículos, como tróleis, não são obrigadas a ter placas de licença, porque eles não podem deixar a rede operam sobre e pode ser identificado pelo número que é pintado e é dada pela autoridade de transportes públicos locais. Caminhões e ônibus geralmente têm seus números de licença pintados em letras grandes na parte traseira do veículo para facilitar a identificação (a prática continuada da época soviética), apesar de também ter placas de licença.

Veículos utilizados por algumas organizações ou categorias de pessoas carregam placas especiais:

  • As polícia têm um número especial sobre placas de cor azul e o formato é uma letra e quatro dígitos. A letra representa o ramo da força policial, eo seu significado pode mudar de cidade para cidade, por exemplo, em Moscovo, um ####| 99  para polícia de trânsito, ####| У 99 rus para carros de patrulha , O ####| 99 rus para o serviço de guarda policial,etc…
  • Carros Diplomáticos têm caracteres em branco sobre um fundo vermelho. Os três primeiros dígitos da placa é um código de identificação da embaixada a que pertencem, atribuídos em ordem com base na data em que o país estabeleceu relações diplomáticas com a Rússia ou a União Soviética. Por exemplo, o Reino Unido é 001, os Estados Unidos é 004, e no Paraguai é de 157. Em carros atribuída a classificação e arquivo-diplomatas esse código é seguido pelo D e três dígitos (por exemplo, 004 D 108 | 77 RUS), enquanto os carros embaixadores “tem um formato ligeiramente diferente da placa de licença (004 CD 1 | 77 RUS) .
  • As Forças Armadas têm caracteres em branco sobre fundo preto, o formato é LL NNNN para veículos e LL NNNN para reboques. Neste caso, os dois dígitos à direita não são um código regional, mas um código para o ramo das Forças Armadas ou do serviço e ir com uma combinação de letras certas. Por exemplo, # # # # CA | 14 rus é um veículo pertencente às tropas Ferroviários; # # # # BC | 27 rus denota a Defesa Aérea, # # # # A | 18 rus denota o Ministério de Situações de Emergência, etc
  • Veículos de transportes públicos (como ônibus, táxis e táxis licenciados partes) têm caracteres em preto sobre fundo amarelo eo formato é LL NNN. Uma vez que esses veículos são relativamente poucos, o código de região não mudam com freqüência, em Moscou, por exemplo, o amarelo “transporte público” placas são ainda emitidos com o código 77 em dezembro de 2009. (Nota: Este tipo não deve ser confundida com parecidas licença amarelo placas em formato NNN LL L, que foram emitidos para veículos matriculados a empresas estrangeiras que operam na Rússia, o último tipo já foi retirada).

Há séries especiais (geralmente números que começam com A) reservado para funcionários do governo (por exemplo, A 001 AA geralmente pertence ao governador da região). As matrículas para os funcionários do governo federal originalmente tinha uma bandeira maior, em vez do código regional, mas este tipo foi entretanto retirado também.

Ricos empresários, políticos proeminentes e os senhores do crime costumam usar ilegalmente adquiridos placas especiais (governo ou da polícia) para obter um tratamento preferencial por parte da polícia de transporte e como um símbolo de status.

Códigos das Placas (código acima da palavra RUS)

Código    Região
01     Republic of Adygea
02, 102     Republic of Bashkortostan
03     Buryat Republic
04     Altai Republic
05     Republic of Dagestan
06     Republic of Ingushetia
07     Kabardino-Balkar Republic
08     Republic of Kalmykia
09     Karachay-Cherkess Republic
10     Republic of Karelia
11     Komi Republic
12     Mari El Republic
13, 113     Republic of Mordovia
14     Sakha Republic
15     Republic of North Ossetia-Alania
16, 116     Republic of Tatarstan
17     Tuva Republic
18     Udmurt Republic
19     Republic of Khakassia
21, 121     Chuvash Republic
22     Altai Krai
23, 93     Krasnodar Krai
24, 84, 88, 124     Krasnoyarsk Krai
25, 125     Primorsky Krai
26     Stavropol Krai
27     Khabarovsk Krai
28     Amur Oblast
29     Arkhangelsk Oblast
30     Astrakhan Oblast
31     Belgorod Oblast
32     Bryansk Oblast
33     Vladimir Oblast
34     Volgograd Oblast
35     Vologda Oblast
36, 136     Voronezh Oblast
37     Ivanovo Oblast
38, 85     Irkutsk Oblast
39, 91     Kaliningrad Oblast
40     Kaluga Oblast
41, 82     Kamchatka Krai
42     Kemerovo Oblast
43     Kirov Oblast
44     Kostroma Oblast
45     Kurgan Oblast
46     Kursk Oblast
47     Leningrad Oblast
48     Lipetsk Oblast
49     Magadan Oblast
50, 90, 150, 190     Moscow Oblast
51     Murmansk Oblast
52, 152     Nizhny Novgorod Oblast
53     Novgorod Oblast
54, 154     Novosibirsk Oblast
55     Omsk Oblast
56     Orenburg Oblast
57     Oryol Oblast
58     Penza Oblast
59, 81, 159     Perm Krai
60     Pskov Oblast
61, 161     Rostov Oblast
62     Ryazan Oblast
63, 163     Samara Oblast
64, 164     Saratov Oblast
65     Sakhalin Oblast
66, 96     Sverdlovsk Oblast
67     Smolensk Oblast
68     Tambov Oblast
69     Tver Oblast
70     Tomsk Oblast
71     Tula Oblast
72     Tyumen Oblast
73, 173     Ulyanovsk Oblast
74, 174     Chelyabinsk Oblast
75, 80     Zabaykalsky Krai
76     Yaroslavl Oblast
77, 97, 99, 177, 197, 199     Moscow
78, 98, 178     Saint Petersburg
79     Jewish Autonomous Oblast
83     Nenets Autonomous Okrug
86     Khanty-Mansi Autonomous Okrug – Yugra
87     Chukotka Autonomous Okrug
89     Yamalo-Nenets Autonomous Okrug
94     Baikonur
95     Chechen Republic

February 27, 2011

Criptografando a QueryString de uma URL com ASP.NET C#

No desenvolvimento Web é muito comum utilizarmos querystrings para passar informações de uma página para outra.

Porém, em algumas situações o uso de querystrings pode tornar a aplicação vulnerável, permitindo que o usuário possa ter acesso a alguma informação a qual não deveria. Isso acontece em função da curiosidade do usuário, que na base da tentativa, pode alterar o valor da querystring.

Mostrarei uma maneira de inibir esse tipo de ação, utilizando uma rotina de criptografia simples, mas bastante útil, que permitirá criptografar e descriptografar a informação que será passada via querystring.

Veja a classe que chamei de “Criptografia”, contendo os métodos “Criptografar” e “Descriptografar”:

using System;
using
System.Text;
using System.IO;
using System.Security.Cryptography;

public class Criptografia 
{
    
private static byte
[] chave = { };
   
private static byte
[] iv = { 12, 34, 56, 78, 90, 102, 114, 126 };

    public Criptografia()
    {    

    }

    public static string Criptografar(string valor, string chaveCriptografia)
    {
        DESCryptoServiceProvider des; 
        MemoryStream ms; 
        CryptoStream cs; byte[] input;

        try
        {
            des = new DESCryptoServiceProvider();
            ms = new MemoryStream();

            input = Encoding.UTF8.GetBytes(valor);chave = Encoding.UTF8.GetBytes(chaveCriptografia.Substring(0, 8));

            cs = new CryptoStream(ms, des.CreateEncryptor(chave, iv), CryptoStreamMode.Write);
            cs.Write(input, 0, input.Length);
            cs.FlushFinalBlock();

            return Convert.ToBase64String(ms.ToArray());
       
}
        catch (Exception ex)
       
{
            throw ex; 
        }
    }

    public static string Descriptografar(string valor, string chaveCriptografia)
   
{
        DESCryptoServiceProvider des;
        MemoryStream ms; 
       
CryptoStream cs; byte[] input;

        try
       

            des = new DESCryptoServiceProvider();
           
ms = new MemoryStream();

            input = new byte[valor.Length];
            input = Convert.FromBase64String(valor.Replace(” “, “+”));

            chave = Encoding.UTF8.GetBytes(chaveCriptografia.Substring(0, 8));

            cs = new CryptoStream(ms, des.CreateDecryptor(chave, iv), CryptoStreamMode.Write);
           
cs.Write(input, 0, input.Length);
           
cs.FlushFinalBlock();

            return Encoding.UTF8.GetString(ms.ToArray());
       
}
       
catch (Exception ex)
       
{
            throw ex;
        }
    }
}

Para testar o funcionamento da rotinha criei dois webforms: “Pagina1.aspx” e “Pagina2.aspx”.

Na “Pagina1.aspx” adicionei um Button e implementei o seguinte código para o evento Click. Onde é montada a URL com o valor da querystring criptografado pelo método “Criptografar” da Classe “Criptografia”. Escolhi o valor 12 como ID de exemplo: 

protected void Button1_Click(object sender, EventArgs e)
{
    string url = “Pagina2.aspx?id=” + Criptografia.Criptografar(“12″, “#!$a36?@”);

    Response.Redirect(url);
}
Já na “Pagina2.aspx”, adicionei um Label e implementei o seguinte código para o evento Load da página. E exibirá o valor da querystring, já descriptografado no Label:

protected void Page_Load(object sender, EventArgs e)
{
    string querystring = Request.QueryString["id"];

    Label1.Text = Criptografia.Descriptografar(querystring, “#!$a36?@”);
}

February 19, 2011

Tecnologia de criptografia WPA é quebrada em minutos no Japão

Cientistas japoneses exploram brecha identificada em 2008 para quebrar popular tecnologia que garante segurança de dados em roteadores.

Dois cientistas japoneses criaram um método que quebra a tecnologia de criptografia Wi-FI Protected Access (WPA) em questão de minutos, o que pode colocar em risco roteadores que usam a popular ferramenta de segurança. Toshihiro Ohigashi, da Universidade de Hiroshima, e Masakaty Morii, da Universidade de Kobe, conseguiram a façanha há duas semanas, no evento Joint Workshop on Information Security, em Taiwan. Mais detalhes serão apresentados em conferência no Japão, que deve acontecer no dia 24 de setembro. Quem faz o ataque consegue ler tráfego criptografado em WPA, que circula em uma rede. Especialistas em segurança já tinham alertado para essa possibilidade em novembro do ano passado, mas os japoneses levaram a teoria à prática e mostraram que a quebra de segurança pode ocorrer em minutos. Os sistemas de criptografia em roteadores sem fio têm um longo histórico de problemas. O sistema WEP (Wired Equivalent Privacy), lançado em 1997, foi quebrado poucos anos depois e hoje é considerado completamente inseguro. Já existe, no entanto, alternativa para o WPA. É o WPA 2, que existe desde março de 2006. “Apesar da alternativa mais segura, ainda existe uma grande base instalada pelo mundo que não migrou para o novo sistema”, afirma o diretor de marketing da organização Wi-Fi Alliance, Kelly Davis-Felner. A Wi-Fi Alliance é a entidade responsável por estabelecer padrões de redes sem fio para a indústria. Para o CEO da empresa de segurança Errata Security, Robert Graham, a nova prática de quebra de segurança não chega a ser um motivo de desespero, mas é preocupante. “Os softwares de segurança existentes no mercado são capazes de barrar esse ataque se o roteador não o fizer, mas a quebra da segurança é o suficiente para os profissionais de tecnologia dispensarem o sistema WPA”, diz. A alteração do tipo de segurança no roteador é simples e pode ser configurado por qualquer pessoa que tenha acesso administrativo à interface do equipamento.

Por IDG News Service

February 10, 2011

Instalando o Microsoft Dynamics CRM 4.0

 

Abaixo um Guia Prático para instalar o Microsoft CRM 4.0 passo a passo, se você ainda não teve nenhum tipo de contato com o produto já vou deixar aqui um link ( http://www.microsoft.com/downloads/details.aspx?FamilyID=1ceb5e01-de9f-48c0-8ce2-51633ebf4714&DisplayLang=pt-br ) para que você possa baixar o Guia de Implementação do Microsoft CRM 4.0 , neste guia já tem as informações necessárias para instalação, bem como o requisito minímo de hardware e informações importantes para uma boa implementação.

A princípio vamos precisar de um controlador de dominío com Windows Server 2003/2008 e um Servidor SQL 2005 ou 2008/R2 e credenciais administrativas.

Insira o DVD do Microsoft Dynamics CRM 4.0, e selecione a opção “Install Microsoft Dynamics CRM Server”

Algumas atualizações são importantes serem feitas antes da Instalação, por isso é recomendado nesse ponto inicial da instalação clicar em “Update installation file”

Depois de escolher em Atualizar ou não, e insira a Licença do Software (Normalmente encontrada no BOX do DVD)

e clique em “Next” para continuar, leia (ou não) a licença de uso e selecione “I accept this license agreement” \o/ e clique em Next

O CRM 4.0 necessita instalar alguns componentes requeridos, Clique em “Install” para instalar.

depois de instalado todos os componentes, clique em “Next”

Selecione o Tipo de Instalação (Typical ou Custom) e clique em Next para continuar

Selecione o Servidor SQL server, caso não seja exibido e o Servidor SQL Server esteja instalado no mesmo servidor, informe localhost e clique em “Next para continuar”

Informe o Nome da Sua Empresa

Clique em “Browse” (na tela acima) e selecione o ISO do seu País. Nesse caso selecionamos infelizmente o Brasil, após a seleção clique em “OK”

Ao concluir a escolha do ISO, clique em Next

Na Tela Seguinte, vai ser solicitado se você deseja participar do “Customer Experience Improvement” para ajudar na qualidade, melhoria, etc do CRM. Recomendamos que você participe.

Agora nesse passo, informe o local de instalação do CRM e em seguida clique em Next para continuar

Selecione o Website que vai rodar o Microsoft CRM ou crie um servidor em uma porta específica. e clique em Next para continuar

Informe o URL do SQL Server Reporting Services e clique em Next

Selecione a Unidade Organizacional do Active Directory clicando em “Browse…” (Veja imagem abaixo)

Selecione a Unidade Organizacional e clique em OK. e em Next (da tela acima)

Informa a Conta de Segurança usada pelo Microsoft Dynamics CRM services e clique em Next para continuar.

O servidor de email é opcional, podemos clicar em Next. será mostrado um mensagem informando que temos a opção de configurar o servidor de email depois da instalação.

Vai ser efetuado uma verificação dos Requisitos do Sistema, se estiver tudo Ok, clique em Next para continuar

Será exibido um Resumo da instalação, clique em Next se estiver tudo ok (Ou Back para corrigir)

aguarde a instalação do Microsoft Dynamics CRM 4.0…..

Pronto… Instalado !! Agora você deve reiniciar o servidor

Pacote de Linguagem pt-br ( http://www.microsoft.com/downloads/details.aspx?FamilyID=50761e58-6040-4cf3-853a-f5ab535f7194&displayLang=pt-br )

Microsoft Dynamics CRM Instalado (em português)