Minion provides premeir AddOn Management for games such as World of Warcraft and The Elder Scrolls Online. Premier AddOn Management. Install Find new AddOns and install them in a snap! Update Keep all your AddOns up-to-date automatically. Manage Secure and easy.
From ESOUI Wiki
- Multi-threading Work: This work is complete and successfully launched on the ESO Public Test Server. This is on track to release with Update 25. This is on track to release with Update 25. Frame Rate Improvements: Initial testing on the ESO Public Test Server shows reduced frame rate hitching and spikes – frame rate is more stable as a result.
- Minion provides premeir AddOn Management for games such as World of Warcraft and The Elder Scrolls Online.
- I have tried searching online for guides and tutorials but I cannot seem to get anything to work. Some troubleshooting I have already done: 1. I launched the game. This creates the AddOn folder and other folders for settings, preferences, etc. (At least, it should). Game is updated. Game launches just fine, no other apparent issues. On my PC, I have two drives, C and D. My C drive is my.
- The Elder Scrolls Online: Stonethorn & Update 27 Now Live on All Platforms. Continue your Dark Heart of Skyrim adventure with The Elder Scrolls Online: Stonethorn. Explore Castle Thorn and the Stone Garden in this al.
Jump to: navigation,search
|
How do I install an addon?
- Find the AddOns folder inside your ESO folder (if it doesn't exist, start up the game once, and it will create it for you):
To find the folder 'AddOns' read this wiki entry: https://wiki.esoui.com/UserFolder
It is a subfolder of the UserFolder.
It is a subfolder of the UserFolder.
- All your addons will go in this directory.
- Individual addons are just folders that contain a bunch of files. One really important file will be the <addonName>.txt file. It will have the same name as the folder that contains it.
- If you've copied an addons folder from somewhere else, like a network share, just paste it in this directory and when you run the game you should see it in the AddOn Manager (which you can open at character select, or in the game from the main menu)
Symlinking folders
You can use one AddOn installation over multiple user profiles by symlinking the folders from the system console like this:
- Windows: mklink /D 'TARGET_PATH' 'SOURCE_PATH'
- Mac: ln -s 'SOURCE_PATH' 'TARGET_DIR'
Debugging for New Addon Devs
So you looked at one of the tutorials, and you did what was there but it's just not working! Here's a few easy things to trip up on:- Make sure that the name of the containing folder, and the name of the .txt file are EXACTLY the same. The string that is passed to the handler for EVENT_ADD_ON_LOADED should also match that.- Do you have a d() message in your addon intialization? Chat isn't initialized until the UI is finished loading, so you won't see it. Get pChat and add it as an optional depends on in the .txt file.- Check the .txt file and make sure the spelling of other files (specifically the main.lua file or whatever you call it) is spelled correctly and exactly.
How do I output something to the chat?
Send chat messages
You cannot send chat messages, but you are able to put text into the Chat of the client. There are two ways:
- For simple text, use 'CHAT_SYSTEM:AddMessage(<message String>)'
- This will put the message in the active tab of the active Chat Container
- If you want to specify which Chat Container, Tab and the like to send to, you can specify array indexes like this: 'CHAT_SYSTEM.containers[<Chat Container Number>].windows[<Tab number>].buffer:AddMessage(<message String>)'
- This is only suitable for simple strings, so it is not ideal for debugging purposes
Debug Output
d() adds yellow text to the chat box. Playbox hd for mac. It's mostly used for debug/dump.
- use 'd(<list of variables>)' to call it
- it will automatically iterate over tables and print out the ID's of functions and tables
- d() is by default only available after the loaded events have been fired (as the chat is not ready before and it is not buffered).
If you need to output d() messages from your .lua file or the loaded event, BugEaters[[1]], Pre-Init debug option is worth a look. Just don't forget to add it as optional dependency (so it is executed before your addon if present).
Alternatively, you can use pChat. (Which comes with a nice 'save chat after /reloadui function too')
How do I save settings on the local machine?
AddOn settings can be persisted on the local machine using saved variables. A saved variable is a table that your add-on declares in its text file. When your add-on is loaded, the saved variable is created in memory from its save file. When the add-on is unloaded, the table in memory is saved to a file on disk. The file is located in Windows: Documents/Elder Scrolls Online/<build flavor>/SavedVariables/<your add-on's saved variable name>.lua, Mac: ~/Documents/Elder Scrolls Online/<build flavor>/SavedVariables/<your add-on's saved variable name>.lua. To use a saved variable in your add-on:
- Open the .txt file for you add-on in the add-on's directory.
- Add a line declaring the saved variable's name:
- Create an event handler for EVENT_ADD_ON_LOADED. The saved variable does not exist until the add-on is loaded so it must be created at the point your add-on's ADD_ON_LOADED event is sent.
In any of your lua files:
- Create a ZO_SavedVars object to access the raw saved variable table, or create it from the default if nothing fitting is on the disk. The saved variable constructor looks like this for character specific data:
This will use the unique character ID to save the data into the SavedVariables table. Inside the table there will also be written the character's name with the key ['$LastCharacterName'] so you are able to read the character ID (it's a string!) and name from the table, if you need to!-> There also exists an obsolte old way to save the charater data by the charater name, which obviously is not character rename save and should not be used anymore: ZO_SavedVars:New
- And like this for account wide data (that is shared between all Characters):
- The parameters are:
- savedVariableName - The variable name you put in the add-on text file.
- variableVersion - The current version of this saved variable. It should start with 1. The version number is saved with the saved table on the disk. If the version number in the file and the version given to the constructor do not match, the values in the file are ignored and default is used instead. Use this at development time to force ignoring the values from previous attempts and at distirbution time to force previous versions stored data to be reset.
- namespace - An optional string that lets you define sub-tables in your saved variable. Use if you need to store several different sets of data in one saved var. For example, the ZO_Ingame_SavedVariable has namespaces for Chat and WorldMap. Probably not necessary for most add-ons.
- defaults - A table that lets you specify what the default values in the saved variable are*. You have to define a default table before calling the constructor, but it can be an emtpy one. There is no way to check if defaults are needed (the decision is made by the constructor)
- profile - Allows you to select a specific profile instead of the current character's default profile. Probably not necessary for most simple add-ons without robust profile management.
- For example, if you were storing a relative window position and you wanted to default it to 0, 0 then your default table might look like:
- Read and write from the saved variable:
- Iterating over SavedVariables:
If the SavedVariable contains int indexed values, you cannot properly get the highest number using #savedVars (it returns 0). If you need to easily iterate over the data in the saved variable, assign the table with int-indexes to a string Index, even if that results in the saved variables containing nothing but this one string index:
- Limitations:
The game will not save a string variable, if it is 2,000 or more characters. So split long strings below that. Unicode wide characters count as longer, so use #string to get the correct byte length of it. Splitting strings is officially recommended, as done in the Librarian addon:
Why can't I call MoveForwardStart / TurnLeftStart / this function?
Some of the lua API functions are marked with accessControl='private.' These functions cannot be called or even referenced in addons for security reasons. Look in ESO UI Documentation to see what accessControl is set for a function. No accessControl being set means that it is public.
Another group of API functions are marked with accessControl='protected'. These function cannot be called while in combat, but calling them outside combat is not an issue. This restriction usually applies to actions the user cannot perform during combat.
Another group of API functions are marked with accessControl='protected'. These function cannot be called while in combat, but calling them outside combat is not an issue. This restriction usually applies to actions the user cannot perform during combat.
Is there a way to dynamically create controls like buttons or labels?
Controls can be created dynamically using the CreateControlFromVirtual function and a virtual template defined in XML. The template defines what the created control will look like and can be as complex as a normal control (with sub-controls, properties, etc).
- To define the template we use the same XML we would use to write the control with the addition of the virtual='true' attribute:
To use the template we call CreateControlFromVirtual. It has the following arguments:
- controlName - The name of your new control. It must not be the same as any other control.
- parent - The control that will be the parent. It should be the top level or whatever container control should hold these.
- templateName - The name of the template defined in XML.
- currentId - You can optionally pass in a number that will be appended to the control name. This is used to make it easier to make a whole lot of controls by incrementing the id for each new control.
How do events work?
Events allow your add-on to be notified when a specific 'event' happens in the game client. These events vary widely and include things like getting new inventory items, receiving chat messages, and accepting quests. You add-on is 'notified' in the form of the game client running a function that you registered earlier on. For example, when the client receives a group invitation for the player, EVENT_GROUP_INVITE_RECEIVED is triggered, calling all functions that have registered to be notified of it. When the functions are ran, they may be passed arguments that offer more information about the event. The first argument is always eventCode which is a number identifying the event. In the case of EVENT_GROUP_INVITE_RECEIVED, the second argument is the name of the person that is inviting the player to the group. You can look up what arguments come with each event in the ESO UI Documentation files.
So how does this look in lua?
Event handler function
Register the event
You may also unregister events with the UnregisterEvent function.
If your addon can benefit from splitting up parts of its functionality into separate files to make them more manageable you can use the unique string to specify a combination of say addon and file to further control what happens when. This way, for example, you can have one file that does something in the PlayerActivated event function but can now safely tell it to unregister the event for that file without affecting a file that may have to process something every time your player is activated and not only when you first log in or reload.
NOTE: Bear in mind that the order these events are triggered and acted on are initially based on the order they are in the addon txt file.
For example
(file 1):
(file 2):
How does screen resolution impact the UI?
To understand how the game lays out the UI we should start by talking about UI units. UI units are what you are specifying when you set the width, height, offsets, or any other positional values of a control. They are not the same as pixels and are based on aspect ratio instead of the resolution. The number of pixels that a UI unit actually represents varies based on the resolution of the player's screen. The reason why we use UI units is it allows up to guarantee that we have at least 1680 x 1050 UI unit space regardless of the player's resolution. This means that if we wanted to put a 1680 UI unit wide window into to game, it would fit on monitors from 1280 x 1024 pixels, to 2560 x 1980 pixels, to anything else. Lets look at some examples to see how UI units map to pixels in the game.
- Player's Resolution: 1680 x 1050.
- In this case, the player's resolution exactly matches our target resolution and aspect ratio. The canvas (the UI unit grid that covers the whole screen) measures 1680 x 1050 and one UI unit is equal to one pixel.
- Player's Resolution: 1980 x 1050.
- In this example, the player's screen is wider that our target aspect ratio. If we just put a 1680 x 1050 canvas inside of it we would have some additional space on the sides. So we expand the canvas to be 1980x 1050. This means that the UI can be wider that the target size (or taller), but never smaller. Here also we have one UI unit equal to one pixel.
- Player's Resolution: 1680 x 1200.
- This one is taller than the target aspect ration. Putting in a 1680 x 1050 canvas would have some additional space on the top and bottom. So we expand the canvas vertically to fill the space, leading to a 1680 x 1200 canvas. Notice that one of the canvas dimensions is always fixed. Either it will be 1680 x (Something larger than 1050) or (Something larger than 1680) x 1050. When the aspect ratio is wider (larger) than our target, the canvas height is fixed at 1050 and the width grows. When the aspect ration is taller (smaller) than our target, the canvas width is fixed at 1680 and the height grows.
- Player's Resolution: 1920 x 1200.
- This screen has the same aspect ratio as our target (1.6) but its bigger. In this case, the number of pixels representing a UI unit changes. The canvas will be 1680 x 1050 UI units (because the aspect ratio is a match), but we have to scale the UI units up to match the number of pixels on the monitor. We take the resolution dimension and divide it by the canvas dimension (1920 / 1680 = 1.14 pixels per UI unit).
- Player's Resolution: 1228 x 768.
- This screen has the same aspect ratio as our target but its smaller. The pixels per UI unit in this example are 1228 / 1680 = .73 pixels per UI unit.
- Player's Resolution: 2000 x 1000.
- In this last example lets consider a resolution that doesn't match the aspect ratio or resolution. The aspect ratio of the screen is 2 (2000 / 1000) which is larger than the target (1.6) so it is wider than desired. This means that it has a fixed height of 1050, and extra space on the sides. At an aspect ratio of 2, 1050 height matches (1050 x 2 = 2100 UI units wide) for the canvas. So our UI canvas is 2100 x 1050. Finally, we compute the pixels per UI unit which is (2100 / 2000 = 1.05 pixels per UI unit).
The above examples ignore one feature of the UI which is called global scale. This is the slider in the UI options that lets you make the UI larger or smaller. Global scale functions by changing the size of the canvas to impact the relative size of the windows. A small global scale makes the canvas bigger, which makes the windows seem smaller. A larger global scale makes the canvas smaller, which makes the windows seem bigger in comparison. For example, consider a 1000 x 1000 canvas with a 500 x 500 window centered in it. At a global scale of 0.5 the canvas becomes 2000 x 2000 (Original Canvas * (1 / Global Scale)). Whereas the 500 x 500 window used to be half the height and width (500 / 1000), it is now 25% of the height and width (500 / 2000).
What are Draw Level, Layer and Tier?
For a discussion of the difference between these control ordering settings see: Control Ordering
Eso Minion Not Working Youtube
How do I generate my own 'events' in Lua?
You cannot add events to or Raise Events in the Event_Manager. All you can do is adding handlers to it. Events there are added and fired from outside of the Lua Environment (and thus are out of the range for the Addons).Instead you have to use something called the 'Callback Manager' to realise custom events. Creating Custom events is a 3 step process:
1. Setup:
- (optional) Making local Callback Manager:
Callback 'Events' need a ID that is unique for the instance of the CallbackManager Class they are Fired in. If you choose to use the Global Callback manager (found under the global variable CALLBACK_MANAGER), high care must be taken to not collide with other Custom Events, especially as they do not have to be 'registered' beforehand in any way. All the colission concerns of Global Variables apply to Custom Events registered in the Global Callback Manager.If you want to avoid this you can create a local Callback Manager (with the Scope of your Code) for Custom Events. Just bear in mind that you have to expose it globally if you want other code to be able to register the Custom Events in your Callback Manager. You create a Local Scope Callback manager this way:
From there just replace all mentions of 'CALLBACK_MANAGER' with 'LocalCallbackManager' to get your local Callback Manager instance instead of the global, shared one.
- Choosing a name:
Amigaos 3.9 adf download. Regardless of which Callback Manager you use (the global one or a local one), you need a unique String ID for the Event. Ideally write it down as constant into a variable. Choose anything you are certain will be unique for this instance of the Callback Manager. If you want other code to be able to register your events, don't forget to also expose their names globally. Avoid just mentioning the Event Name in the Documentation (after all if they can use your variable, they have the right name without needing to know the right name which can be important if you change it later).
2. Firing the Event:
- You just have to tell the Callback Manager wich Event to fire, followed by the Arguments the Event handlers should receive:
This line will run all the Callbacks/Handlers (if there are any registered under <Event Name>), hand each handler a copy of each argument and then continue. If none are registered, it will just continue without doing any work (you do not have to guard against nil/empty collection problems).
3. Registering Custom Events:
- This process is very similar to registering EventManager Events, except there is no ID for your registration. Each Registered Callback is identified based on the Event it is registered to and the Callback function given.
3b Unregistering Custom Events Handlers:
Just hand it the same function and event name as when registering it.
Are there Keypress events that we can tie into?
If you want custom bindings (like in the keybinding window), you can make a bindings.xml file for your add-on and add them there. You can look at the bindings.xml files for examples. You will also need to make a string entry with the name 'SI_BINDING_NAME_X' using ZO_CreateStringId('SI_BINDING_NAME_X', 'My Custom Bind Name') where X is the name of the binding you added and it should appear in the bindings window. For example:
THIS SECTION GOES IN THE LUA FILE, NOT THE BINDINGS FILE
You can choose to add sections for up, down, or both. The code in the section will be run each time the binding is activated (<Down> for key down and <Up> for key up).
You can also make a top level window keyboardEnabled='1' in the xml and it will eat up all keypress events when it is shown. This is best used for when your window has a completely different use of the keyboard and you don't care that bindings aren't triggered. For example, if your wrote a Tetris add-on and wanted WASD to control the piece, keyboardEnabled can do it. The script handlers for keys are <OnKeyDown>, <OnKeyUp>, and <OnChar>. OnChar passes the key, while OnKeyUp and OnKeyDown pass the key, ctrl, alt, and shift arguments as booleans. Search ESO UI Documentation for KEY_ globals and you will find all the key definitions. For example, KEY_A, KEY_Z, KEY_ENTER, KEY_BACKSPACE. If you want to add controls for moving the tetris piece left and right you might do the following:
Can I add my own sound files to play with PlaySound()?
At the moment this is not possible. However, ZOS has confirmed that they will probably add it eventually.
Nothing seems to load from my Addon LUA file
![Eso Minion Not Working Eso Minion Not Working](https://www.lyncconf.com/wp-content/uploads/2018/12/BEST-ESO-ADDONS.jpg)
Make sure the file end-of-line format is set to windows mode (rn) instead of linux mode (n). It can silently ignore the file if you have the incorrect line ending.
Make sure that the name of the folder matches the name of the .text manifest file.
Make sure the names of the files to load in the manifest file are correct.
Make sure that the folders you're editing are the live and not PTS folders or vice versa.
Try adding an optionalDependsOn for pChat, and then scatter d() in the LUA file. It could be that some stuff is loading and others isn't.
Make sure the addonName in LUA is the same as the name of the folder and the name of the manifest file.
In what order are Addons loaded? I want mine to load before others!
Tests indicate addon loading rules only follow dependencies. Otherwise, the loading order is undefined. There's no rule saying addon A will load before addon B, newer folders before older folders, etc.
Only if B depends on A (optional or not optional), will A be run before B. So if you want your addon to run before others, you have to ask the authors to add an appropriate Optional dependency.
Only if B depends on A (optional or not optional), will A be run before B. So if you want your addon to run before others, you have to ask the authors to add an appropriate Optional dependency.
What's the difference between pairs and ipairs
The functions pairs and ipairs are used to iterate over your tables/indexed arrays. The difference between them is:
pairs: Will iterate in a non predictable order, using the table's key (which can be non-numeric, e.g. a string).
ipairs: Will iterate in a predictable order over numerically indexed array only! If the array's index is missing one number the function will return nil! If the array does not use a numerically index the function will return nil
Many problems or errors within your addons occur because you try to use ipairs to iterate over a table with string keys or the key is missing one number (got a gap).
Your addon won't show any error message but just will abort the ipairs function at this point silently.
pairs: Will iterate in a non predictable order, using the table's key (which can be non-numeric, e.g. a string).
ipairs: Will iterate in a predictable order over numerically indexed array only! If the array's index is missing one number the function will return nil! If the array does not use a numerically index the function will return nil
Many problems or errors within your addons occur because you try to use ipairs to iterate over a table with string keys or the key is missing one number (got a gap).
Your addon won't show any error message but just will abort the ipairs function at this point silently.
Retrieved from 'https://wiki.esoui.com/AddOn_Quick_Questions'
Download: Microsoft Windows Minion Removal/Uninstall Tool
Tested Malware & Virus Free by McAfee?
Tested Malware & Virus Free by McAfee?
Remove Minion Program?
Are you in the dilemma that the program is not working properly in your machine and you need to immediately uninstall this program for an upgrade or switch to other program instead? Or you may have trapped in the situation that you can still not able to install the upper version because it is not compatible with the one that previously installed even though you have already removed it from your PC.
Are you facing the problem like missing necessary files to delete Minion, or do not have permission to uninstall it, which resulted in the impossibility to conduct a complete removal from your machine?
As we all know that normally, we can uninstall this program directly from Windows attached uninstaller or with its own uninstaller. Sometimes, we may be lucky to uninstall it there, but not all because there must be some leftovers left down in the drives and registry.
Download: Microsoft Windows Minion Removal/Uninstall Tool
Tested Malware & Virus Free by McAfee?
Tested Malware & Virus Free by McAfee?
Normally, some people who are more professional on computer, can solve this kind of uninstall problem by first deleting the related file of from the drives and then go to modify the associated registry entries.
Video Guide: How to delete registry entries when you want to get rid of Minion completely
In fact, this will be useful in uninstalling some simple programs, but for the stubborn or corrupted programs, which combine well with the operating system, won't be completely uninstalled in this way. More severe, if any mistake was made in this risky way, your operating system can become unmanageable and may not work properly.
Why is it hard to sweep out Minion sometimes
There are times when people had to take computers to a store asking the technicians to solve the frustrating uninstall problem when they fail to sweep out Minion, which wasted them more time and took them a large amount of money. So why does it become difficult to uninstall a unwanted program? Generally speaking, the main reasons may be: not all people are professional on computers, who can uninstall any unneeded application and its leftovers completely, that makes the uninstallation difficult and dangerous.
It is also recommended to run a FREE performance scan on to check out related Windows Error so as to resolve the potential program uninstall errors completely.
How to Uninstall it when you get error message
Are you one of many users that received error messages when you continuously tried to uninstall Minion? Here is the most common error message you might received..
Look familiar? You must have tried the following steps:
Remove Minion Using its default uninstaller
Delete Minion with Windows Add/Remove Program
(for Windows 8, 8.1, 10)Eso Addons Minion Not Working
To completely remove Minion from your computer and totally eliminate any uninstall errors and other hassle along the way, you still need to delete the related registry entries and unneeded folders of the program from your system.
(HKEY_CURRENT_USERSoftware)
Minion Not Working For Eso Steam
(HKEY_LOCAL_MACHINESoftwareMinion)
(HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRuneg ui)
C:Program FilesMinion
(C:Document and SettingsAll UsersApplication Data)
(C:Documents and Settings%USER%Application DataMinion)
These manual uninstall steps are only recommended when you are comfortable with this process or if you're a computer technician. It happens that some of the related files and registry entries still remain, leaving a potential risk to your PC. Thus, you get crazy and frustrated.
Uninstall Minion in Easy Steps using an uninstaller (recommended)
Total Uninstaller is the best choice for you. With Total Uninstaller, you can remove and uninstall this program completely and easily, including its registry entries and files. Furthermore, other sticky unwanted programs on your PC can also be fully uninstalled. Doesn't it sound great? By following the steps, you will be able to uninstall it quickly and thoroughly from your computer.
Step 1: Download Total Uninstaller, install and launch it.
Step 2: Check Minion on the right. Press Run Analysis.
Step 3: Total Uninstaller will review the program files and associated registry entries. Click Complete Uninstall to start the normal uninstall process of the program.
Step 4: Click Yes to start the uninstall process.
Step 5: Wait for the standard uninstall process to be completed. Click Scan Leftovers.
Step 6: Total Uninstaller will conduct a full scan on your computer for a few minutes. When it finish scanning, click Delete Leftovers to thoroughly remove the program and its leftovers.
Step7: Total Uninstaller has now fully uninstall the program and deleted all files and extensions.
Step 8: Click OK to finish and now the unwanted application is totally uninstalled and removed from your PC.
Uninstall it using force uninstall method in easy steps
Eso Minion Addons Not Working
It occurs that the associated files and extensions usually get corrupted and the only way to uninstall this program from your PC, becomes by force uninstall through a professional installer like 'Total Uninstaller'.Below is a step by step guideline on how to force remove Minion or other unneeded program from your computer for good.
Step1: Download Total Uninstaller, then follow the on screen prompts to install in on your computer.
Step2: Run Total Uninstaller. Click Cannot find the program? and select the installed folder path.
Step3: Click 'Scan' to begin the uninstallation process. Follow the on-screen steps to finish the removal.
With the force uninstall steps, you can thoroughly uninstall Minion and any unwanted program from your computer without worrying that it will leave down some unexpected entries both in program files and Windows registry.Download: Microsoft Windows Minion Removal Tool
Tested Malware & Virus Free by McAfee?
Tested Malware & Virus Free by McAfee?
Benefit of Total Uninstaller - Why make use of it
There are really some useless programs and software in your computer that are hard to uninstall or remove by simply using the default uninstaller or Window default program remover. Sometimes, this default uninstaller leaves a lot of leftover components and registry entries behind. Consequently, in this case, the computer performance and stabilization will be affected by the leftover components in the registry that become threats.
Total Uninstaller makes these things out of your computer if you make the most use of it. This tool provide a better and easier way to effectively and thoroughly uninstall any unwanted applications or components that the standard uninstaller of Window cannot remove.
The benefits that Total Uninstaller can offer:What if your computer got infected by virus?
Most of the time people cannot find and delete the virus that infect certain program, especially those hidden programs. What's more, some malicious file cannot remove by hand. So, it is best to fully uninstall the infected software before your computer gets totally haunted by these virus. So now! why not land to get the useful and professional tool to uninstall the malicious files and other software you don't want to use any more? I am sure you will be satisfied with its powerful uninstalling features!
Download: Microsoft Windows Minion Removal Tool
Tested Malware & Virus Free by McAfee?
Tested Malware & Virus Free by McAfee?
Target Program Info
Eso Minion Not Working Video
File name: | Minion |
Version: | |
Last update: | |
License: | |
Publisher: | |
OS: | |
Located: | C:Program Files |
How to Fix the Windows Error you received during the uninstall
![Minion addons eso Minion addons eso](https://seidelmusicmanagement.com/img/minion-not-working-eso.jpg)
Eso Minion Not Working
Related Info
'98% PC errors are caused by corrupt, invalid, useless and possibly harmful files.'Free System Scan