File: msi.py

package info (click to toggle)
xpra 3.1.5%2Bdfsg1-0.2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 18,692 kB
  • sloc: python: 117,045; javascript: 94,780; ansic: 2,843; sh: 939; cpp: 268; makefile: 212; xml: 89
file content (31 lines) | stat: -rwxr-xr-x 1,028 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/usr/bin/env python

# BATch files are useless,
# all we want is sed,
# but is is MSWindows so it's easier to re-invent the wheel, sigh

import sys

def main():
    if len(sys.argv)<3:
        print("Invalid number of arguments")
        print("Usage: %s source-msi.xml destination-msi.xml TOKEN1=VALUE1 [TOKEN2=VALUE2 [..]]", sys.argv[0])
        sys.exit(1)
    src = sys.argv[1]
    dst = sys.argv[2]
    print("replacing tokens from file '%s' and saving to '%s'" % (src, dst))
    data = open(src, 'rb').read().decode()
    print("data=%i bytes %s" % (len(data), type(data)))
    for kv in sys.argv[3:]:
        try:
            token, value = kv.split("=")
        except ValueError:
            print("skipping invalid token string '%s'" % kv)
            continue
        print("replacing %s with '%s' %s" % (token, value, type(token)))
        data = data.replace("$%s" % token, value)
        data = data.replace("${%s}" % token, value)
    open(dst, 'wb').write(data.encode())

if __name__ == '__main__':
    main()