Add script to fix msi generation
The generated msi will be modified so it can be installed by any user.master
parent
bc663474f6
commit
37eccfeaf4
69
setup.py
69
setup.py
|
@ -1,5 +1,7 @@
|
|||
import distutils, distutils.util
|
||||
import msilib
|
||||
import os
|
||||
import pathlib
|
||||
import setuptools
|
||||
import sys
|
||||
|
||||
|
@ -59,6 +61,73 @@ if os.name == "nt":
|
|||
],
|
||||
)
|
||||
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# Modifications to allow for a non-admin-required msi
|
||||
print("modifying final msi '{}' for standard user installation" \
|
||||
.format(msi_filepath))
|
||||
if not msi_filepath.exists():
|
||||
print("msi file does not exist")
|
||||
else:
|
||||
try:
|
||||
db = msilib.OpenDatabase(
|
||||
str(msi_filepath),
|
||||
msilib.MSIDBOPEN_TRANSACT,
|
||||
)
|
||||
|
||||
si = db.GetSummaryInformation(20)
|
||||
cur_wc = si.GetProperty(msilib.PID_WORDCOUNT)
|
||||
si.SetProperty(
|
||||
msilib.PID_WORDCOUNT,
|
||||
cur_wc | 0b1000,
|
||||
)
|
||||
si.SetProperty(
|
||||
msilib.PID_AUTHOR,
|
||||
"{} - {}" \
|
||||
.format(
|
||||
lokrez.version.ENTITY,
|
||||
lokrez.version.AUTHOR,
|
||||
),
|
||||
)
|
||||
si.Persist()
|
||||
|
||||
# Install for the current user only
|
||||
vi = db.OpenView(
|
||||
"DELETE FROM `Property` WHERE `Property`.`Property` = " \
|
||||
"'ALLUSERS'",
|
||||
)
|
||||
vi.Execute(None)
|
||||
vi.Close()
|
||||
|
||||
# Add the manufacturer name
|
||||
vi = db.OpenView(
|
||||
"UPDATE `Property` SET `Property`.`Value`='{} - {}' WHERE " \
|
||||
"`Property`.`Property` = 'Manufacturer'" \
|
||||
.format(
|
||||
lokrez.version.ENTITY,
|
||||
lokrez.version.AUTHOR,
|
||||
),
|
||||
)
|
||||
vi.Execute(None)
|
||||
vi.Close()
|
||||
|
||||
# Update Path env variable for the user only
|
||||
vi = db.OpenView(
|
||||
"UPDATE `Environment` SET `Environment`.`Name`='=-Path' " \
|
||||
"WHERE `Environment`.`Environment` = 'E_PATH'",
|
||||
)
|
||||
vi.Execute(None)
|
||||
vi.Close()
|
||||
|
||||
db.Commit()
|
||||
db.Close()
|
||||
|
||||
except Exception as e:
|
||||
print("fail")
|
||||
print(str(e))
|
||||
print(e.args)
|
||||
raise
|
||||
|
||||
sys.exit(0)
|
||||
|
||||
# Linux build
|
||||
|
|
Loading…
Reference in New Issue