From a402944f3813927c1145163c36abe0e3c4a50dfa Mon Sep 17 00:00:00 2001 From: Nir Bar Date: Thu, 28 May 2020 08:55:46 +0300 Subject: SERVER-47257 Ensure back button on final MSI panel works correctly Dump now deprecated "trim msi" functionality Signed-off-by: Andrew Morrow Closes #1365 --- buildscripts/msitrim.py | 64 ------------------------------ src/mongo/installer/msi/SConscript | 27 ++++++------- src/mongo/installer/msi/wxs/UIFragment.wxs | 41 +++++++++++++++++-- 3 files changed, 49 insertions(+), 83 deletions(-) delete mode 100644 buildscripts/msitrim.py diff --git a/buildscripts/msitrim.py b/buildscripts/msitrim.py deleted file mode 100644 index 8e06fd0e395..00000000000 --- a/buildscripts/msitrim.py +++ /dev/null @@ -1,64 +0,0 @@ -"""Script to fix up our MSI files.""" - -import argparse -import shutil - -import msilib - - -def exec_delete(db, query): - """Execute delete on db.""" - view = db.OpenView(query) - view.Execute(None) - - cur_record = view.Fetch() - view.Modify(msilib.MSIMODIFY_DELETE, cur_record) - view.Close() - - -def exec_update(db, query, column, value): - """Execute update on db.""" - view = db.OpenView(query) - view.Execute(None) - - cur_record = view.Fetch() - cur_record.SetString(column, value) - view.Modify(msilib.MSIMODIFY_REPLACE, cur_record) - view.Close() - - -def main(): - """Execute Main program.""" - parser = argparse.ArgumentParser(description='Trim MSI.') - parser.add_argument('file', type=argparse.FileType('r'), help='file to trim') - parser.add_argument('out', type=argparse.FileType('w'), help='file to output to') - - args = parser.parse_args() - print("Trimming MSI") - - db = msilib.OpenDatabase(args.file.name, msilib.MSIDBOPEN_DIRECT) - - exec_delete( - db, - "select * from ControlEvent WHERE Dialog_ = 'LicenseAgreementDlg' AND Control_ = 'Next' AND Event = 'NewDialog' AND Argument = 'CustomizeDlg'" - ) - exec_delete( - db, - "select * from ControlEvent WHERE Dialog_ = 'CustomizeDlg' AND Control_ = 'Back' AND Event = 'NewDialog' AND Argument = 'LicenseAgreementDlg'" - ) - exec_delete( - db, - "select * from ControlEvent WHERE Dialog_ = 'CustomizeDlg' AND Control_ = 'Next' AND Event = 'NewDialog' AND Argument = 'VerifyReadyDlg'" - ) - exec_delete( - db, - "select * from ControlEvent WHERE Dialog_ = 'VerifyReadyDlg' AND Control_ = 'Back' AND Event = 'NewDialog' AND Argument = 'CustomizeDlg'" - ) - - db.Commit() - - shutil.copyfile(args.file.name, args.out.name) - - -if __name__ == "__main__": - main() diff --git a/src/mongo/installer/msi/SConscript b/src/mongo/installer/msi/SConscript index 7b54a8137ba..b23deba2240 100644 --- a/src/mongo/installer/msi/SConscript +++ b/src/mongo/installer/msi/SConscript @@ -146,7 +146,7 @@ env.Command(objects, ' $SOURCES') #light: link .objs into an msi -pre_msi = "$BUILD_DIR/msi/${SERVER_DIST_BASENAME}.pre.msi" +msi = "$BUILD_DIR/msi/${SERVER_DIST_BASENAME}.msi" # Suppress VC140_CRT_CRT.MSM Internal Consistency Errors # ICE03 - Supress "String overflow" @@ -158,33 +158,30 @@ pre_msi = "$BUILD_DIR/msi/${SERVER_DIST_BASENAME}.pre.msi" # so this consistency check can be ignored. # -- https://msdn.microsoft.com/en-us/library/windows/desktop/aa368954(v=vs.85).aspx -pre_msi_cmd = env.Command(pre_msi, +msi_cmd = env.Command(msi, objects, '"$WIXLIGHT" -out ${TARGET} -wx -cultures:null -sice:ICE82 -sice:ICE03 -sice:ICE30' ' -ext "$WIXUIEXT"' ' -ext "$WIXUTILEXT"' ' ${SOURCES}') -env.NoCache(pre_msi_cmd) +env.NoCache(msi_cmd) # Generated Dependencies -env.Depends(pre_msi_cmd, '$BUILD_DIR/mongo/mongo.exe') -env.Depends(pre_msi_cmd, '$BUILD_DIR/mongo/mongod.exe') -env.Depends(pre_msi_cmd, '$BUILD_DIR/mongo/mongos.exe') -env.Depends(pre_msi_cmd, '$BUILD_DIR/mongo/installer/msi/ca/mongoca.dll') -env.Depends(pre_msi_cmd, '$BUILD_DIR/mongo/installer/compass/Install-Compass.ps1') +env.Depends(msi_cmd, '$BUILD_DIR/mongo/mongo.exe') +env.Depends(msi_cmd, '$BUILD_DIR/mongo/mongod.exe') +env.Depends(msi_cmd, '$BUILD_DIR/mongo/mongos.exe') +env.Depends(msi_cmd, '$BUILD_DIR/mongo/installer/msi/ca/mongoca.dll') +env.Depends(msi_cmd, '$BUILD_DIR/mongo/installer/compass/Install-Compass.ps1') # Source Dependencies -env.Depends(pre_msi_cmd, '#buildscripts/packaging/msi/mongod.yaml') +env.Depends(msi_cmd, '#buildscripts/packaging/msi/mongod.yaml') if 'enterprise' in env['MONGO_MODULES']: - env.Depends(pre_msi_cmd, "#" + enterpriseToolBuildDir + "/mongodecrypt.exe") - env.Depends(pre_msi_cmd, "#" + enterpriseToolBuildDir + "/mongoldap.exe") - env.Depends(pre_msi_cmd, "#" + enterpriseToolBuildDir + "/mongocryptd.exe") + env.Depends(msi_cmd, "#" + enterpriseToolBuildDir + "/mongodecrypt.exe") + env.Depends(msi_cmd, "#" + enterpriseToolBuildDir + "/mongoldap.exe") + env.Depends(msi_cmd, "#" + enterpriseToolBuildDir + "/mongocryptd.exe") msi = "$BUILD_DIR/msi/${SERVER_DIST_BASENAME}.msi" -env.Command(msi, - pre_msi, - r'$PYTHON buildscripts\msitrim.py ${SOURCES} ${TARGET}') env.AlwaysBuild(msi) env.NoCache(msi) diff --git a/src/mongo/installer/msi/wxs/UIFragment.wxs b/src/mongo/installer/msi/wxs/UIFragment.wxs index 1ccbe3901bf..1f061ef4103 100644 --- a/src/mongo/installer/msi/wxs/UIFragment.wxs +++ b/src/mongo/installer/msi/wxs/UIFragment.wxs @@ -2,11 +2,44 @@ - - + + + + + - LicenseAccepted = "1" - WixUI_InstallMode = "InstallCustom" + + + + + + + + + + + + + 1 + + NOT Installed + Installed AND PATCH + + 1 + LicenseAccepted = "1" + + NOT Installed OR WixUI_InstallMode = "Change" + Installed AND NOT PATCH + Installed AND PATCH + + 1 + + 1 + 1 + 1 + 1 + + WixUI_InstallMode = "InstallCustom" -- cgit v1.2.1