Domanda

Ho diverse applicazioni Windows Form di .NET che sto preparando per convertire in un ClickOnce / scenario di distribuzione smart-client. Ho letto i tutorial non così grandiosi, ma ci sono insidie ??o "quotchaschas" di cui dovrei essere a conoscenza?

Esistono diverse applicazioni secondarie usate off e on, ma l'applicazione principale è in C #, funziona 24 ore su 24, 7 giorni su 7, è piuttosto grande, ma cambia solo ogni poche settimane. Scrive anche su un file di registro localmente e comunica con i dispositivi hardware locali.

È stato utile?

Soluzione

Eccone alcuni di cui sono a conoscenza.

  1. Impossibile mettere un'icona sul desktop. Ora puoi.

  2. Non riesco a installare per tutti gli utenti.

  3. Devo passare da un cerchio all'altro per spostare la distribuzione su un altro server. Non è un problema se si sta sviluppando internamente e gli utenti possono vedere il server su cui si sta pubblicando o se si sta distribuendo sul Web pubblico, ma non è eccezionale se è necessario eseguire il roll-out su più siti di clienti in modo indipendente.

  4. Poiché .NET 3.5 SP1 non è necessario firmare la distribuzione manifest più che rende molto più semplice spostare le distribuzioni su nuovi server.

  5. Non riesco a installare gli assembly nel GAC . Puoi aggirare il problema creando pacchetti di installazione regolari che sono prerequisiti per l'applicazione ClickOnce.

Altri suggerimenti

  • Quando vengono distribuiti gli aggiornamenti, la finestra di dialogo integrata farà apparire come se l'intera applicazione fosse riscaricata. In effetti, vengono scaricate solo le DLL modificate e la barra di avanzamento visualizzata è fuorviante / errata. Non perdere tempo a cercare di capire perché tutti gli assiemi vengono ridistribuiti solo per scoprire che in realtà non lo sono. Non che abbia fatto questo o niente.
  • Quando il certificato utilizzato per firmare il manifest di distribuzione originale scade e ne viene emesso uno nuovo, si è in un mondo ferito (i client dovranno disinstallare e reinstallare). Dettagli sono alla bocca del cavallo .

La maggior parte dei problemi è stata risolta, ma diverse persone hanno affermato di non essere in grado di creare un collegamento sul desktop. In effetti, < em> può creare un collegamento sul desktop con Visual & nbsp; Studio & nbsp; 2008 SP1 .

Inoltre, se non stai utilizzando l'ultima versione di Visual Studio, puoi sempre scrivi codice per creare un collegamento al collegamento del menu di avvio installato .

Avevamo un'app che stavamo per distribuire come app ClickOnce. Avevamo bisogno che l'utente fosse in grado di modificare alcune impostazioni nell'installazione (come il percorso di distribuzione - l'IT vuole servire i file dalla loro condivisione di rete, non nota al momento della compilazione). Quando si modifica uno dei file nella distribuzione, è necessario ricalcolare tutti gli hash e firmare nuovamente tutto. Quindi, se questa soluzione è interna, potresti non avere problemi a passare un certificato di firma, ma se questo è per i clienti, dovrai progettare una soluzione sofisticata per aggirare questo problema.

Ho sentito rumori da qualche parte nelle viscere degli internet che una versione futura di ClickOnce eliminerà parte di questo mal di testa.

Non è possibile disinstallare silenziosamente le applicazioni distribuite ClickOnce. Inoltre penso che sia impossibile aggiungere parametri al collegamento all'avvio.

Una delle insidie ??di ClickOnce è il fatto che non è possibile installare nel GAC . Questo è un problema se si desidera installare più applicazioni che condividono file DLL. Ogni applicazione richiederà una copia locale dei file DLL. Inoltre, sono presenti più installazioni utente. Vedi l'elenco che confronta Windows Installer con ClickOnce .

Nel caso in cui qualcuno si riferisca a questo in una ricerca, abbiamo riscontrato che molti clienti si sono preoccupati della mancanza di sicurezza che "distribuisce" la loro applicazione. L'applicazione deve essere disponibile in un luogo pubblico, senza alcuna autenticazione, per poter verificare la presenza di aggiornamenti. L'unica eccezione è se si dispone dell'autenticazione di Windows NT. Penso che Protezione delle applicazioni ClickOnce spiega cosa Voglio dire.

Le icone del desktop sono abbastanza banali da fare tramite il codice e, come detto, con 3.5 SP1 , cotto in modo che non sia più un problema.

Esiste ancora un bug non corretto con xmlSerializer - in alcuni casi non viene distribuito correttamente. Una soluzione semplice è aggiungere manualmente questo file alla distribuzione. PITA, ma è abbastanza facile ... Può essere scioccante quando la tua distribuzione all'improvviso fallisce ...

Ci sono molte cose che non puoi fare con le applicazioni ClickOnce, come installare un collegamento sul desktop dell'utente o dire qualcosa in cui viene installata l'applicazione. Per alcune persone si tratta di rompicapo.

Inoltre è passato un po 'di tempo da quando l'ho usato, ma c'è un modo speciale che puoi usare per capire e visualizzare il numero di versione / build di ClickOnce, che è separato dal numero di versione / build dell'applicazione. Devi fare un tentativo / catch e se il numero di versione / build di ClickOnce genera un'eccezione, l'applicazione non è in esecuzione come un'applicazione distribuita con ClickOnce (ovvero, è in esecuzione come un'applicazione regolarmente compilata o da Visual Studio).

Per un'applicazione semplice (ovvero non Microsoft Word , ma piuttosto un applicazione rapida e sporca per fare qualcosa) e ha bisogno di molta distribuzione regolare, ClickOnce è eccezionale. Ma piuttosto rapidamente raggiungi il muro di " oh, questo non può essere fatto da ClickOnce, per favore scegli MSI o qualcos'altro).

Avrai meno accesso al sistema rispetto alla tua normale applicazione .NET.

Questo perché otterrai un livello di fiducia inferiore. Maggiori informazioni in Guida per gli sviluppatori di .NET Framework: ClickOnce Deployment and Security .

Il mio problema più grande è stato che non è possibile crittografare sezioni del file di configurazione con la chiave della macchina, perché non si ha accesso a quella chiave (quando ci pensi ha senso proteggere quella chiave) .

Non sapevo che SP1 ti consentisse di creare l'icona del desktop.
Ecco come lo abbiamo fatto (ora noto come "il modo più duro"):

try
{
    string company = string.Empty;
    string product = string.Empty;
    if (Attribute.IsDefined(asm, typeof(AssemblyCompanyAttribute)))
    {
        AssemblyCompanyAttribute asCompany = (AssemblyCompanyAttribute)Attribute.GetCustomAttribute(asm, typeof(AssemblyCompanyAttribute));
        company = asCompany.Company;
    }
    if (Attribute.IsDefined(asm, typeof(AssemblyProductAttribute)))
    {
        AssemblyProductAttribute asProduct = (AssemblyProductAttribute)Attribute.GetCustomAttribute(asm, typeof(AssemblyProductAttribute));
        product = asProduct.Product;
    }
    if (!string.IsNullOrEmpty(company) && !string.IsNullOrEmpty(product))
    {
        string desktopPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
            product + ".appref-ms");
        string shortcutPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Programs),
            Path.Combine(company, product + ".appref-ms"));
        File.Copy(shortcutPath, desktopPath, true);
    }
}
catch 
{
    // Shortcut could not be created
}

Non è possibile installare se il client si trova dietro un proxy che richiede l'autenticazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top