[CDR 2017-2021] Инсталляция макросов в свеженький Корел.

tohaa

Участник
Топикстартер
Сообщения
229
Реакции
8
Добрый день. Подскажите способ создания установщика для макросов в корел.
Хотелось бы после установки корела запустить сетап.ехе и установить нужные макросы. С кнопочкам в рабочем пространстве, иконками, формами и текстом макросов.
Чем лучше? Как лучше?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Что именно вас интересует? Программ для создания установочных пакетов полно, все нормальные из них платные.
 

tohaa

Участник
Топикстартер
Сообщения
229
Реакции
8
Что именно вас интересует? Программ для создания установочных пакетов полно, все нормальные из них платные.
Меня интересует мнение местных премудрых пользователей. Кто чем делал? Как проще? Чем проще? Какие особенности?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Я когда то давно делал установщик макроса в виде макроса. Типа, открываешь кореловский файл, обана, и макрос установлен!
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
неплохо! А можно подробнее?
Ну все просто - в файл внедрен макрос в котором обработчик события открытие документа. Корел сперва предупреждает - в документе макросы, запускаем? Пользователь соглашается и макрос сам все по папкам распихивает
 

DukereD

макрософил
Сообщения
459
Реакции
112
я просто BAT файл использую тупо copy в папку
"%APPDATA%\Corel\CoreldrAW Graphics Suite 2022\Draw"
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
А кнопочки-иконочки?
 

DukereD

макрософил
Сообщения
459
Реакции
112
А кнопочки-иконочки?
так это уже после установки сам макрос сделает. тут сморя куда запихнуть обработчик.
хоть просто в eventslistner.


Код:
Public Sub init_panels()
    Dim panel_name As String
    Dim nCurLang As Long
   
    panel_name = "Woodman Panel"
    panel_installed = False
 
    For i = 1 To CommandBars.Count
        If CommandBars(i).Name = panel_name Then
            panel_installed = True
            Exit For
        End If
    Next
   
    If Not panel_installed Then
        Application.FrameWork.CommandBars.Add panel_name
        Application.FrameWork.CommandBars(panel_name).Enabled = True
        Application.FrameWork.CommandBars(panel_name).Visible = True
       
        t_m = "Panel by Woodman"
        ad_m = True
        t_f = "Fonts collection"
        ad_f = True
        t_mi = "Mini info"
        ad_mi = True
        t_s13 = "Save old version"
        ad_s13 = True
        t_sdxf = "Save to DXF"
        ad_sdxf = True
        t_col_trans = "Make transparent"
        ad_col_trans = True
        t_col_def = "Make default color"
        ad_col_def = True
        For Each c In Application.FrameWork.CommandBars(panel_name).Controls
            Select Case c.Caption
                Case t_m: ad_m = False
                Case t_f: ad_f = False
                Case t_mi: ad_mi = False
                Case t_s13: ad_s13 = False
                Case t_sdxf: ad_sdxf = False
                Case t_col_trans: ad_col_trans = False
                Case t_col_def: ad_col_def = False
            End Select
        Next c
           
        If ad_m Then
            Set b = Application.FrameWork.CommandBars(panel_name).Controls.AddCustomButton("2cc24a3e-fe24-4708-9a74-9c75406eebcd", "woodman.woodman_panel.tools_panel")
                b.Caption = t_m
                b.ToolTipText = "Macros Panel by Woodman"
        End If
        If ad_f Then
            Set b = Application.FrameWork.CommandBars(panel_name).Controls.AddCustomButton("2cc24a3e-fe24-4708-9a74-9c75406eebcd", "woodman.woodman_panel.tools_font_collect")
                b.Caption = t_f
                b.ToolTipText = "Font Collection"
        End If
        If ad_mi Then
            Set b = Application.FrameWork.CommandBars(panel_name).Controls.AddCustomButton("2cc24a3e-fe24-4708-9a74-9c75406eebcd", "woodman.woodman_panel.tools_info_mini")
                b.Caption = t_mi
                b.ToolTipText = "Mini info panel"
        End If
        If ad_s13 Then
            Set b = Application.FrameWork.CommandBars(panel_name).Controls.AddCustomButton("2cc24a3e-fe24-4708-9a74-9c75406eebcd", "woodman.woodman_panel.save_13v")
                b.Caption = t_s13
                b.ToolTipText = "Save current file to oldest version"
        End If
        If ad_sdxf Then
            Set b = Application.FrameWork.CommandBars(panel_name).Controls.AddCustomButton("2cc24a3e-fe24-4708-9a74-9c75406eebcd", "woodman.woodman_panel.Save_dxf")
                b.Caption = t_sdxf
                b.ToolTipText = "Save to DXF with the same name"
        End If
        If ad_col_trans Then
            Set b = Application.FrameWork.CommandBars(panel_name).Controls.AddCustomButton("2cc24a3e-fe24-4708-9a74-9c75406eebcd", "woodman.woodman_panel.set_color_transparent")
                b.Caption = t_col_trans
                b.ToolTipText = "Make picture transparent an locked"
        End If
        If ad_col_def Then
            Set b = Application.FrameWork.CommandBars(panel_name).Controls.AddCustomButton("2cc24a3e-fe24-4708-9a74-9c75406eebcd", "woodman.woodman_panel.set_color_def")
                b.Caption = t_col_def
                b.ToolTipText = "Make default fill and contour"
        End If
    End If
    On Error GoTo 0
End Sub


а там уж на любой ивент в ThisMacroStorage вешать

1651837125521.png
 
Последнее редактирование:
  • Спасибо
Реакции: mnemonix

DukereD

макрософил
Сообщения
459
Реакции
112
у Корела две папки GMS, так что можно макрос переписывать и в ту, которая в Program Files\Corel\CorelDRAW Graphics Suite находится
если простой макрос - то да. но а так в папку програм файлз из макроса нет доступа на запись. поэтому лучше использовать AppData
Application.GMSManager.UserGMSPath
 
  • Спасибо
Реакции: _MBK_

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
  • Спасибо
Реакции: DukereD

Акулыч

Участник
Сообщения
29
Реакции
10
Это некошерно ибо она какбэ системная, то есть от записи защищена
ну не знаю, у меня в ней все макросы хранятся. Ярлык на рабочий стол кинул и готовые макросы оттуда клиентам скидываю. А через AppData не парюсь, ибо сама папка скрытая, проще через Program Files
 

Акулыч

Участник
Сообщения
29
Реакции
10
если простой макрос - то да. но а так в папку програм файлз из макроса нет доступа на запись. поэтому лучше использовать AppData
ну не знаю. Недавно, кстати, ваш woodman-овский макрос ковырял, один из клиентов попросил добавить функционал, которого там не было, так просто всё переписал в папку GMS, не инсталлируя макрос, и всё работало и так.
 

DukereD

макрософил
Сообщения
459
Реакции
112
ну не знаю, у меня в ней все макросы хранятся. Ярлык на рабочий стол кинул и готовые макросы оттуда клиентам скидываю. А через AppData не парюсь, ибо сама папка скрытая, проще через Program Files
можно, но не по фэншую хранить пользовательские файлы в системной папке. :)
 

DukereD

макрософил
Сообщения
459
Реакции
112
ну не знаю. Недавно, кстати, ваш woodman-овский макрос ковырял, один из клиентов попросил добавить функционал, которого там не было, так просто всё переписал в папку GMS, не инсталлируя макрос, и всё работало и так.
так конечно будет работать. но настройки сохранять не будет если в програм файлз лежать будет .
а что если не секрет дописывали? )))
интересно почему автора не просили дописать а стороннего разработчика )
 

DukereD

макрософил
Сообщения
459
Реакции
112

Акулыч

Участник
Сообщения
29
Реакции
10
так конечно будет работать. но настройки сохранять не будет если в програм файлз лежать будет .
а что если не секрет дописывали? )))
интересно почему автора не просили дописать а стороннего разработчика )
ох, это было месяц назад. Я, кстати, тот же вопрос задавал, мол, проще было бы напрямую разработчика попросить. Не помню уже причину, по которой тот отказался, надо переписку смотреть. А дописывал одну фишку - возможность перевода текста, используя файлы со шрифтами из папки fonts, типа, arial.ini, содержащие набор данных о сегментах и прочей лабуде. Нужно было сделать так, чтобы корректно переводился текст, содержащий разные шрифты одновременно.
 
Последнее редактирование: