diff options
Diffstat (limited to 'cli/standalone/binary.rs')
-rw-r--r-- | cli/standalone/binary.rs | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/cli/standalone/binary.rs b/cli/standalone/binary.rs index 78978cefc..9d6d5262e 100644 --- a/cli/standalone/binary.rs +++ b/cli/standalone/binary.rs @@ -187,10 +187,19 @@ fn write_binary_bytes( let target = compile_flags.resolve_target(); if target.contains("linux") { - libsui::Elf::new(&original_bin).append(&writer, &mut file_writer)?; + libsui::Elf::new(&original_bin).append( + "d3n0l4nd", + &writer, + &mut file_writer, + )?; } else if target.contains("windows") { - libsui::PortableExecutable::from(&original_bin)? - .write_resource("d3n0l4nd", writer)? + let mut pe = libsui::PortableExecutable::from(&original_bin)?; + if let Some(icon) = compile_flags.icon.as_ref() { + let icon = std::fs::read(icon)?; + pe = pe.set_icon(&icon)?; + } + + pe.write_resource("d3n0l4nd", writer)? .build(&mut file_writer)?; } else if target.contains("darwin") { libsui::Macho::from(original_bin)? @@ -370,6 +379,15 @@ impl<'a> DenoCompileBinaryWriter<'a> { } set_windows_binary_to_gui(&mut original_binary)?; } + if compile_flags.icon.is_some() { + let target = compile_flags.resolve_target(); + if !target.contains("windows") { + bail!( + "The `--icon` flag is only available when targeting Windows (current: {})", + target, + ) + } + } self.write_standalone_binary( writer, original_binary, |