DIRCA_CHECKFX Valore restituito 3 – Progetto di distribuzione VS 2013

Ho il temuto problema dal mio tentativo di installazione di un MSI:

MSI (c) (98:B0) [18:01:22:818]: Invoking remote custom action. DLL: C:\DOCUME~1\sspencer\LOCALS~1\Temp\1\MSI19.tmp, Entrypoint: CheckFX MSI (c) (98:FC) [18:01:22:833]: Cloaking enabled. MSI (c) (98:FC) [18:01:22:833]: Attempting to enable all disabled privileges before calling Install on Server MSI (c) (98:FC) [18:01:22:833]: Connected to service for CA interface. Action ended 18:01:22: DIRCA_CheckFX. Return value 3. 

Dopo un po ‘di ricerche, questo indica che la DLL non è stata caricata completamente, il server CA non è stato in grado di connettersi e iniziare a colpire i punti di ingresso della DLL.

Ho usato orca e 7zip per estrarre l’azione personalizzata per DIRCA_CheckFX che viene inserita da Visual Studio al momento della creazione del progetto di distribuzione. Ho afferrato la DLL e poi eseguito Dependency Walker nel sistema host (Server 2003 R2) che ha dato l’errore:

 Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module. 

Ho ricompilato il sistema utilizzando il compilatore VS 2010, ho estratto la DLL e ho eseguito il walker delle dipendenze su di esso, che non ha creato lo stesso errore. La compilazione di Ie VS 2010 funziona, la compilazione di VS 2013 non riesce poiché la DLL inclusa non viene caricata nell’ambiente di destinazione.

La mia domanda è come faccio a risolvere quale DLL (s) mancano al fine di risolvere l’errore segnalato da Dependency Walker.

Deve essere installato VS 2010 da cui è ansible ottenere il file “dpca.dll” valido.

  1. Chiudi Visual Studio 2013
  2. Copia il file con sostituire dpca.dll da C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\Deployment in C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\VSI\bin .
  3. Progetto aperto
  4. Ribuild

L’anteprima di .vdproj resurrection utilizza DLL che non supportano Windows XP o Server 2003. Microsoft ha pubblicato un aggiornamento che potrebbe aver risolto il problema.

Ecco cosa ho fatto per risolvere questo problema per un progetto di distribuzione a 32 bit.

  1. Costruire il progetto di installazione in VS2010 una volta. Questo pacchetto non è ostacolato dal problema, ma non volevo continuare a build in una versione VS diversa.

  2. Aprire l’MSI risultante con Orca, selezionare la tabella binaria ed esportare il contenuto di MSVBDPCADLL in un file.

  3. Ora, dopo averlo creato in VS2013, utilizzare Orca per importare i dati esportati in Binary \ MSVBDPCADLL per correggere il pacchetto.

Devo fare una cosa simile con il progetto 64-bit, ma in questo caso importare il corretto binario InstallUtil (essendo C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ InstallUtilLib.dll).

I progetti di distribuzione di Visual Studio sono stati così orribili che Microsoft li ha rimossi da Visual Studio 2012. Gli sviluppatori erano così ignoranti sul motivo per cui erano orribili che pregavano e imploravano che tornassero. I ragazzi intelligenti di Microsoft che capiscono che MSI ha lasciato l’edificio e che le persone sono rimaste soccombette agli sviluppatori che chiedevano che tornasse.

Uno di quei ragazzi davvero intelligenti lo ha riassunto perfettamente in un tweet:

Il ritorno di vdproj: Headshots, persone o tornano come walker.

Ho scritto un articolo sui miei sentimenti: Visual Studio Installer Resurrection

Quindi parliamo del modo in cui lo strumento sta fallendo questa volta. Prenditi un momento per leggere questo articolo scritto da uno degli altri veramente intelligenti per lasciare MSFT:

Zataoca: le azioni personalizzate sono (generalmente) un’ammissione di fallimento.

VDRPOJ ha creato un’azione personalizzata per fare qualcosa che MSI avrebbe potuto fare in modo nativo e ora non funziona. Quindi diciamo che trovi la DLL e la aggiusti per funzionare sulla tua macchina. Cosa succede quando spedisci il tuo MSI a 1.000.000 di macchine? Quante macchine riuscirà a mancare? Quante chiamate di supporto riceverete? Quanti tweet otterrai che il tuo prodotto fa schifo?

In poche parole, rifarei il tuo programma di installazione utilizzando uno strumento migliore come XML di Windows Installer e XML di Windows Installer di Strength industriale. Se hai i soldi da spendere, InstallShield Professional è anche una buona scelta.