Domanda

Questo sembra così banale, ma non riesco a farlo funzionare ..

Ho un involucro msi.dll (chiamato Interop.WindowsInstaller.dll), che ho bisogno di firmare. Il modo per farlo è con la firma su di importazione (questo caso specifico è anche documentato in MSDN: http://msdn.microsoft.com/en-us/library/zec56a0w.aspx ).

MA - non importa come lo faccio (w / o w / oa file di chiavi, w / o w / o aggiungendo "/ DelaySign"), il generato del assemly dimensione è sempre 36,864 byte e quando visualizzando le proprietà del DLL non c'è scheda "Firme digitali" (manco a dirlo - la DLL non è firmato).

Che cosa mi manca qui ?? (... AIUTO! ...)

È stato utile?

Soluzione

[ Nota : Alla fine ho ottenuto un suggerimento da Karel Zikmund su questo discussione, che mi ha aiutato a risolvere il mistero. Io incollo qui la mia risposta -. Per il bene superiore]

Così, ho usato la seguente riga di firmare-upon-import l'assemblea:

tlbimp C: \ WINDOWS \ system32 \ msi.dll /out:Interop.WindowsInstaller.dll /keyfile:MyKey.snk

Poi ho copiato il file nella posizione appropriata e costruito il progetto, ma ogni volta che la costruzione non è riuscita sul seguente errore: generazione Assembly non riuscito - di riferimento assembly 'Interop.WindowsInstaller' non ha un nome sicuro .

ho pensato che il problema era con la linea TlbImp, ma dopo aver letto la risposta di Karel Zikmund e verificando che la DLL è con nome (con sn -vf Interop.WindowsInstaller ) ho scoperto il problema.

L'aggiunta di un riferimento all'oggetto COM "di Microsoft Windows Installer Object Library" in realtà ha piantato un blocco di codice nel file Csproj. Non mi rendevo conto, ma questo blocco ha causato il file DLL da rigenerare da zero su ogni volta che il progetto è stato costruito . Il file generato, ovviamente, non era forte il nome in più.

Il modo in cui ho risolto è stato per rimuovere il riferimento a "Microsoft Windows Object Library Installer" dal progetto, e aggiungere un file diretta riferimento alla importato (e già firmato) Interop .WindowsInstaller.dll file.

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