使用 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 的图片。你可以用更大的来做,但这需要很长时间来处理。
我使用 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 的图片。你可以用更大的来做,但这需要很长时间来处理。