2010-04-21 6 views
0

Cela semble si banal, mais je ne peux pas le faire fonctionner ..Impossible de signer un assemblage msi.dll en utilisant importé tlbimp

J'ai une enveloppe msi.dll (nommée Interop.WindowsInstaller.dll) qui Je dois signer. La façon de le faire est en le signant lors de l'importation (ce cas spécifique est même documenté dans MSDN: http://msdn.microsoft.com/en-us/library/zec56a0w.aspx).

MAIS - peu importe comment je le fais (w/ou w/oa keyfile, w/ou w/o ajouter "/ delaysign"), la taille du produit assemly est toujours 36,864 octets et lors de l'affichage des propriétés de la DLL il n'y a pas d'onglet "Digital Signatures" (inutile de dire que la DLL n'est PAS signée).

Qu'est-ce qui me manque ici ?? (... AIDE! ...)

Répondre

0

[Note: Finalement, j'ai reçu un indice de Karel Zikmund on this thread, qui m'a aidé à résoudre le mystère. Je vais coller ma réponse ici - pour le plus grand bien].

Alors, je la ligne suivante pour vous inscrire à-importer l'ensemble:

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

je puis copié le fichier à l'emplacement approprié et construit le projet, mais chaque fois que la construction a échoué sur l'erreur suivante: génération de montage a échoué - Assemblée Referenced « Interop.WindowsInstaller » ne dispose pas d'un nom fort .

Je pensais que le problème était avec la ligne tlbimp, mais après avoir lu la réponse de Karel Zikmund et de vérifier que la DLL est forte du nom (en utilisant sn -vf Interop.WindowsInstaller) Je trouve le problème.

L'ajout d'une référence à l'objet COM "Microsoft Windows Installer Object Library" a réellement planté un bloc de code dans le fichier .csproj. Je ne l'ai pas réalisé, mais ce bloc a provoqué la régénération du fichier DLL à partir de zéro à chaque fois que le projet a été construit. Le fichier généré, bien sûr, n'était plus fort.

La façon dont je pris la résolution était de supprimer la référence à la « bibliothèque d'objets Microsoft Windows Installer » du projet, et ajoutez un fichier direct référence à l'importation (et déjà signé) Interop.WindowsInstaller.dll fichier .

Questions connexes