使用 PowerGUI 将 ps1 转换为 exe 时包含图片

Include pictures while converting ps1 to exe with PowerGUI

我使用 PowerGUI 编辑器将 ps1 文件转换为 exe 文件。原因是我不想让别人看到我的源代码。该脚本包括一个带有图片的自己的小 GUI。我的问题是,将脚本转换为 exe 文件后,只有当图片存在于特定路径时才会显示图片。如果我从该路径删除或移动图片,启动 exe 时将不会显示该图片。

如何将图片包含到exe中?我想最后只有一个文件...

一种方法是将图像转换为 Base 64 String,使用以下方法:

[convert]::ToBase64String((get-content C:\YourPicture.jpg -encoding byte)) > C:\YourString.txt

使用文本文件中生成的字符串 "C:\YourString.txt",您可以将其复制并粘贴到您的代码中,并将其加载到表单上的图片对象中,如下所示:

$logo.Image = [System.Convert]::FromBase64String('
iVBORw0KGgoAAAANSUhEUgAAAfQAAACMCAYAAACK0FuSAAAABGdBTUEAALGPC/xhBQAAAAlwSFlz
AAAXEQAAFxEByibzPwAAAAd0SU1FB98DFA8VLc5RQx4AANRpSURBVHhe7J0FmBTX0oZ7F1jc3d3d
nU+dOtXw4MGDZfft25fmyJEjPu+//76Xqzke8pCHPOQhD3lIQGxxcGSapvHdd9+FF3hHEdjGFHgn
          .......      Many more lines of string   .......
OqelFQzDMAzD/CZoztADbUwhUm0JERoXCNfEQYhyPAQryiBIUQSBiiTwl1sb3skwDMMwzG+KWLVe
jTEBH6U7JvJ0CJQXoaGPQMWBm5W+Va27k14MwzDMfwCA/wfUstOLO+nBIAAAAABJRU5Jggg==')

这样做意味着您的图像已经存储在代码中,不需要从某处加载。

注意: 确保磁盘上的图片大小是您可以得到的最小大小,因为生成字符串可能需要一些时间并且可能会变成数千行。所以我建议您只使用大小小于 75 KB 的图片。你可以用更大的来做,但这需要很长时间来处理。