Установщик для .xlam не может изменить папку установки - PullRequest
0 голосов
/ 24 июня 2019

Я написал программу установки (в VBA) для установки или переустановки надстройки Excel .xlam, включая изменение места установки, если надстройка уже установлена.

Надстройка (назовем ее «MyAddin») предоставляет функции UDF нескольким пользователям.Из-за проблем с пользовательскими функциями VBA и ссылками на книги (задокументировано в другом месте - Путь к UDF надстройки Excel * ), мы устанавливаем надстройку в общее расположение C: \ ExcelAddins \ MyAddin \ для всех пользователей вместо%AppData% \ Microsoft \ AddIns \

Dim oAddInOld As Excel.AddIn
Dim oAddInNew As Excel.AddIn
Dim FSO as new scripting.FileSystemObject

const srcePath as string = "G:\Repository\MyAddin.xlam"
const destPath as string = "C:\ExcelAddins\MyAddin\MyAddin.xlam"
const destFldr as string = "C:\ExcelAddins\MyAddin"
const addinName as string = "MyAddin.clam"

' iterated through installed addins to find already installed

For each oAddInOld In Application.AddIns

    If oAddInOld.name = addinName then
        oAddInOld.Installed = False

        'Even attempt to nuke it from the registry. 
        ' Code not included, but is working
        ' has some smarts around identifying which OPEN item 
        ' corresponds to this addin.
        '     oReg.DeleteValue HKEY_CURRENT_USER, _
        '         "SOFTWARE\Microsoft\Office\15.0\Excel\Options", "OPEN1"

        DeleteAddinFromRegistry  addinName 

    end if
Next oAddInld


'Create the new addin folder and copy the new version there
FSO.CreateFolder destFldr '(actual code is a little smarter)
FSO.CopyFile srcePath, destPath

'Install the new addin in the new folder  (Tried CopyFile:=True and CopyFile:=False)
Set oAddIn = Application.AddIns.Add(destPath , CopyFile:=False)

'Enable the addin
oAddIn.Installed = True

MsgBox "Addin Installed. Please save your work and restart excel"

Программа установки работает нормально, если надстройка уже не установлена ​​в другом месте (например,% AppData% \ Microsoft \ AddIns).В этом случае местоположение не будет изменено автоматически.Пользователь должен выбрать кнопку «Обзор» в диалоговом окне «Надстройки Excel» и перейти к новому расположению, то есть установщик по сути является прославленным копировщиком файлов.

Есть ли способ полностью автоматизировать этот процесс без ручного вмешательства?Надстройка была развернута во всем мире, и большинство пользователей уже имеют ее в старом расположении% AppData% \ Microsoft \ AddIns.

ps VBScript глобально отключен.Иначе у меня было бы решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...