Jump to content

Joveler

Member
  • Posts

    25
  • Joined

  • Last visited

  • Donations

    0.00 USD 
  • Country

    Korea, Republic Of

Everything posted by Joveler

  1. Joveler

    PEBakery

    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. Joveler

    PEBakery

    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
  3. Joveler

    PEBakery

    Beta 2 is released! PEBakery binary and source is available at github. Changelog - [Fixed] WebLabel was not correctly parsed - [Fixed] Resolved potential license issue
  4. Joveler

    PEBakery

    Deleted, my browser send a post request twice.
  5. Joveler

    PEBakery

    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. Beta 1 only supports mount of wim in readonly mode, readwrite support will be added in beta 2. I will investigate this issue, thanks for reporting.
  6. Joveler

    PEBakery

    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. 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].
  7. Joveler

    PEBakery

    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%. 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. 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. 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. 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. 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.
  8. Joveler

    PEBakery

    Great articles, Misty! Regarding instructions, how about adding "How to export logs"? Logs are fundamental for troubleshooting, both for MistyPE and PEBakery. 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.
  9. Joveler

    PEBakery

    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
  10. Joveler

    PEBakery

    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.
  11. Joveler

    PEBakery

    Thanks for your feedback Misty! 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. Yes, I am working on adding line number when reporting syntax error. 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. Great, I will test new release with PEBakery.
  12. Joveler

    PEBakery

    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.
  13. Joveler

    PEBakery

    Thanks to you, I found a bug in CodeParser disabling legacy branch conditions. Will be fixed in next release. Fixed PEBakery to create empty REG_MULTI_SZ key to regsitry with 4-argument 0x7 RegWrite. I will do it when time permits.
  14. Joveler

    PEBakery

    Hello paraglider, thanks for reporting. I looked through your reports. I cannot reproduce it, can you provide the sample? Fixed, they will work in next release. 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?
  15. Joveler

    PEBakery

    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.
  16. Joveler

    PEBakery

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

    PEBakery

    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!)
  18. Joveler

    PEBakery

    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 ("\"). 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. 2. SectionName/HideProgress is properly recognized in ComboBox GitHub Issue Trakcer by Homes32 : https://github.com/ied206/PEBakery/issues/2 Thanks to Homes32 and Numb. 3. Plugin Refresh Button 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 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.
  19. Joveler

    PEBakery

    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.
  20. Joveler

    PEBakery

    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.
  21. Joveler

    PEBakery

    PEBakery is hard-corded to report always [True] to [System,HasUAC] command. I did this because: Starting from Windows 8, Windows does not allow turning off UAC in normal method. (Disabling UAC forcefully will also disable Metro) Support of Windows 7 will end near to 2019 by Micosoft. Turning off UAC is very dangerous. However, if project developers want this command to be correct, I will implement it. How do you think?
  22. Joveler

    PEBakery

    Thanks for intensive testing! 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?). 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?
  23. Joveler

    PEBakery

    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"
  24. Joveler

    PEBakery

    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.
  25. Joveler

    PEBakery

    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.
×
×
  • Create New...