Installed programs keep a copy of their script in C:\Program Files (x86)\InstallShield Installation Information\{GUID}\setup.inx.
// Decompiled source will appear here.
Drop a compiled InstallShield script — setup.inx, .obs, .obl or setup.ins — and get readable .rul source back. Everything runs in your browser; your file is never uploaded.
Installed programs keep a copy of their script in C:\Program Files (x86)\InstallShield Installation Information\{GUID}\setup.inx.
// Decompiled source will appear here.
The decompiler is compiled to WebAssembly and runs in a background worker. No server ever sees your script.
Encrypted setup.inx from InstallShield 6 onwards, .obs objects, .obl libraries and InstallShield 5 setup.ins.
Recovers typedefs, globals, prototypes, local variables and if blocks, with names for exported functions and externs.
InstallShield installers are driven by scripts written in InstallScript (.rul files). The installer ships them compiled — usually as an encrypted setup.inx. A decompiler reads that compiled form and reconstructs InstallScript source you can read, so you can see what an installer does before or after running it.
Programs installed with InstallShield keep a copy under C:\Program Files (x86)\InstallShield Installation Information\{product GUID}\setup.inx. For an installer you haven't run, extract setup.exe (or look next to it on the installation media) — setup.inx sits alongside data1.cab and setup.ini. Older InstallShield 5 installers use setup.ins instead.
Compiled setup scripts (setup.inx) from InstallShield 6 and later, compiled script objects (.obs), script libraries (.obl, each member is decompiled in turn) and InstallShield 5 scripts (setup.ins). Drop a script together with its debug symbols (.dbg) to get the original names of functions and variables back.
No. The decompiler is written in Rust and compiled to WebAssembly; it runs inside your browser in a background worker. Your file never leaves your computer.
Compilation throws away comments, formatting and the names of local variables and non-exported functions, so those come back as generated names like LclVarNum1 or Func_2047. Loops come back as gotos. Scripts compiled with debug information keep the names: they are restored automatically when embedded in setup.inx, or when you add the .dbg file the script was built with. Decompilation is not perfect — if a file produces wrong output, please open an issue.
Yes. The same decompiler is available as an open-source command-line tool — see the GitHub repository.