Подтвердить что ты не робот

Как установить значок приложения в golang?

Я только что создал свое первое приложение в Windows.

Как мне присвоить иконку?

Для этого не существует никаких флагов построения, и я знаю, что golang не поддерживает ресурсы.

4b9b3361

Ответ 1

Вы можете использовать инструмент, например akavel/rsrc, чтобы сгенерировать файл .syso с указанными ресурсами, встроенными в раздел .rsrc, нацеленный для использования компоновщиком Go при создании excecutables Win32.

В качестве примера можно привести приложение lxn/walk, которое внедряет другие метаданные в свой исполняемый файл.

rsrc [-manifest FILE.exe.manifest] [-ico FILE.ico[,FILE2.ico...]] -o FILE.syso

-ico="": список путей к файлам .ico, разделенным запятыми, для вставки


Это отличается от встраивания двоичных данных в программу go.
Для этого используйте jteeuwen/go-bindata.

Чтобы получить доступ к данным о ресурсах, мы используем функцию Asset(string) []byte, которая включена в сгенерированный вывод.

data := Asset("pub/style/foo.css")
if len(data) == 0 {
    // Asset was not found.
}

// use asset data

Ответ 2

Тема длительная, на самом деле mingw - это только требование, нам не нужна зависимость от третьей стороны. Кроме того, файл ресурсов *.rc является обязательным для исполняемого приложения win32. Наконец, вы можете найти демо в rc-demo

1) Установите mingw с помощью Chocolatey: choco install mingw

2) Создайте main.exe.manifest файл

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
    version="1.0.0.0"
    processorArchitecture="x86"
    name="controls"
    type="win32"
/>
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="*"
            publicKeyToken="6595b64144ccf1df"
            language="*"
        />
    </dependentAssembly>
</dependency>
</assembly>

3) Создайте main.rc файл

100 ICON    "main.ico"
100 24      "main.exe.manifest"
101 RCDATA  "content.zip"

4) Сборка

В окнах git - bash выполните следующую команду: windres -o main-res.syso main.rc && go build -i