/ / Customizing ClickOnce installer - clickonce

Personalizando o instalador do ClickOnce - clickonce

Eu preciso de uma ação post no instalador ClickOnce quedeve ser executado após os arquivos do aplicativo serem armazenados no lado do cliente, mas antes da primeira execução do aplicativo. Especificamente, eu gostaria de criptografar seções de um arquivo de configuração.

Pelo que eu encontrei, é possível adicionar umclasse contendo métodos InPlaceHostingManager e usá-lo para instalação explícita / atualizações mais tarde, mas como se pode substituir o instalador ClickOnce padrão para que o código personalizado é chamado?

Eu gostaria de emular o comportamento do antigo projeto de instalação que invoca o método de instalação de qualquer herdeiro do System.Configuration.Install.Installer que você conecte em seu projeto.

Obrigado.

Respostas:

1 para resposta № 1

Não acredito que isso seja possível com o ClickOnce.

Pelo que vejo algumas de suas opções incluem:

  1. Voltando para um instalador MSI
  2. Codificando os arquivos de configuração como uma etapa pré / pós-compilação na máquina de desenvolvimento / publicação, implemente a versão totalmente codificada
  3. Codificando os arquivos de configuração no Primeira corrida do aplicativo (se você encontrar uma maneira de garantir que eles não estão sendo bloqueados)

Além disso, você mencionou InPlaceHostingManager. Parece-me que é uma maneira de hospedar a estrutura de instalação do ClickOnce (em vez de fazê-lo via IE, por exemplo). Isso pode permitir que você faça um aplicativo de instalação personalizado para hospedar a instalação e executar as etapas de pós-instalação. problema é que você ainda precisará instalar seu aplicativo de instalação personalizado de alguma forma (e executá-lo como um usuário com direitos de instalação) ...


1 para resposta № 2

Por que você não pode fazer a codificação dos arquivos quando seu aplicativo é executado antes de fazer qualquer outra coisa? É realmente tarde demais?

Você pode usar o InPlace Hosting Manager para atualizarum aplicativo clickonce. Você pode usá-lo para instalar um, a única coisa que você precisa é ter o .NET Framework instalado antes do tempo ou escrever um pequeno exe em C que irá verificar (não pode ser código gerenciado).

Veja se isso ajuda você a: http://msdn.microsoft.com/en-us/library/dd997001(v=VS.100).aspx


0 para resposta № 3

Você pode usar Primeira corrida.

Namespace: System.Deployment.Application

Montagem: System.Deployment (em System.Deployment.dll)

O método irá chamar a primeira janela.

private void DownloadFileGroupSync(string fileGroup)
{
if (ApplicationDeployment.IsNetworkDeployed)
{
ApplicationDeployment deployment = ApplicationDeployment.CurrentDeployment;

if (deployment.IsFirstRun)
{
try
{
if (deployment.IsFileGroupDownloaded(fileGroup))
{
deployment.DownloadFileGroup(fileGroup);
}
}
catch (InvalidOperationException ioe)
{
MessageBox.Show("This application is not a ClickOnce application. Error: " + ioe.Message);
return;
}

downloadStatus.Text = String.Format("Download of file group {0} complete.", fileGroup);
}
}
}