Domanda

Quando la mia applicazione viene disinstallata, il server deve essere avvisato in modo da poter liberare la chiave di licenza assegnata al client. Questo viene fatto tramite una chiamata al servizio web.

Ho creato un'azione personalizzata C # che esegue questa operazione. Il problema è che il programma di disinstallazione sta terminando dicendo che non è riuscito a trovare una dll.

Il registro degli errori per l'MSI contiene il seguente errore:

  

Errore 1723. Si è verificato un problema con   questo pacchetto di Windows Installer. Una DLL   necessario per completare l'installazione   non può essere eseguito. Contatta il tuo supporto   personale o venditore di pacchetti. Azione   ReadLicenseKeyFromFile, voce:   ReadLicenseKey, libreria:   C: \ Windows \ Installer \ MSI4F42.tmp

Ho la funzione ReadLicenseKey contrassegnata come un'azione personalizzata. L'azione personalizzata è denominata ReadLicenseKeyFromFile.

<Custom Action="ReadLicenseKeyFromFile" After="InstallInitialize">
    REMOVE~="ALL" AND NOT UPGRADINGPRODUCTCODE
</Custom>

<CustomAction Id="ReadLicenseKeyFromFile" BinaryKey="UnInstallCA.CA.dll" DllEntry="ReadLicenseKey" Execute="immediate" Return="check" />

<Binary Id="UnInstallCA.CA.dll" SourceFile="$(var.UnInstallCA.TargetDir)UnInstallCA.CA.dll" />

Il progetto di azione personalizzato sta producendo il file .CA.dll. Ho provato a installare il file come parte dell'installazione, a copiare manualmente il file incollato, a non fare nulla sul file ... fondamentalmente ho provato tutte le possibili combinazioni.

Ci deve essere qualcosa che mi manca, quindi per favore aiutate.

È stato utile?

Soluzione

Mi dispiace di aver sprecato il tempo di tutti per questo.

La soluzione era qualcosa di troppo semplice. Avevo dimenticato di posizionare l'attributo [CustomAction] su questo particolare metodo. Quindi, anche se è stata l'ultima azione che avevo scritto nel mio file CustomAction.cs, è stata la prima ad essere chiamata in InstallExecuteSequence. E per questo motivo, mi sono indotto a pensare che non riusciva a trovare il file. Bene, così come il fatto che devo essere stato davvero assonnato ...

Comunque, mentre cercavo la risposta sono riuscito a trovare molte belle risorse, specialmente serie Alex Shevchuks su Wix . Un'altra cosa che ho capito è che non devo installare il file dll di azioni personalizzate. Ho appena fatto riferimento al mio progetto Wix e fornisco il percorso. La DLL viene incorporata nel programma di installazione e viene trasmessa in streaming da lì quando devono essere chiamate le azioni personalizzate di disinstallazione.

Altri suggerimenti

Il tuo UnInstallCA.CA.dll è stato copiato sul computer di destinazione durante l'installazione? Sembra che non sia presente al momento della disinstallazione.

Se è arrivato lì, può funzionare? (prova a eseguirlo dal computer di destinazione per vedere se può fare quello che dovrebbe fare - forse devi spedire qualche altra dll che stai usando da questo - o forse un pacchetto ridistribuibile)

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