Я только что создал свое первое приложение в Windows.
Как мне присвоить иконку?
Для этого не существует никаких флагов построения, и я знаю, что golang не поддерживает ресурсы.
Я только что создал свое первое приложение в Windows.
Как мне присвоить иконку?
Для этого не существует никаких флагов построения, и я знаю, что golang не поддерживает ресурсы.
Вы можете использовать инструмент, например 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
Тема длительная, на самом деле 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