Premise is that there are many backup utilities that will backup/restore either dirs or the whole ROM, but not just for a specific apps settings. There are many ways that dev could use to store their settings for a given app, but getting them all to do the same way is "difficult". However, if program A had it's settings in a settings.ini (or whatever name) and that specific file could be backed up and restored later after a hard reset or new ROM installed, it would make the flashing a ROM even easier since UC came out.
My idea is for an app that works sort of like AppToDate, in that it will parse a collection of ini files in a directory to determine what a given progam uses for it's configuation (files or reg keys) and will backup/restore them.
Basically all that someone needs to do is:
- Extract the UMCe2.zip to a folder on their Storage Card
- Register Mortscript (just click on it once, from this point on you can just click on a script and it will run.)
- Place the INI files that define the files or keys of the app that you'd like to backup/restore into the \Storage Card\UCMe2\ini folder. I have posted a small collection of some INI files as examples
- If you'd like startmenu shortcuts, I attached a few dummy.exe files that you can put into the UCMe2 folder so you can make shortcuts.
- Run the UCMe2_Backup and it will read every INI file in the ini folder and store the backup files in \Storage Card\UCMe2\Backup
- Run the UCMe2_Restore and it will read every INI file in the ini folder are restore the backups
I want the app do do a few things:
* to run start to finish unattended... start the program and it just runs, with no questions asked. (for scheduling purposes)
* the config ini for apps need to be simple to read/edit, so user community can post/share them, or be created by the original app devs
Feel free to create your own INI files and post them here for others to share
I have updated the scripts to include the SDConfigCE tool, to create a new SDConfig.txt based on the files that you have placed in the CABS subfolder.
Additionally, I have included XCopyCE support in the created SDConfig.txt file to copy files placed in the Files subfolder to the device.
(added test sdconfigce.zip to attempt to detect devices with internal storage vs. storage card and SHOULD manage other ROM languages)
Todo list:
add ProcKill and SuggestReboot options to ini file
-optional kill process before backup/restore
-optional suggest reboot after restore if suggested in ini file
add optional Disable parameter to ini file to "turn it off"
add section to backup/restore individual reg values (instead of entire subKey)
-[RegValues]
-Value1= root, subkey, value, data, type
Build in Restore script to run during UC to further automate UC
Provide bulk REG file import, over and above the scripted reg key values provided by INI files
Click to expand...
Click to collapse
Bug List:
Validation key in ini files do not like LONG reg root names, workaround is to change them to HKLM or HKCU as necessary
- change: Validate = HKEY_LOCAL_MACHINE,Software\Apps\Google Maps
- to: Validate = HKLM,Software\Apps\Google Maps
Click to expand...
Click to collapse
Updates in version 0.1.4:
updated bug in restoring of backup files. Now it will create missing directories and actually copy in the files :-0
Click to expand...
Click to collapse
Updates in version 0.1.3:
updated bug in validation logic on the restoring of backup.
Modified Backup script to automatically generate new SDConfig to make that "last minute" backup into a 1 step process.
Click to expand...
Click to collapse
Updates in version 0.1.2:
Created tool to create SDConfig.txt file automatically based on the presence of CAB or XML files in the CABs subfolder
Provided XCopyCE support to do file copy of the contents of the Files subfolder to the device during UC
Updated Menu applet to call the SDConfigCE tool
Click to expand...
Click to collapse
Updates in version 0.1.1:
Replaced dependancy of SKTools with DotFred Taskmanager for reg functions (it is even smaller and faster and freeware)
Changed display of progress in GUI
Added Version numbers in script and GUI
Click to expand...
Click to collapse
Initial release 0.1.0
How to make your own INI file:
The ini file is a very simple thing to make as it is basically just a text file with a few bracketed headers (sections) and values in them.
The easiest way to do so, is to place a copy of the template on your PC desktop and open it with notepad.
Then use the freeware tool CERegEditor ( http://ceregeditor.mdsoft.pl/ ) to read your device's registry... MOST apps save their customization in:
HKEY_CURRENT_USER\Software\ (App Publisher) \ (App Name)
There are plenty of sample files to use as references. If you need help, I'm certain that someone in this community can help.
PocketBreeze.ini
[UCMe2]
appname=PocketBreeze
subdir=PocketBreeze
Validate = HKLM,Software\Apps\SBSH.net PocketBreeze
[regkey]
key1=HKEY_CURRENT_USER\Software\SBSH\PocketBreeze
Click to expand...
Click to collapse
OwnerSettings.ini
[UCMe2]
appname=Owner
subdir=Owner
[regkey]
key1=HKEY_CURRENT_USER\ControlPanel\Owner
Key2=HKEY_LOCAL_MACHINE\Ident
key3=HKEY_CURRENT_USER\Software\Microsoft\Bluetooth\Settings
Click to expand...
Click to collapse
GoogleMaps.ini
[UCMe2]
appname=GoogleMaps
subdir=GoogleMaps
Validate=HKLM,Software\Apps\Google Maps
[Files]
cache-GLM.dat=\Application Data\GoogleMaps\cache-GLM.dat
index-GLM.dat=\Application Data\GoogleMaps\index-GLM.dat
prefs.dat=\Application Data\GoogleMaps\prefs.dat
prefsext.dat=\Application Data\GoogleMaps\prefsext.dat
prefsext2.dat=\Application Data\GoogleMaps\prefsext2.dat
prefsfriends.dat=\Application Data\GoogleMaps\prefsfriends.dat
prefsfriendsmini.dat=\Application Data\GoogleMaps\prefsfriendsmini.dat
strings-all.zlb=\Application Data\GoogleMaps\strings-all.zlb
Click to expand...
Click to collapse
Format of ini file is:
[UCMe2]
AppName = Friendly name for future use
subdir = subfolder to store the files
Validate = condition to look for before restoring (either a filepath and name or reg key... Reg key must be formatted like ROOT,KEY)
[regkey]
filename1 = regkey to backup
filename2= other regkey
[Files]
destinationfilename1.ext = source filename with full path
destinationfilename2.ext = source filename with full path
Just create an ini file for each app to backup
**** Reserved for suggestions or requests
I'm thinking of adding a switch to the ini files as a block to prevent backing up certain apps...
It would be used to "install" an app that only needs file copy like an exe or shortcuts or similar... no sense of copying back those files for backup, as they would never change.
an entry in the ini like:
[UCMe2]
RestoreOnly = 1
Would it make a difference to anyone if I CREATED new app shortcuts, or just copied the old ones for backup/restore?
Another optional ini setting should be:
[UCMe2]
Validate = <fullpath\file> or Reg key
Which would only restore the backups of the appropriate reg key or path\file exists. No sense restoring data for an app if it isn't yet installed.
hmmm...
I've added a bit of a GUI to the backup process, just to see something while it runs. I'll get around to doing the same to the restore mode...
UCMe2.mscr
Code:
ScriptDir = SystemPath("ScriptPath")
IniFiles = ScriptDir \ '*.ini'
StatusType(ST_LIST)
StatusInfo("UCMe2 Backup", "Backup process running")
ForEach F in files (IniFiles)
AppName = IniRead(F,"UCMe2","appname")
SD = IniRead(F,"UCMe2","subdir")
RestoreOnly = IniRead(F,"UCMe2","RestoreOnly")
StatusShow()
StatusMessage( AppName, ST_LIST, TRUE )
If (RestoreOnly = False)
MkDir(ScriptDir \ SD)
ForEach K, V in iniKeys (F,"regkey")
RunWait(Scriptdir\"SKTools.exe","#REXP(" & V & ") #FNAME(" & ScriptDir \ SD \ K & ".reg)")
StatusMessageAppend( "." )
EndForEach
ForEach K, SettingsFile in iniKeys (F,"Files")
copy (SettingsFile, ScriptDir \ SD \ K ,TRUE)
StatusMessageAppend( "." )
EndForEach
StatusMessageAppend( "OK" )
ElseIF
StatusMessageAppend( " - Skipped by RestoreOnly value" )
EndIf
EndForEach
StatusMessage( "Backup Complete" )
WriteStatusHistory( Scriptdir \ "BackupLog.txt" )
StatusMessage( "Window closing in 5 seconds" )
Sleep( 5000 )
StatusType(ST_HIDDEN)
Updated the scripts a bit and made a GUI menu... but that has limited value, beyond my playing with MortScript
here is a template of the current ini entires, but most of them aren't necessary... see the examples I already have in the zip.
Code:
[UCMe2]
appname = (descriptive Name)
subdir = (subfolder name)
RestoreOnly = 0/1 (1 = do not back up this app)
Validate = <fullpath\file> or Regkey HKLM,Software\appname\key (NOTE the comma in the reg key)
[regkey]
key1="HKEY_CURRENT_USER\Software\AppName\etc"
key2="HKEY_LOCAL_MACHINE\Software\AppName\etc"
[Files]
backupFilename.ext=Fullpath to sourcefilename.ext
anotherbackupFilename.ext=Fullpath to sourcefilename.ext
andanotherFilename.ext=Fullpath to sourcefilename.ext
rilphone2.ini
[UCMe2]
appname=Rilphone2
subdir=Rilphone2
[regkey]
key1=HKEY_LOCAL_MACHINE\Drivers\BuiltIn\RIL
[Files]
rilphone2.dll=\WINDOWS\rilphone2.dll
Click to expand...
Click to collapse
PocketBreeze.ini
[UCMe2]
appname=PocketBreeze
subdir=PocketBreeze
RestoreOnlyIfRegExists = 1
Validate = HKLM\Software\Apps\SBSH.net PocketBreeze
[regkey]
key1=HKEY_CURRENT_USER\Software\SBSH\PocketBreeze
Click to expand...
Click to collapse
I see where I should make a subdir to hold the INI files, and another to hold the backup folders... the prog dir is getting cluttered
I can see another mini app for this process... one to enable or disable individual ini files... (probably just move them to a different folder instead of deleting the ini file)
I don't think Mortscript has that kind of support for forms, so it might remain a manual process for a while. Lemme see how clever I can be
attached pics to post 1
there is a minor issue in the restore script... I have to re-think my logic for the validation determination, but I'll get that
I fixed the restore mode problem. as well are eliminated 2 unnecessary fields from the INI files.. the RestoreIfRegExists (or file)... now it just examines the content of the validate field... if it has a comma in it, it assumes it is a reg entry.
I still need to put in error handling, but I have to figure out how that all works in MortScript.
I also am considering having it backup/restore specific reg values, in addition to the whole key, but much of will be based on MortScript... it is lacking in reg features and I'm currently dependant on SKTools to do the reg functions... I'd much prefer to do it internally, but MS doesn't have a way of determining the regtype that it is reading, so I can't store that so I can restore it to the correct type.
fixed a simple issue of the reg export grabbing the level higher and exporting from there.
let me be the first one to reply the app looks nice, isent it nice that MortScript can be used in many ways?
This is great, I will be watching on this
that's funny how this is like a 2-page OP
but this is a fantastic idea and crazy useful if it comes to fruition. between this and UC or sashimi, flashing roms would have so little downtime..wow....
how do I enter the path of an app in which your images are not in the drawable folder?
I use SPB launcher 3d, wanted to do in an unforgiving theme that I use (theme chooser), and add images to SPB, but the way of your images is different from other apps ..
eg "\ assets \ skins \ skins \ wgt_clock \ dpi192"
thank you
I don't want to use APK Multi-Tools or APK_Manager or whatever. I want to know exactly what those tools are doing in order to recompile the system apk while keeping the original signature.
What I initially did...
Code:
apktool d "%~dpnx1.apk" "%~dpnx1"
...modify files here...
apktool b "%~dpnx1" "%~dpnx1.apk"
But obviously that's unsigned. I need to sign it, but I want to use the original signature, which I'm guessing is the META-INF stuff, right?
So I attempted this...
Code:
apktool d "%~dpnx1.apk" "%~dpnx1"
7za x -o"%~dpnx1-signature" "%~dpnx1.apk" META-INF -r
...modify files here...
apktool b "%~dpnx1" "%~dpnx1.apk"
7za a -tzip "%~dpnx1.apk" "%~dpnx1-signature/*" -mx9
You'll notice I now use 7-Zip to pull out META-INF from the original APK and then insert it back into the recompiled one afterwards.
The only other thing I can think of would be to go with my first method, but then use 7-zip to pull out the compiled files from the unsigned apk and insert them into the signed apk. I haven't tried that yet, but it will be the next one I go with. Every time this fails, though, I have to do a nandroid restore, and it's getting a little frustrating, which is why I'm asking you folks.
--
edit: I got it all figured out.
For those interested, after running "apktool b" (to build/compile), ignore the output zip. Instead go into the source directory and there is now a build directory. In that is an apk directory. Simply add your changed files to the original untouched APK (if you modified any XML files, then replace resources.arsc; if you added anything to smali, then replace classes.dex; if you added any XML files, then you need to include those as well; for me, i copied resources.arsc, classes.dex, and one new XML file). I used the following command:
Code:
zip -9 ..\SystemUI.apk res\layout\status_bar.xml classes.dex resources.arsc
I use zip instead of 7za for cosmetic reasons. You can also use "7za a -tzip etc..." if you want.
hello i know how you feel well....i never did.
you keep a backup and a copy of your system apk and once you did your changes look in your copy and go to /res and delete the destinations you modded and putted them in the modded apk now look into your modded apk file in /res and take the files you deleted from the copy apk and move them to the copy apk and your all set.
if this didnt understand ill show you an awesome thread that will help you
sorry i didnt see your edited section
After the Release of ICS for our phones i decided to try building MIUI for our phones
I was able to make a zip but still havent got a booting ROM
Here I Hope to bring out developers to try and help out in developing an MIUI ROM Based on Stock the Procedure is pretty Simple
This also might Help understand what this Project is about
MIcode-Patchrom
To get started with MiCode/patchrom, you'll need to get
familiar with [Git and Repo](http://source.android.com/download/using-repo).
To initialize your local repository using the patchrom trees, use a command like this:
mkdir patchrom
cd patchrom
repo init -u git://github.com/MiCode/patchrom.git -b ics
Then to sync up:
repo sync
once there
We start off like this
STEP 1: Extracting the tools
I've extracted the tools to ~/patchrom, but you can use another directory if you want. I'll call that folder the PatchROM root folder.
STEP 2: Choosing the ROM
The PatchROM docs recommend that we use a stock ICS ROM from the device manufacturer.
So i've taken thebrainfaka's beta build and used it as my Base ROM.
U could follow the same steps
EDIT:
Although i Decided to turn things around after alotta failures so now if ur on the stock rom just type in
Code:
../build/envsetup.sh
when u are in the folder ST25i
then
Code:
../tools/releasetools/ota_target_from_phone -r
STEP 3: Creating the file structure
To port, we need to create a folder inside the PatchROM root directory for our device. I created a folder called 'ST25i' and made a makefile file
You also need to decompile the following APK files and put the resulting folder on the 'ST25i' folder:
/system/framework/android.policy.jar
/system/framework/framework.jar
/system/framework/framework-res.apk
/system/app/SystemUI.apk
/system/framework/services.jar
and the apps defined on the 'local-modified-apps' below
STEP 4: Editing the Makefile
The makefile i made has the following structure:
Code:
#
# Makefile for ST25i
#
# The original zip file, MUST be specified by each product
local-zip-file := ST25i.zip
# The output zip file of MIUI rom, the default is porting_miui.zip if not specified
local-out-zip-file := MIUI_ST25i.zip
# All apps from original ZIP, but has smali files chanded
local-modified-apps := CustomizedSettings MediaProvider
local-modified-jars :=
local-miui-modified-apps := MiuiHome Mms Settings Phone ThemeManager MiuiGallery Music
local-miui-removed-apps := MediaProvider
# All apps need to be removed from original ZIP file
include phoneapps.mk
# To include the local targets before and after zip the final ZIP file,
# and the local-targets should:
# (1) be defined after including porting.mk if using any global variable(see porting.mk)
# (2) the name should be leaded with local- to prevent any conflict with global targets
local-pre-zip := local-zip-misc
local-after-zip:= local-test
# The local targets after the zip file is generated, could include 'zip2sd' to
# deliver the zip file to phone, or to customize other actions
include $(PORT_BUILD)/porting.mk
# To define any local-target
local-zip-misc:
@echo Replace build.prop
cp other/build-ST25i.prop $(ZIP_DIR)/system/build.prop
rm $(ZIP_DIR)/system/vendor/overlay -rf
rm $(ZIP_DIR)/system/etc/customization/content/com/sonyericsson/wallpaperpicker/wallpapers -rf
local-test:
echo "an example action"
Code:
local-phone-apps = AccessoryKeyDispatcher \
AdobeFlashPlayer \
ApplicationsProvider \
AudioEffectService \
Bluetooth \
bootinfo \
CameraExtensionPermission \
CdfInfoAccessor \
CertInstaller \
CredentialManagerService \
DefaultCapabilities \
DefaultContainerService \
enhancedusbux \
ES_File_Explorer \
FaceLock \
GenericApplicationInstaller \
Initial-boot-setup \
livewallpaperearth \
InfiniteView \
MediaProvider \
MemcardTransportService \
Nfc \
PackageInstaller \
qcsemcservice \
Radio3 \
SemcCamera3D \
QuickPanelSettings \
SecWallpaperChooser \
SemcAlbum \
SemcAutoPowerOff \
SemcCameraUI \
SemcClock \
ServiceMenu \
SoundEnhancement \
usb-mtp-backup-transport \
usb-mtp-marlin-wrapper \
usb-mtp-update-wrapper \
usb-mtp-vendor-extension-service \
usbotg \
UsbTransportService \
UserDictionaryProvider \
UxpNxtLockScreen \
WapiCustomization \
WapPush \
WeatherWidget \
Youtube
Now Phoneapps.mk which i included in the makefile refers to all phone apps that i dont require
I'm still not sure regarding this but this what i made it so far
STEP 5: Apply MIUI Changes
To apply the MIUI changes on the choosen ROM, type those commands in the root of PatchROM:
Code:
source build/envsetup.sh
cd ST25i # CHANGE THIS LINE TO MATCH THE FOLDER YOU CREATED IN STEP 3
make
Now it should decompile the ROM and merge the ROM's smali files with the MIUI files, and create an ZIP file with the MIUI rom.
Github Sources for Xperia U build directory
Here!
These files should be in the folder u named as ST25i
u may use "git clone " and get all the files into ur local directory "ST25i"
Please Note in my github i've provided Files SPECIFICALLY FOR XPERIA U
Following everthing U've done so far
Now u maybe able to make ur build
while in the "patchrom" directory type in
Code:
$source ./build/envsetup.sh
$cd ST25i
$make
then go to folder/view options and check "show hidden files"
Now u will see a folder named ".build"
Enter that folder u will find a zip named MIUI_ST25i.zip
Which is Your MIUI ROM
So far I havent had success in getting it to boot,
So a humble request to All Devs to help out with this
Thanks for support Xperia U
Regards.
Hi Friends,
Just stumbled upon this thread while I was searching for something else. I recently managed to successfully port MIUI patchrom for my device Samsung Galaxy R running ICS 4.0.4.
The patchrom is for ICS 4.0.1 - 4.0.3, so if you running 4.0.4, it will be a little tougher.
But seeing the OP, I see you got something missing after build/envsetup.sh you need to run "make firstpatch" for the first time. That patches your framework, services and policy to work with MIUI. Then you'll get a hell lot of reject smali code files that you need to fix by hand. Then when you "make fullota" or "make zipfile" it will work. You may also need to patch your kernel init script in case your framework is too large for apktool to build and needs to be divided into two, like in our case.
I hope this helps. I was quoting the standard MiCode patchrom way of porting new devices. Please ignore if you are following some other setup.
parajsinghal said:
Hi Friends,
Just stumbled upon this thread while I was searching for something else. I recently managed to successfully port MIUI patchrom for my device Samsung Galaxy R running ICS 4.0.4.
The patchrom is for ICS 4.0.1 - 4.0.3, so if you running 4.0.4, it will be a little tougher.
But seeing the OP, I see you got something missing after build/envsetup.sh you need to run "make firstpatch" for the first time. That patches your framework, services and policy to work with MIUI. Then you'll get a hell lot of reject smali code files that you need to fix by hand. Then when you "make fullota" or "make zipfile" it will work. You may also need to patch your kernel init script in case your framework is too large for apktool to build and needs to be divided into two, like in our case.
I hope this helps. I was quoting the standard MiCode patchrom way of porting new devices. Please ignore if you are following some other setup.
Click to expand...
Click to collapse
Ah i'm following a different setup mate,for me the first problem to be tackled is compiling framework-res.apk,i
Even without changes I'm able to recompile but the darn thing wont work,
I have reports of similair errors in compiling framework-res
Once i get that sorted out i should be able to move forward...
oh and i already have compiled framework,services and policy with miui changes btw,
I'm pretty sure its the framework-res.apk which is giving me errors,
Some dudes in Sola also reported the same...
Hopefully when i figure out why my compiled framework doesnt boot i should get stuff moving..
bharat_goku said:
Ah i'm following a different setup mate,for me the first problem to be tackled is compiling framework-res.apk,i
Even without changes I'm able to recompile but the darn thing wont work,
I have reports of similair errors in compiling framework-res
Once i get that sorted out i should be able to move forward...
oh and i already have compiled framework,services and policy with miui changes btw,
I'm pretty sure its the framework-res.apk which is giving me errors,
Some dudes in Sola also reported the same...
Hopefully when i figure out why my compiled framework doesnt boot i should get stuff moving..
Click to expand...
Click to collapse
Why are you completetly compiling and not only drag/drop modified files using 7zip. Or did i understand something wrong.....
thebrainkafka said:
Why are you completetly compiling and not only drag/drop modified files using 7zip. Or did i understand something wrong.....
Click to expand...
Click to collapse
I have smali files too which can't be added by 7zip
Sent from my ST25i using xda premium
Ok now i decided to restart the building procedure all over again,
Too many errors in my build log so gimme a little while before i update my github sources...
To make MIUI working you must edit ramdisk in kernel.
Hello to all developers that I work with a Samsung Galaxy Ace M and I'm creating a new rom but e had this problem and could not solve and comment that use Multi-Tool Apk-this is my problem to modify a strings of route:
C: \ APK-Multi-Tool \ projects \ lidroid-res.apk \ res \ values
Modify the Strings.xml with Notepad + in my case the lines 3 and 63 the modified and recompiled back, the way to my rom but the rom started as me'' start'' Force Quit the application tells me SystemUI was arrested and all that, my question is that if you have to change something more than just the String.xml? Porquesi'm editing the lidroid-res.apk tells me the SystemUI process was stopped and I get force close?
If anyone I know say to do or whether to modify a file more than just the Strings.xml please be grateful for their help
PS: Sorry for my English