I've made multiple C# DLLs in MS Visual Studio which I then access from Excel via VBA calls. These work fine on my machine (obviously VS COM registers them for me when compiling as long as I have the right boxes ticked). I also got them working on other machines by searching my registry for any seemingly relevant keys to each of the DLLs, and copying the entries into other machines registries. Obviously that's madness though, so I want I want to make a simple installer so I can install said COM DLLs on other machines easily.
Since I have a windows forms app in there to test all the DLLs, I figured it makes most sense to just make an installer for that app, and the other DLLs should get installed as they're dependencies. Right-clicking, and publishing gives me the setup.exe. I can then install this on the other machines. But the DLLs aren't COM registered on the new machine, so although the test app works, I can't actually use them from Excel/VBA.
What do I need to do? (googling only seems to turn up pretty old stuff that I can't seem to follow with older versions of VS)
- I'm using the full version of VS 2019.
- I'm using the basic right-click/properties/publish to make a setup.exe and associated folders.
- I may get more options by adding an MSIX installer project into the solution? But I've never done that before so when I tried the learning curve of that it seemed a nightmare and wouldn't compile, largely complaining I didn't seem to have an icon of every size under the sun included. Trying to use VS to auto-generate them from 1 image caused VS to crash every time. I can try sitting in paint making them all manually if that's my only option, but it may be pointless if I don't need and MSIX installer anyway.
- At this point I'm also interested in just COM registering them manually for sanity sake without typing in the registry entries, and can work on the installer later. But as far as I can tell regasm/gacutil aren't on any of these other machines. (I also haven't used that before, so am somewhat confused by which I should use, and if I need to do it for both x86 and 64.)
- I'm a noob to VS installers, DLLs and the registry (and associated terms), so please try keep it simple. Although obviously I've got as far as making C# DLLs I can call from VBA (once COM registered), and they otherwise work a treat.