2025-12-23

紀錄:golang 如何為編譯出來的執行檔加上圖示

參考《使用rsrc给golang打包的exe文件添加程序图标》

使用 https://github.com/akavel/rsrc 這個 lib即可處理

先準備「圖示的 .ico 檔案」和「manifest.xml」

manifest.xml 的相關說明可參閱微軟官方文件:Application manifests

嫌麻煩,可以直接使用官方文件給的範本(rsrc library 給的範例也是使用此檔案):

<?xml version="1.0" encoding="UTF-8"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
	<assemblyIdentity type="win32" name="MyOrganization.MyDivision.MySampleApp" version="6.0.0.0" processorArchitecture="*" />
	<dependency>
		<dependentAssembly>
			<assemblyIdentity type="win32" name="Proseware.Research.SampleAssembly" version="6.0.0.0" processorArchitecture="*" publicKeyToken="0000000000000000" />
		</dependentAssembly>
	</dependency>
	<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
		<application>
			<!-- Windows 10 and Windows 11 -->
			<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
			<!-- Windows 8.1 -->
			<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />
			<!-- Windows 8 -->
			<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />
			<!-- Windows 7 -->
			<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
			<!-- Windows Vista -->
			<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />
		</application>
	</compatibility>
</assembly>

或是試試我提的參考文章寫的 manifests

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
    <assemblyIdentity version="1.0.0.0" processorArchitecture="*" name="SomeFunkyNameHere" type="win32"/>
    <dependency>
        <dependentAssembly>
            <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/>
        </dependentAssembly>
    </dependency>
    <asmv3:application>
        <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
            <dpiAware>true</dpiAware>
        </asmv3:windowsSettings>
    </asmv3:application>
</assembly>

之後執行以下指令

D:\workspace\my-go-project>rsrc -manifest {{ manifest.xml 的檔案位置 }} -ico {{ .ico 的檔案位置 }} 

就會生成一個附檔名為 .syso 的檔案。

然後再在專案資料夾執行 go build 編譯程式,生成的 .exe 檔就會有圖示了。

沒有留言:

張貼留言