Monthly Archives: March 2013
Update of PS2EXE: Version 0.4 now support Single and Multi Thread Apartment and “NoConsole” mode
On Codeplex user redpark asked for “Single Thread Apartment” mode (http://ps2exe.codeplex.com/discussions/435946)…
Here it is…
Please see v0.4 on CodePlex:
There are 3 new parameters:
-sta | Single Thread Apartment mode
(see http://msdn2.microsoft.com/en-us/library/system.stathreadattribute(VS.71).aspx) |
-mta | Multithread Apartment mode
(see http://msdn2.microsoft.com/en-us/library/system.mtathreadattribute(VS.71).aspx) |
-noconsole | resulting EXE is an Windows application not a console application. |
The –noconsole parameter lets you create a Windows application EXE file with no console window.
Therefore I would need to implement several extensions for the PowerShell host included in the resulting EXE but currently I have not enough time to do this. But for now I’ve implemented the credential prompt so cmdlet Get-Credential will work as expected.
Update of PS2EXE: Version 0.3.0.0 Now Supports PowerShell 3.0 and 2.0!
Some time ago I’ve written a little tool called “PS2EXE” that creates .EXE files from PowerShell script files. As mentioned in earlier posts this is no conversation of PS to EXE! The PS2EXE script creates an EXE by using the C# compiler and stores the script as Base64 encoded string inside a tiny PowerShell host application.
Today I’ve updated the PS2EXE script to version 0.3.0.0. Now it supports PowerShell 3.0 and PowerShell 2.0.
https://github.com/ikarstein/ps2exe
(Formerly: http://ps2exe.codeplex.com)
Here are the past blog articles:
- v0.1.0 – https://blog.kenaro.com/2011/06/21/ps2exe-tool-for-converting-powershell-scripts-to-standalone-exe-files/
- v0.2.0 – https://blog.kenaro.com/2012/04/30/ps2exe-v0-2-0-0-improvements-platform-switch-x64-or-x86-or-anycpu-new-exe-config-file-for-supported-runtime/
There are two new parameters for PS2EXE:
-runtime30
-lcid <int>
Using -runtime30 or by starting PS2EXE in a PowerShell 3.0 environment PS2EXE creates a EXE file by using the C# compiler version 4.0.
Using -runtime20 or by starting PS2EXE in a PowerShell 2.0 environment PS2EXE create a EXE file by using the C# compiler 2.0.
-lcid sets the “culture” of the current thread to the specified value. (See http://msdn.microsoft.com/en-us/library/system.threading.thread.currentuiculture.aspx and http://msdn.microsoft.com/en-us/library/system.threading.thread.currentculture.aspx and http://msdn.microsoft.com/en-US/library/w4deeh00(v=vs.80).aspx and http://msdn.microsoft.com/en-us/goglobal/bb964664.aspx.)
The new version should fix the “Assembly not referenced” error discussed here:
http://ps2exe.codeplex.com/discussions/404546
On Windows 8 or Windows Server 2012 there is PowerShell 3.0 installed by default. On Windows 7 or Windows Server 2008 R2 you can install it using Windows Management Framework 3.0.
With PowerShell 3.0 installed you will always start the 3.0 enviroment by using:
the Start Menu (or Screen) | the “Run” dialog: | the command line: |
Execution PS2EXE reports PowerShell version 3.0:
You can start a PowerShell 2.0 enviroment by using this parameter: -version 2.0 for POWERSHELL.EXE
Execution PS2EXE reports PowerShell version 2.0:
Now lets use to create an EXE file using the PS2EXE script…
1. Sample: PowerShell 3.0 without parameters –runtime20 and –runtime30
2. Sample: PowerShell 3.0 with parameter –runtime20
(Behind the scene this starts PowerShell.exe using parameter –version 2.0.)
3. Sample: PowerShell 2.0 without parameters –runtime20 and –runtime30
4. Sample: PowerShell 2.0 with parameter –runtime20
This is not supported!