Xll Udf for all users

Add-in Express™ Support Service
That's what is more important than anything else

Xll Udf for all users
 
Kiru Marimuthu


Guest


Hi

We have an Xll wrapped over Rtd function. We would like to install this for all users. But the com-addin which contains Rtd and Adx task pane been installed for all users but UDF function is missing.

I came across this https://www.add-in-express.com/forum/read.php?FID=5&TID=7933.
Tried to add the registry entry during addin initialize event.

var xllFolderPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            var XllPath = $"/R "{xllFolderPath}\adxloader.TestAddinExpress.dll"";
            Microsoft.Win32.RegistryKey key;
            key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey($@"SoftwareMicrosoftOffice{ExcelApp.Version}ExcelOptions");
            var regValue = key.GetValue("OPEN");
            if (regValue == null || regValue.ToString() != XllPath)
            {
                key.SetValue("OPEN", XllPath);
                ExcelApp.RegisterXLL(Path.Combine(Path.GetDirectoryName(xllFolderPath), "adxloader.TestAddinExpress.dll"));
            }
            key.Close();


So this creates the registry entry for all users if it is missing and the excel-addin appears in the list but still doesn't work unless Excel was restarted.

Another https://www.add-in-express.com/forum/read.php?FID=5&TID=9953 explains about registering Xll dynamically during runtime. But this doesnt seems to work. I have to restart the Excel.

We are looking for options which register the Xll and doesn't need Excel to be restarted.

Thanks
Kiru
Posted 23 Oct, 2018 05:03:22 Top
Andrei Smolin


Add-in Express team


Posts: 18821
Joined: 2006-05-11
Hello Kiru,

The form post you refer to contains this fragment from the Add-in Express manual:

Registering an XLL add-in creates a value in the following key:

HKCU\Software\Microsoft\Office\{version}.0\Excel\Options.

The value name is OPEN or OPEN{n} where n is 1, if another Excel add-in is registerd, 2 - if there are two other Excel add-ins registered, etc. The value contains a string which is constructed in the following way:
str = "/R " + "" + pathToTheDll + ""


Note that your code doesn't check if OPEN or OPEN{n} value should be created.

I can't say whether this omission is responsible for this issue or not. We have never tested such a scenario.

I wouldn't recommend installing an add-in for all users for these reasons:
- to let an installer update such an add-in, all users must close their instances of the host application; now imagine a terminal server
- sooner or later your customer will require that your add-in works for some, not all users. Switching from per-machine to per-user add-in is more difficult than in the opposite direction.

Kiru Marimuthu writes:
Another forum post explains about registering Xll dynamically during runtime. But this doesnt seems to work. I have to restart the Excel.


That post describes using RegisterXLL, correct? Or, I miss something that you see in it?


Andrei Smolin
Add-in Express Team Leader
Posted 24 Oct, 2018 07:51:42 Top