Viel Text gelöscht, nochmal von vorn, diesmal kürzer und hoffentlich übersichtlicher:
Ich habe ein Setup-Projekt, mit dem ich nicht nur zwei DLLs installieren will, die als "As Any" kompiliert wurden und für eine korrekte Funktionsweise auch in der 64-Bit-Registry eines 64-Bit-Windows vollständig als COM-Objekte registriert werden
müssen. Es gehören auch zusätzliche Dateien zu dem Programmpaket, die jedoch nur als 32-Bit-Version vorliegen und von meinen DLLs "out of process" gestartet werden. Es ist daher logisch und konsequent, auch diese Dateien in das Setup mit aufzunehmen
- lediglich zum Kopieren in das Installationsverzeichnis. Eine Registrierung der 32-Bit-DLLs und -EXEs ist nicht erforderlich und dementsprechend ist das im Setup auch so eingestellt.
Nun verhält es sich jedoch leider so, dass das Setup grundsätzlich als 32-Bit-Prozess gestartet wird. Selbst wenn ich als Zielplattform "x64" angebe. Demzufolge werden meine 64-Bit-DLLs nicht wie benötigt vollständig registriert.
Ich habe das Problem vorläufig dadurch gelöst, dass ich nach dem Setup für meine beiden 64-Bit-DLLs noch einmal explizit die 64-Bit-Variante von RegAsm.exe aufrufe, sofern sie auf dem Zielsystem vorhanden ist. Als "sauber" würde ich das
aber nicht bezeichnen.
Wie kann ich das Setup-Projekt nun davon überzeugen, dass es eigentlich 64-Bit ist, obwohl es auch 32-Bit-DLLs kopieren(!) soll? Oder gibt es andere Lösungsansätze und Ideen? Abgesehen davon, ein komplett anderes Setup-Tool zu verwenden, meine
ich.