Registrierung von .NET-Assemblys für COM-Interop mit x86/x64 Kompatibilität
Achtung Dieser Abschnitt ist im Wesentlichen dasselbe wie REGASM Assembly.dll /codebase
In diesem Beispiel passieren ein paar Dinge, also hier ist der Code und ich werde es danach erklären...
Wenn Sie sich fragen, dies ist eigentlich für einen ASCOM-Teleskop-Treiber.
Zunächst habe ich den oben genannten Rat befolgt und einige Plattformvariablen in einer separaten Datei erstellt, Sie können diese im XML verstreut sehen.
Der If-Then-Else-Teil oben beschäftigt sich mit der x86- gegen x64-Kompatibilität. Meine Assembly zielt auf 'Any CPU' ab, also auf einem x64-System muss ich sie zweimal registrieren, einmal im 64-Bit-Register und einmal in den 32-Bit Wow6432Node
Bereichen. Das If-Then-Else bereitet mich darauf vor, die Werte werden später in einer foreach
-Schleife verwendet. Auf diese Weise muss ich die Registrierungsschlüssel nur einmal erstellen (DRY-Prinzip).
Das Dateielement spezifiziert die tatsächliche Assembly-DLL, die installiert und registriert wird:
Nichts Revolutionäres, aber beachten Sie das Assembly=".net"
- dieses Attribut allein würde bewirken, dass die Assembly in den GAC eingefügt wird, was NICHT das ist, was ich wollte. Durch Verwendung des AssemblyApplication
-Attributs, das auf sich selbst verweist, verhindere ich einfach, dass Wix die Datei in den GAC einfügt. Jetzt, da Wix weiß, dass es sich um eine .NET-Assembly handelt, kann ich bestimmte Bindungsvariablen in meinem XML verwenden, wie z.B. !(bind.assemblyFullname.filDriverAssembly)
, um den vollständigen Namen der Assembly zu erhalten.
0 Stimmen
Blicken Sie sich gui4wix.codeplex.com an
10 Stimmen
Als nicht konstruktiv geschlossen? Ich habe eine Menge gelernt, indem ich diese Frage gestellt habe! Ein wenig Konsistenz von StackOverflow wäre auch schön...z.B. stackoverflow.com/questions/550632/…
15 Stimmen
Es bekam '203' Likes, das reicht aus, um seine Nützlichkeit zu beweisen.
0 Stimmen
SO-Fragen müssen eine definitive, korrekte Antwort haben; offene Fragen führen dazu, dass die Fragen, die die Leute zu tatsächlichen Problemen stellen, von der Startseite abrutschen. FAQ @Si.: Diese Richtlinie war meines Wissens schon immer da, aber sie wird jetzt besser durchgesetzt; diese Frage ist fast drei Jahre alt.
0 Stimmen
Fair genug, Jim, es handelt sich um eine offene Frage, und ich denke, es liegt an der SO-Community zu entscheiden, aber ich muss sagen, dass es eigenartig erscheint, sie als nicht konstruktiv zu schließen, da ich persönlich und anscheinend auch viele andere Personen diese Frage nützlich gefunden haben (z. B. goo.gl/Zqp2X), und dass sie sehr gut zum Teil des FAQs passt, der sich mit
praktischen, beantwortbaren Fragen basierend auf tatsächlichen Problemen, mit denen Sie konfrontiert sind
befasst.0 Stimmen
Es ist nützlich (warum ich hier bin), aber es handelt sich nicht um ein Frage-und-Antwort-Spiel, sondern um eine Diskussion. Die Frage selbst scheint eine legitime Frage zu sein und die aktuell am meisten hochgevotete Antwort scheint eine legitime Antwort zu sein, aber der Rest der Antworten fügen nur ihren Senf hinzu, was es zu einer Diskussion macht.