Jump to content
Strawberry Orange Banana Lime Leaf Slate Sky Blueberry Grape Watermelon Chocolate Marble
Strawberry Orange Banana Lime Leaf Slate Sky Blueberry Grape Watermelon Chocolate Marble

MSFN is made available via donations, subscriptions and advertising revenue. The use of ad-blocking software hurts the site. Please disable ad-blocking software or set an exception for MSFN. Alternatively, register and become a site sponsor/subscriber and ads will be disabled automatically. 


Joveler

Member
  • Content Count

    25
  • Donations

    $0.00 
  • Joined

  • Last visited

Posts posted by Joveler


  1. On 11/3/2018 at 7:39 PM, msoff20xx said:

    How to create new *.script files for own tools?

    Assume I want to add own resp. new tools to an existing PEBakery installation.

    I guess I have to create a corresponding *.script file similar to WinBuilder.

    But: How do I do this in PEBakery?

    In WinBuilder there are some Utilties included which let me do this.

    I miss such utilties in PEBakery. How does it work here?

    Can I simply copy the *.script files from WinBuilder (=are the *.script files compatible)?

     

    I replied to this question at the other forum, let me copy it to here.

     

    WinBuilder .script files are almost compatible with PEBakery.
    PEBakery does not provide such tool yet (will be in future), but you can bootstrap with WinBuilder and use .script in PEBakery.


  2. PEBakery Beta 5 (v0.9.5.1)
    PEBakery Beta 5 is released!
    Beta 5 fixed many bugs and focused on compatibility.

    You can download binary and source from github.

    PEBakery manual and syntax highlighter were also updated.
    - Manual : English, Spanish
    - Syntax Highlighter : Notepad++, Visual Studio Code

    Please note there are two version of beta 5, v0.9.5 and v0.9.5.1.
    Please use v0.9.5.1 since it fixes some issues of v0.9.5.

    NOTICE - SHOULD READ FIRST!
    Starting with beta 5, all compatibility options are turned off by default.
    You should set appropriate compatibility options to build legacy projects successfully.
    Presets are provided for known projects.

    To build Win10PESE or Win10XPE, rename PEBakery_Win10PESE_Win10XPE.ini to PEBakery.ini.
    To build ChrisPE or MistyPE, rename PEBakery_ChrisPE_MistyPE.ini to PEBakery.ini.
    If a build fails even after applying presets, try deleting project temp directories.

    Changelog
    - [ADD] `List` commands added
    - [ADD] `StrFormat,Left` and `StrFormat,Right` added
    - [ADD] Full deferred logging for interface build
    - [ADD] Command's real position is shown in warning and error logs
    - [ADD] Filtering comments and macros are supported in LogWindow
    - [ADD] Section out parameter support (e.g. `#o1`, `#o2`), ...
    - [ADD] `RunEx`, `LoopEx` and `LoopLetterEx` added to support section out parameter
    - [ADD] Compatibility options for turning off extended section parameter (`#r`, `#a`, `#o1`)
    - [ADD] Compatibility options are turned off by default
    - [CHANGE] `IniReadSection` redesigned
    - [CHANGE] Allow short terms in `Message`
    - [CHANGE] Interface value of `TextLabel` is also saved to variables when running a script
    - [FIX] `UserInput,Dir` no longer crashes
    - [FIX] `#r`, `#a` is matched case-insensitively
    - [FIX] `SaveLog` produces a proper log when deferred logging is set
    - [FIX] Scripts are ordered like the Windows File Explorer
    - [FIX] Proper refresh of MainScript
    - [FIX] Script editor correctly reflects any changes made by a user
    - [FIX] Prevent crash from a race condition in `ShellExecute`
    - [FIX] Fix rare crash when opening script source
    - [FIX] Saving settings no longer crashes when no projects are loaded
    - [FIX] Several regressions affected build of Win10PESE and Win10XPE are fixed

    • Like 1

  3. Beta 2 is released!

    PEBakery binary and source is available at github.

    Changelog
    - [Fixed] WebLabel was not correctly parsed
    - [Fixed] Resolved potential license issue

    • Like 1

  4. 2 minutes ago, misty said:

    I have resorted to using wimlib to fully extract and repack a wim rather than mounting and unmounting, although this is a time consuming process. Injecting files with WimLib however is lightning fast. Wimib rocks! I'm pleased to read that you will be implementing this library and am looking forward to seeing how you implement it.

    I had to use wimgapi because wimlib does not support mount / unmount of wim in Windows, sorry for that.
    In my test, unmounting wim is disrupted by even a file explorer window viewing wim-mounted directory.

     

    5 minutes ago, misty said:

    BTW, I'm assuming that changes to the mounted image are not committed? Or am I doing something wrong?

    Beta 1 only supports mount of wim in readonly mode, readwrite support will be added in beta 2.

     

    6 minutes ago, misty said:

    I'm not sure if this is a bug or not, however the progress bar is only displayed if the Build Project or Run Plugin buttons are pressed. If the commands are executed from a button embedded in the script then the progress bar(s) are not displayed. This is also an issue in WimBuilder (e.g. with WebGet).

    I will investigate this issue, thanks for reporting.
     


  5. Build 20180103 (Beta 1)

    Download : Link

    Changelog
    - [Added] ReadInterface, WriteInterface
    - [Added] WimMount, WimUnmount
    - [Added] ProgressBar for WebGet/WimMount/WimUnmount
    - [Added] Flag GLOBAL introduced to SetMacro
    - [Added] FileCopy/RegWrite produce LogState.Overwrite instead of LogState.Warning
    - [Added] Print summary of warning as well as error in exported log.

    - [Changed] Improved Console Output in ShellExecute,Hide.

    - [Fixed] Handle negative number properly in Command 'If'.
    - [Fixed] Fix hang in System,Cursor.
    - [Fixed] Fix hang in UserInput,Dir.
    - [Fixed] Fix crash in SettingWindow.
    - [Fixed] OnPluginExit/OnBuildExit produces proper #1 argument.
    - [Fixed] ShellExecute,Hide,XCOPY.exe,... now work properly on Windows 7


    1. Improved Console Output in ShellExecute,Hide
    PEBakery will display and log stdout and stderr as unified one output, to simulate real console print.

    2. ReadInterface, WriteInterface
    This command is a native version of Macro Library's ChangeInterface.
    See manual for usage.

    3. WimMount, WimUnmount
    Native commands for handling wim files are being added.
    WimMount and WimUnmount depends on wimgapi, and the other commands are planed to use wimlib.
    See manual for usage.

    4. ProgressBar for Current Command
    PEBakery will display current progress in some commands.
    Currently WebGet, WimMount, WimUnmount is supported.
    ProgressBar.png.1361af2f7b7a18fb7783f815b8484345.png

     

    5. FileCopy/RegWrite produce [Overwrite] log instead of [Warning] log
    PEBakery was producing too much overwrite warning, making hard to find more important warnings.
    So FileCopy and RegWrite will generate [Overwrite] log instead of [Warning].

     

    • Like 2

  6. 23 hours ago, misty said:

    A feature request that would facilitate this is a means of checking from a script whether it's running on PEBakery. Apologies if this is already implemented - I'm late to this party and am playing catchup. My suggestion would be setting an environment variable automatically if PEBakery is running that can be checked in all projects? Let's say for example that a variable %PEBakery% is automatically set as YES, then a project script could run commands that are specific to PEBakery without causing errors in WinBuilder.

    Developers can make use of newly added %PEBakery% fixed variable.

    If,ExistVar,%PEBakery%,Begin
    If,%PEBakery%,Equal,True
    ,Begin

    Use these directive to detect PEBakery's presence, it would be way more better and readable than %EngineVersion%.

    22 hours ago, jaclaz said:

    Mind you, I am still, in my perverted mind, of the opinion that the full all-round compatibility check for PEbakery, once successful is (or will be) the first step to have in the future a "better" scripting language.

    The till now exceptionally good syntax interpreting of PEbakery (and the possibility of directly run succcesfully "pure" Winbuilder .scripts) is what makes me hope that it will be able to achieve this goal.

    I partially agree using this kind of branch in projects is a bit dirty, but currently there are no other way to make use of PEBakery's advaned feature before designing new language.
    Even after new language is released, rewriting all .script file is too tedious, and currently I do not expect writing one-to-one converter can be done in short term (WB syntax is... a quite ambigious, making conversion too hard). So it is natural to think many people will continue to use WB syntax for a seeable future, then why not give developers a way to use advanced features.

    For example, many people are using python 2 right now even python 3 was released about 10 years ago, and at a result python 2 provides part of python 3's features via __future__ module and still being maintained.

    23 hours ago, misty said:

    Native wim support
    All Windows from Vista up have been distributed using the Windows Imaging Format. If PEBakery is being released as a Windows PE builder, then native .wim support via PEBakery commands would be very useful.

    MistyPE can continue to use ShellExecute commands to call wimlib-imagex.exe, however if it's possible to add native commands for .wim support via the wimlib library (libwim-15.dll - see https://wimlib.net/apidoc/index.html) then this would be useful across multiple projects. Whilst 7-zip may provide some .wim support, Eric's work is in my opinion the industry standard.

    Being able to manipulate wim files is a very necessary feature indeed.

    wimgapi and wimlib have thier own advantages, so let's discuss about how to design new commands for wim files.

    9 hours ago, jaclaz said:

    BTW, and as a side-side note, the use of external programs, unless you are a computer science guru pontificating on how other people should write programs[1] is just some of the usual fluff, with no merit, there is nothing bad or good in using external programs or in not using them.

    If an external program exists, does what is supposed to do and does it well, there is no reason to re-implement it internally if not saving a few microseconds or milliseconds.

    Regarding external programs, I think the main problem is WinBuilder projects have to depend on external program to workaround WinBuilder bugs (Ex. Macro Library).

    Making PEBakery to do jobs what was supposed be done with WinBuilder will benefit projects.

    23 hours ago, misty said:

    PEBakery Roadmap
    In your own words, "...PEBakery works as a drop-in replacement of WB082...". In MistyPE this would appear to have been achieved following the correction of some scripting/syntax errors that I had not picked up on that were running in WinBuilder (and probably shouldn't have been). 

    From the information I've so far skimmed, not all WinBuilder commands have been fully implemented. Please can you let us know what you plan to concentrate on to avoid you being bombarded with feature requests. For example are you wanting to focus on tests/bug fixes, or documentation, or full WinBuilder compatibility, etc.

    These are my plan for a near future:

    1) Release of PEBakery 1.0 stable
    2) Official Documentation

    PEBakery is compatible with a subset of WinBuilder commands, because omitted commands are nearly extinct in projects.
    I do not plan to research more, with the exception of unsupported commands are being used in production.

    23 hours ago, misty said:

    Also, PEBakery is being discussed across multiple sites/forums including here at MSFN, and reboot.pro, and theoven.org and mdl. Where would YOU prefer posts to be made?

    I prefer github issue traker to discuss about bug report and feature request (Ex. FileCopy is buggy), and forums for general topics (Ex. What feature to add, which article documentation should include).
    Being in multiple site let me to hear many opinions in different envrionment, so you can use the forum wherever you prefer.

    • Like 1

  7. 1 hour ago, misty said:

    I have been working on updating the MistyPE documentation to include the latest project updates and using PEBakery in addition to WinBuilder. Latest (and hopefully final) draft is available - http://mistyprojects.co.uk/mistype/beta/doc_update_pebakery/readme.html. Comments welcome - particularly if they are positive ;).

    Great articles, Misty!

    Regarding instructions, how about adding "How to export logs"?
    Logs are fundamental for troubleshooting, both for MistyPE and PEBakery.

    1 hour ago, misty said:

    I'm like to include the next release of PEBakery (with the above fix) in the MistyPE download package once it's been tested - any thoughts?

    It would be a honor to me PEBakery to be distributed with MistyPE.

    I introduced many fix in christmas release, for example showing line number in error log, fixing System,RefreshInterface to work properly in script.project, etc.
    If you find an error or new ideas, please let me know.

     

    EDIT
    How do you think about Launcher.exe's target framework?
    Launcher now detects installed .Net Framework's version and warn user to install lastest framework, but launcher itself requires .Net Framework.
    I lowered the target to 4.6.2 temporary (since Launcher.exe used that version before), but I am willing to lower more if it is necessary.
    You can refer to this article to determine adequate version.

    • Like 1

  8. Build 20171225

    Download : Link

    Changelog
    Fixed:
    - Fix FileBox to handle root directory path correctly.
    - Encode command no longer duplicate entry under [EncodedFolders]
    - Launcher.exe will alert user to update .Net Framework if 4.7.1 is not installed.
    - Prevent crash in PluginEditButton.

    Added
    - ShellExecuteSlow, a variant of ShellExecute to run process in BelowNormal Priority.
    - ShellExecute's Standard Output Redirect TextBox will be autoscrolled.
    - ShellExecute's Standard Output Redirect can be hidden in Setting.
    - Implemented EchoFile command.
    - .db files are moved info database directory.
    - Implemented System,SetLocal|EndLocal, and #r.
    - Implemented System,Load.
    - System,LoadAll as a new alias of System,RescanScripts.
    - New setting to let user choose custom code editor.
    - Display line number in error or warning log.
    - Implemented INIReadSection.

    1. Alert user to install .Net Framework 4.7.1
    Launcher.exe now depends on .Net Framework 4.6.2, and alert user to install .Net Framework 4.7.1 if not installed.
    4.6.2 was chosen because it is the minimal version supports HiDPI natively.

    - Speculations
    Launcher.exe's target framework can be lowered more, minimum 4.0 (Windows 8 has this by default).
    .Net Framework 4.0 is not installed in Windows 7 by default, but it cannot be trageted.
    It is because starting from Windows 8, Microsoft ommited .Net Framework 3.5 in default install.

    2. Display Line Number in Error Logs
    PEBakery will display line number along with code in error logs.
    It will help troubleshooting bugs in .script files.

    3. [New] System,SetLocal|EndLocal, #r
    System,SetLocal and System,EndLocal is introduced from cmd syntax.

    System,SetLocal call isolates modification to local variable, and System,EndLocal reverts local variables to the state before call of System,SetLocal.
    Its logic is similar with how Windows isolate envrionment variable in batch file.
    New token #r is introduced to be used as return value.
    #r is not affected by SetLocal and EndLocal, and designed to be used in macro/section call.
    Its value cannot be guaranteed to survive another macro/section call, so copy value into local variable to preserve.
    (Think how EAX hold return value in x86 assembly language).

    [Process]
    Set,%B%,F
    Run,%ScriptFile%,A
    Echo,B = %B%
    Echo,C = %C%
    Echo,R = #r
    
    [A]
    System,SETLOCAL
    Set,%B%,T
    Set,%C%,T
    Set,#r,T
    System,ENDLOCAL
    Result:
    B = F
    C = %C%
    R = T

     

    4. [New] System,Load

    In WinBuilder, one have to call System,RescanScripts to refresh project tree.
    To support refresh of subset of .script files, new syntax introduced.

    System,Load,<FilePath>,[NOREC]

    In FilePath, wildcard can be used. Unless NOREC flag is used, PEBakery will search for file recursively.

    System,RescanScripts now have an alias LoadAll, to match terminoloy with System,Load.

    System,LoadAll

     


  9. Misty, I investigated the issue and there was a bug in System,RefreshInterface when used in main plugin (script.project).

    I fixed this issue, so in next build it will work properly.


  10. Thanks for your feedback Misty!

     

    On 2017. 12. 19. at 10:11 AM, misty said:

    Fantastic project. Can't wait to see how it develops.

    I've posted some feedback on reboot.pro (see http://reboot.pro/topic/21647-new-pe-builder/?p=205219)

    I read your post in reboot, I had not noticed PEBakery crashes if .Net Framework 4.7.1 is not installed.
    Due to .Net Standard 2.0 reference issue (which is still not fixed by Microsoft!), there is a complexity concerning the version, I will fix PEBakery to inform about .Net Framework version to user if its version is lesser than 4.7.1.

     

    14 hours ago, misty said:

    Note to Joveler - all of these errors were difficult to find and involved visually scanning code. Any chance of a reference to the offending code's line number in a future release?

    Yes, I am working on adding line number when reporting syntax error.

     

    38 minutes ago, alacran said:

    Build aborted on OperaUSB1218int.script, then I saw PEBakery was reporting 2 syntax errors (System,Erroroff,1,nowarn only 1 argument is valid), I decided to try to fix this errors:

    Changed: System,Erroroff,1,nowarn to System,Erroroff,1

    alacran, please note that current PEBakery's System,ErrorOff implementation is buggy.
    It does not works if you use macro (known as API in WB082).
    I hope to fix this problem can be fixed in next release.

     

    11 hours ago, misty said:

    A test build of MistyPE is available. The test version is hopefully fully PEBakery compatible - I've done a few initial tests using PEBakery version 0.9.1. alpha (Build 20171216).

    Update the MistyPE project using the Tools > Update Project script whilst MistyPE is loaded (in either PEBakery or WinBuilder).

    A number of scripts have been updated. I can't remember all of the changes/updates as the reboot.pro site is down - a number of the changes are listed on the reboot.pro site following the release of other test builds since the MistyPE April Fools release (build 2017-04-01).

    Great, I will test new release with PEBakery.


  11. Build 20171216

     

    Changelog
    - Fix TXTDelLineOp optimization bug
    - Fix NullReferenceException in System,RefreshInterface
    - Disable System,SaveLog when logger is turned off
    - Recognize "PathSetting=False" in "script.project - [Main]" and disable path setting.
    - Prevent possible UI exceptions.
    - "[Main] - Description=" line is no longer mandatory in plugin.
    - CodeParser.GetNextArgument will not slice argument with "".
    - Support legacy branch condition when compatibility option is set.
    - Support 4-argument 0x7 RegWrite.
    - Do not touch escape characters when setting variables.
    - Ignore the plugin itself in "[Main] - Disable" directive.
      It fixes a bug VMWare.script is uncheckable.
    - TXTReplace will be optimized to TXTReplaceOp if condition is met.
    - IniReadOp will set varible to empty string when key is not found.
    - Do not escape variables imported from interface.
    - Pressing Update button of LogWindow while building no longer crashes program.
    - Log stdout and stderr in ShellExecute,Hide.
    - Implement ShellExecute,Min.
    - Implement GetParam, PackParam.
    - Implement "#a" to track section parameter count.
    - Allow "-" in variable name, for compatibility with Gena_Meal.
    - Fix IOException in CopyOrExpand.
    - Fix UIParser to recognize tooltip in TextFile

    1. Update to .Net Framework 4.7.1
    PEBakery uses several libraries.
    Update of some library caused PEBakery to malfunction (problem with .Net Standard 2.0), so I had to update .Net Framework to 4.7.1.

    2. [New] ShellExecute
    ShellExecute,Min added to execute programs minimized.
    ShellExecute,Hide will show and log stdout and stderr.

    3. [New] parameter count token #a
    To deprecate PackParam, #a token is added.
    When used in command, #a denotes section parameter's number.

    • Like 1

  12. 1 hour ago, Paraglider said:

    This:

    If,NotExistFile,"%SourceFolder%\testdisk_win.exe",Run,%ScriptFile%,Halt

    reports this error

    [1/1] Wrong branch condition [NotExistFile] (If,NotExistFile,"%SourceFolder%\testdisk_win.exe",Run,%ScriptFile%,Halt)

    I have all compatability optons checked.

    Thanks to you, I found a bug in CodeParser disabling legacy branch conditions. Will be fixed in next release.

    1 hour ago, Paraglider said:

    Another compatibility issue with RegWrite:

    RegWrite,HKLM,0x7,"Tmp_Software\Safer Networking Limited\Spybot - Search & Destroy 2","Download Directories"

    reports this error:

    [1/2] Invalid RegWrite Syntax (RegWrite,HKLM,0x7,"Tmp_Software\Safer Networking Limited\Spybot - Search & Destroy 2","Download Directories")

    Fixed PEBakery to create empty REG_MULTI_SZ key to regsitry with 4-argument 0x7 RegWrite.

    1 hour ago, Paraglider said:

    It would be nice if the syntax check log included the line number of the line in the script.

    I will do it when time permits.

    • Like 1

  13. Hello paraglider, thanks for reporting. I looked through your reports.

     

    1 hour ago, Paraglider said:

    Seems like syntax checker does not report the actual error any more when a script  is referenced through a link file:

    1 syntax error detected at [Win10PESE\Addons.PG\Pwdsafe\PasswordSafe.link]

    [1/1] Syntax error ()

    Section Coverage : 100% (6/6)

    I cannot reproduce it, can you provide the sample?

     

    1 hour ago, Paraglider said:

    In strings winbuilder supports "" as a double quote escape character as well as #$q

    Winbuilder does not require a description= line in main

    Fixed, they will work in next release.

     

    1 hour ago, Paraglider said:

    Winbuilder supports a not prefix e.g. NotExistDir as well as Not,ExistDir. This seems to be supported for all Exist variants.

    PEBakery supports to use branch condtion NotExist* when Allow Deprecated Legacy Branch Condition compatibility option is on. (It is turned on by default.)
    PEBakery limits the use of Not in legacy branch condtions, however. (No If,Not,NotExistDir,... form)

    // Part of PEBakery's CodeParser code
    
    if (AllowLegacyBranchCondition)
    { // Deprecated BranchConditions
    	if (condStr.Equals("NotExistFile", StringComparison.OrdinalIgnoreCase))
    	{
    		if (notFlag)
    			throw new InvalidCommandException("Branch condition [Not] cannot be duplicated", rawCode);
    		cond = new BranchCondition(BranchConditionType.ExistFile, true, args[cIdx + 1]);
    		embIdx = cIdx + 2;
    	}
    	else if (condStr.Equals("NotExistDir", StringComparison.OrdinalIgnoreCase))
    	{
    		if (notFlag)
    			throw new InvalidCommandException("Branch condition [Not] cannot be duplicated", rawCode);
    		cond = new BranchCondition(BranchConditionType.ExistDir, true, args[cIdx + 1]);
    		embIdx = cIdx + 2;
    	}
    ...

    Did this behavior not work properly?


  14. TestBuild 20171213 released.

    Download

    Changelog
    - Halt command kills subprocess immediately.
    - If WorkDir is specified in ShellExecute, WorkDir is added to PATH temporary.
    - Set command supports add/remove of macro command.
    - AddVariables adds local macro.
    - Added SetMacro command to manage macro only.
    - In HTML log export, write [ and ] near LogState.
    - System,RefreshInterface will block until refresh is done.
    - Change of interface section will be updated by System,RefreshInterface.
    - Added compatibility option for FileRename/DirMove to move file and directory.
    - Added PathMove, a command works like FileRename + DirMove.
    - Variable and Macro's Name is restricted to regex "[a-zA-Z0-9_\(\)\.]+".
    - Fix TXTReplace to treat case insensitive string.


  15. 6 hours ago, Paraglider said:

    I still cannot get existregmulti to work. I get a script error from this:

    2 syntax error detected at [Win10PESE\Addons.PG\HDM15Pro\hdm15pro.link]

    [1/2] Wrong CodeType [Tmp_System\ControlSet001\Control\Class\{71A27CDD-812A-11D0-BEC7-08002BE2092F}], Only alphabet, number and underscore can be used as CodeType (if,not,ExistVar,HKLM,Tmp_System\ControlSet001\Control\Class\{71A27CDD-812A-11D0-BEC7-08002BE2092F},UpperFilters,begin)

    Does If,ExistVar command have only one argument?
    Please change "If,Not,ExistVar" to "If,Not,ExistRegKey" and see if syntax error still occurs.


  16. On 2017. 12. 6. at 12:55 PM, sbaeder said:

    I hope all of you are filing bug reports on github for him.  While he might not have too much time, others can fork and then make pull requests to fix some of these.  For one, the continuation of a line and concatenating them together before passing it down to the parser SHOULD be relatively straight forward.  For someone like me (although pretty busy right now), who love finding and fixing bugs more than we like writing new code, this could be a fun exercise.

    Using github issue tracker keeps me organized about bugs.
    So if you figured out the cause or details of bug, please create a ticket in issue tracker.
    (You will be able to see even which source had caused the bugs!)


  17. 1. Multiline Support

    If you use '\' at end of the line, next line will be used as additional argument.
    Note) To treat '\' as a string (not multiline token), use doublequote ("\").

    On 2017. 12. 4. at 1:48 PM, Paraglider said:

    This line also passes the syntax check but fails at build time:

    RegWrite,HKLM,0x3,Tmp_Software\Classes\CLSID\{LNINEVST-4YBM-7IPO-BXF1-KZLBS2X3NP70},0,\
    44,44,28,F6,EF,7C,37,94,04,B5,BF,68,D8,94,BA,93,1C,55,26,62,4C,BC,70,\
    FA,20,6A,86,68,6B,6D,05,57,1A,D3,3F,59,8E,8C,60,92,52,E1,28,62,3F,6C,18,71

    Thanks to Paraglider, alacran and Atari800xl for reporting and fixing.

     

    With multiline support added, WOW64 is working properly in MistyPE.
    When testing MistyPE, do not forget to remove line 125 in create.iso.script like Atari800XL said.

    On 2017. 12. 3. at 3:23 AM, Atari800XL said:

    For Misty's create.iso.script, I believe line 125 should be deleted. In that case the "else" starts working, and only *one* of the two iso creation tools is used, instead of both (the second will overwrite the first anyway). Please correct me if I'm wrong.

     

    2. SectionName/HideProgress is properly recognized in ComboBox

    On 2017. 12. 9. at 3:00 AM, Numb said:

    Few things seen

    In Win10PESE Main Configuration, Build model,

    There are 4 choices: Normal,In RAM (boot.wim),_BuildModel_Choice_,True

    The last 2 (section, progress) should not be displayed

    Same for Boot Manager

    GitHub Issue Trakcer by Homes32 : https://github.com/ied206/PEBakery/issues/2
    Thanks to Homes32 and Numb.

     

    3. Plugin Refresh Button

    On 2017. 12. 9. at 3:00 AM, Numb said:

    I have a problem with the cache, I open PEBackery

    If I modify a script, the modifications are not treated.
    Caching should probably be done after clicking the 2 buttons: Build or Run Script

    PEBakery loads whole .script files into memory at load time, for performance.
    (File IO is the most biggest bottleneck of PEBakery.)

    To make PEBakery recognize modification of plugin, use refresh button.
    1) Big Refresh Button at up refreshes whole project.
    2) Small Refresh Button at right refreshes one plugin.

     

    4. Suggestion about logging

    On 2017. 12. 9. at 3:00 AM, Numb said:

    It is a very good choice to have the log written in a SQLite database

    Personally, I would  have removed the choice for logging macros (maybe comments also) in setting and add some checkbox choices in the log viewer.  Might be debatable.

    Checkbox choice to ignore macro / comment in log viewer should be nice!
    Volume of logging impacts performance due to frequent file IO, so in my opinion "Log Macro" and "Log Comment" options should be kept.
    Thanks for suggestion, Numb.


  18. TestBuild 20171210

    Download
    https://drive.google.com/drive/folders/1TRiF0IoAuPg8DvH5nXnk7ngxEzrIVDNs

    1. BugFix
    - Stop button now terminates subprocess immediately.
    - Support multiline code (line end with \)
    - Fix DirCopy overwrite bug when used with wildcard compatibility flag.
    - When multiline code has error, CodeParser now reports correct command.
    - '\' will be added to FileBox's direcotry path.
    - Left plugin tree will be refreshed after refresh of plugin.
    - SectionName/HideProgress is properly recognized in ComboBox.

    2. Feature Add
    - If,ExistRegMulti implemented.
    - Escape sequence of # (##) implemented.

    Thanks to all who reported unknown bugs!

    EDIT
    Please redownload build 20171210, a critical bug resides in ShellExecute.

    • Like 1

  19. On 2017. 12. 4. at 12:50 AM, jaclaz said:

    The (old, unsupported and now also deprecated) Winbuilder 082 had IMHO some serious issues with an overcomplex, often futile, primitive and often not human-writable (let alone human-readable) syntax.

    If this project (in a future, when the developer will have time, etc.) will lead to a new (clear, simple, human-writable and human-readable) syntax while being compatible with existing .sctipts or projects it represents a much needed innovation.

    If this project is only meant as having a faster interpreter for the same botched syntax I cannot see much of its usefulness.

    The scripting language is either (or will be) 100% compatible or it is not.

    If it is not (and adds much needed better syntax and new functions) soon .scripts/projects will be written/modified for this new builder (and will thus lose compatibility with the old one).

    If you prefer, in my perverted mind, I would have liked a new (good, fast, and what not) interpreter with its own (better) scripting language AND with the possibility to interpret/convert (to the new syntax) the old, largely botched syntax of Winbuilder.

    I plan to introduce new language can write a converter in a long term, but I cannot expect exact date, there are too many things to consider. (Like deciding between using existing language runtime or make a new grammar)

    So my short term plan is to make PEBakery compatible with existing PE projects, and then introduce new runtime in long term, provide interoperability just like WebAssembly-Javascript model.


  20. On 2017. 12. 4. at 4:52 AM, alacran said:

    Reporting my tests:

    Source: Win10_1709_Spanish(Mexico)_x64.iso (Fall Creator Update).        Antivirus and UAC disabled.    .NET Framework 4.7.1 (v4.7.0 blocks AutoCAD).

    Win10x64PESE Builded fine no problems.

    MistyPE_10x64 did not finish the build, aborted, attached you can find a 7zip with changes made to scripts, log and picture, also a picture of an annoying messaje about UAC (UAC is permanently disabled on my PC).

    Tested using PEBakery_20171202 and also PEBakery_20171123 (same result for both versions).

    MistyPE_10x64 through MistyPE project (WB 0.82) was sucessful (with and without changes to scripts). This was done just to verify if source was the trouble maker.

     

    Best Regards

    alacran

    Failure.7z

    PEBakery is hard-corded to report always [True] to [System,HasUAC] command.

    I did this because:

    1. Starting from Windows 8, Windows does not allow turning off UAC in normal method.
      (Disabling UAC forcefully will also disable Metro)
    2. Support of Windows 7 will end near to 2019 by Micosoft.
    3. Turning off UAC is very dangerous.

    However, if project developers want this command to be correct, I will implement it. How do you think?


  21. Thanks for intensive testing!

     

    On 2017. 12. 4. at 1:21 PM, Paraglider said:

    ExistRegMulti is also not supported:

    If,ExistRegMulti,<HKEY>,<Section>,<Key>,<SubString>,<Command>

    The command checks for the existence of a substring in a multiple string REG_MULTI_SZ registry value. Such a registry value contains a sequence of null-terminated strings, terminated by an empty string (\0).

    Usage:

    If,EXISTREGMULTI,HKLM,SYSTEM\ControlSet001\Control\ServiceGroupOrder,List,"FSFilter Infrastructure",Echo,YES

    Or how I use it:

    If,EXISTREGMULTI,HKLM,Tmp_System\ControlSet001\Control\Class\{71A27CDD-812A-11D0-BEC7-08002BE2092F},UpperFilters,RegMulti,HKLM,Tmp_System\ControlSet001\Control\Class\{71A27CDD-812A-11D0-BEC7-08002BE2092F},UpperFilters,APPEND,hotcore3
    Else,RegWrite,HKLM,0x7,Tmp_System\ControlSet001\Control\Class\{71A27CDD-812A-11D0-BEC7-08002BE2092F},UpperFilters,hotcore3

     

    I implemented "If,ExistRegMulti", so it will be supported in next release.

    Make sure to test PEBakery's behavior is correct (I was not able to reproduce use case in WB082, maybe problem with WOW64 reg redirecting?).

     

    On 2017. 12. 4. at 1:48 PM, Paraglider said:

    This line also passes the syntax check but fails at build time:

    RegWrite,HKLM,0x3,Tmp_Software\Classes\CLSID\{LNINEVST-4YBM-7IPO-BXF1-KZLBS2X3NP70},0,\
    44,44,28,F6,EF,7C,37,94,04,B5,BF,68,D8,94,BA,93,1C,55,26,62,4C,BC,70,\
    FA,20,6A,86,68,6B,6D,05,57,1A,D3,3F,59,8E,8C,60,92,52,E1,28,62,3F,6C,18,71

     

    I didn't know WinBuilder also have '\' next line token.

    It seems to me that WB support this only in RegWrite (or at least related to registry), am I right?


  22. 8 minutes ago, alacran said:

    Just downladed your 2017.12.02 compilation and Win10PE SE new version, I have Misty project on my HD, I am going to make new 10x64PE builds and report back.

    To build MistyPE, 3 syntax error should be fixed. I contacted Misty about this 3 week ago, hope it will be fixed soon.

    [MistyPE\Core\verify.script] - [SOURCE.CHECK] Section
    IniWriteTextLine,"%Cache%\temp\boot.wim.info.ini",Main,Architecture,%ARCH%
    ->
    IniWriteTextLine,"%Cache%\temp\boot.wim.info.ini",Main,Architecture=%ARCH%
    
    [MistyPE\Core\Core.script] - [TWEAKS] section
    ECHO,"Remove 'Pin to Start' and 'Pin to Taskbar' from the context menu options"System,
    ->
    ECHO,"Remove 'Pin to Start' and 'Pin to Taskbar' from the context menu options"
    
    [MistyPE\Boot.Media\create.ISO.script] - [RAM] Section
    Else,ShellExecute,Open,"%TOOLS%\oscdimg.exe","-l#$qWinPE#$q -n -m -b#$q%OutputDir%\boot\etfsboot.com#$q #$q%OutputDir%#$q #$q%ISODir%\WinPE.iso#$q"
    ->
    ShellExecute,Open,"%TOOLS%\oscdimg.exe","-l#$qWinPE#$q -n -m -b#$q%OutputDir%\boot\etfsboot.com#$q #$q%OutputDir%#$q #$q%ISODir%\WinPE.iso#$q"

     

    • Like 1

  23. Just now, jaclaz said:

    Still it seems to me - together with .Net that is needed for the runtime also - a "queer" requirement for an Open Source project (though of course perfectly in-line with the Windows 7 requirement :w00t: )

    I was short of investable time to develop PEBakery, since it started as in-house project. If I did not used C#, Completion of PEBakery would have consumed years.

    Moreover, I fed up with WinBuilder 082's slow UI and lack of HiDPI support, which Microsoft dealt very well in cutting-edge version of .Net Framework (which are only supported in Win 7+).

    Well, having more choice in builder world is much better, I think. :)


  24. What is PEBakery?
    PEBakery is a builder specialized in customizing Windows PE.
    It is intended to be used with projects such as Win10PESE, Win10XPE, MistyPE and ChrisPE.

    Why PEBakery was written?
    PEBakery is compatible with WinBuilder 082.
    Projects like Win10PESE are dependent on WinBuilder 082, but WB082's development went discontinued.
    PEBakery works as a drop-in replacement of WB082, while providing much improved envrionment.

    Download
    Binary and source of PEBakery can be downloaded from github.
    Nightly binary can be downloaded from here, thanks to AppVeyor service.

    Source
    PEBakery is a open source software, licensed under GPLv3.
    Source of PEBakery can be downloaded in GitHub.
    Bug report or Pull request is always welcome.

    How to Test
    .Net Framework 4.7.1 and Windows 7 or upper is required to run PEBakery.
    1. Download PE project zip distribution and extract it. (e.g. ChrisPE, Win10XPE)
    2. Put 'Binary' and 'PEBakeryLauncher.exe' in project root (the directory where Project directory resides in).
    3. Read NOTICE_SHOULD_READ_FIRST.txt and follow instructions.
    4. Run 'PEBakeryLauncher.exe' with admin privilege.
    5. Configure project and run. Compare with WinBuilder 082 (which is bundled by default).

    Documentation
    Specification of PEBakery script language is being done in GitHub.

    Disclaimer
    - All implementation is only backed by documentation and black box testing, without violating WinBuilder 082's EULA.
    - I do not provide any warranty, use at your own risk. Backup is highly recommended.
    - Windows Preinstalled Environment is a registered trademark of Microsoft.

    • Like 2
×
×
  • Create New...