chore: remove old wix building and build on ci with cpack
This commit is contained in:
committed by
Chris Rizzitello
parent
f06a789d25
commit
3817489097
17
.github/workflows/continuous-integration.yml
vendored
17
.github/workflows/continuous-integration.yml
vendored
@ -218,13 +218,10 @@ jobs:
|
||||
- name: Build
|
||||
shell: bash
|
||||
run: |
|
||||
if [[ "$RUNNER_OS" != "Windows" && "${{matrix.target.like}}" != "arch" ]]; then
|
||||
if [[ "${{matrix.target.like}}" != "arch" ]]; then
|
||||
cmake --build build --config Release -j8 --target package
|
||||
else
|
||||
cmake --build build -j8
|
||||
fi
|
||||
|
||||
if [ ${{ matrix.target.like }} == "arch" ];then
|
||||
cmake --build build --config Release -j8
|
||||
useradd -m build
|
||||
sudo chown -R build build
|
||||
cd build
|
||||
@ -241,16 +238,6 @@ jobs:
|
||||
with:
|
||||
job: ${{ matrix.target.name }}
|
||||
|
||||
- name: Package
|
||||
if: ${{ runner.os == 'Windows' }}
|
||||
shell: bash
|
||||
run: |
|
||||
python ./scripts/package.py --package-version ${{env.DESKFLOW_PACKAGE_VERSION}}
|
||||
mv dist/deskflow* build/
|
||||
env:
|
||||
WINDOWS_PFX_CERTIFICATE: ${{ secrets.WINDOWS_PFX }}
|
||||
WINDOWS_PFX_PASSWORD: ${{ secrets.WINDOWS_PFX_PASS }}
|
||||
|
||||
- name: Upload
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
|
||||
@ -69,45 +69,3 @@ macro(configure_linux_package_name)
|
||||
set(OS_STRING "${DISTRO_NAME}-${CN_STRING}${CMAKE_SYSTEM_PROCESSOR}")
|
||||
|
||||
endmacro()
|
||||
|
||||
#
|
||||
# Same as the `configure_file` command but for directories recursively.
|
||||
#
|
||||
macro(configure_files srcDir destDir)
|
||||
|
||||
message(VERBOSE "Configuring directory ${destDir}")
|
||||
make_directory(${destDir})
|
||||
|
||||
file(
|
||||
GLOB_RECURSE sourceFiles
|
||||
RELATIVE ${srcDir}
|
||||
${srcDir}/*)
|
||||
file(
|
||||
GLOB_RECURSE templateFiles
|
||||
LIST_DIRECTORIES false
|
||||
RELATIVE ${srcDir}
|
||||
${srcDir}/*.in)
|
||||
list(REMOVE_ITEM sourceFiles ${templateFiles})
|
||||
|
||||
foreach(sourceFile ${sourceFiles})
|
||||
set(sourceFilePath ${srcDir}/${sourceFile})
|
||||
if(IS_DIRECTORY ${sourceFilePath})
|
||||
message(VERBOSE "Copying directory ${sourceFile}")
|
||||
make_directory(${destDir}/${sourceFile})
|
||||
else()
|
||||
message(VERBOSE "Copying file ${sourceFile}")
|
||||
configure_file(${sourceFilePath} ${destDir}/${sourceFile} COPYONLY)
|
||||
endif()
|
||||
|
||||
endforeach(sourceFile)
|
||||
|
||||
foreach(templateFile ${templateFiles})
|
||||
|
||||
set(sourceTemplateFilePath ${srcDir}/${templateFile})
|
||||
string(REGEX REPLACE "\.in$" "" templateFile ${templateFile})
|
||||
message(VERBOSE "Configuring file ${templateFile}")
|
||||
configure_file(${sourceTemplateFilePath} ${destDir}/${templateFile} @ONLY)
|
||||
|
||||
endforeach(templateFile)
|
||||
|
||||
endmacro(configure_files)
|
||||
|
||||
@ -76,15 +76,6 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
|
||||
|
||||
set(CPACK_WIX_UPGRADE_GUID "027D1C8A-E7A5-4754-BB93-B2D45BFDBDC8")
|
||||
|
||||
# TODO RM with legacy WIX Builder
|
||||
cmake_path(SET QT_PATH NORMALIZE "${Qt6_DIR}../../")
|
||||
|
||||
# TODO RM with legacy WIX Builder
|
||||
configure_files(
|
||||
${PROJECT_SOURCE_DIR}/deploy/dist/wix
|
||||
${PROJECT_BINARY_DIR}/installer
|
||||
)
|
||||
|
||||
set(CPACK_WIX_UI_BANNER "${CMAKE_CURRENT_SOURCE_DIR}/wix-banner.png")
|
||||
set(CPACK_WIX_UI_DIALOG "${CMAKE_CURRENT_SOURCE_DIR}/wix-dialog.png")
|
||||
set(CPACK_WIX_MSM_FILE "${CMAKE_CURRENT_SOURCE_DIR}/Microsoft_VC142_CRT_x64.msm")
|
||||
|
||||
33
deploy/dist/wix/AppBrowseDlg.wxs
vendored
33
deploy/dist/wix/AppBrowseDlg.wxs
vendored
@ -1,33 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||
<Fragment>
|
||||
<UI>
|
||||
<Dialog Id="AppBrowseDlg" Width="370" Height="270" Title="!(loc.BrowseDlg_Title)">
|
||||
<Control Id="PathEdit" Type="PathEdit" X="25" Y="202" Width="320" Height="18" Property="_BrowseProperty" Indirect="yes" />
|
||||
<Control Id="OK" Type="PushButton" X="240" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUIOK)">
|
||||
<Publish Event="SetTargetPath" Value="[_BrowseProperty]">1</Publish>
|
||||
<Publish Event="EndDialog" Value="Return">1</Publish>
|
||||
</Control>
|
||||
<Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="!(loc.WixUICancel)">
|
||||
<Publish Event="Reset" Value="0">1</Publish>
|
||||
<Publish Event="EndDialog" Value="Return">1</Publish>
|
||||
</Control>
|
||||
<Control Id="ComboLabel" Type="Text" X="25" Y="58" Width="44" Height="10" TabSkip="no" Text="!(loc.BrowseDlgComboLabel)" />
|
||||
<Control Id="DirectoryCombo" Type="DirectoryCombo" X="70" Y="55" Width="220" Height="80" Property="_BrowseProperty" Indirect="yes" Fixed="yes" Remote="yes">
|
||||
<Subscribe Event="IgnoreChange" Attribute="IgnoreChange" />
|
||||
</Control>
|
||||
<Control Id="WixUI_Bmp_Up" Type="PushButton" X="298" Y="55" Width="19" Height="19" ToolTip="!(loc.BrowseDlgWixUI_Bmp_UpTooltip)" Icon="yes" FixedSize="yes" IconSize="16" Text="!(loc.BrowseDlgWixUI_Bmp_Up)">
|
||||
<Publish Event="DirectoryListUp" Value="0">1</Publish>
|
||||
</Control>
|
||||
<Control Id="NewFolder" Type="PushButton" X="325" Y="55" Width="19" Height="19" ToolTip="!(loc.BrowseDlgNewFolderTooltip)" Icon="yes" FixedSize="yes" IconSize="16" Text="!(loc.BrowseDlgNewFolder)">
|
||||
<Publish Event="DirectoryListNew" Value="0">1</Publish>
|
||||
</Control>
|
||||
<Control Id="DirectoryList" Type="DirectoryList" X="25" Y="83" Width="320" Height="98" Property="_BrowseProperty" Sunken="yes" Indirect="yes" TabSkip="no" />
|
||||
<Control Id="PathLabel" Type="Text" X="25" Y="190" Width="320" Height="10" TabSkip="no" Text="!(loc.BrowseDlgPathLabel)" />
|
||||
<Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" TabSkip="no" Text="!(loc.BrowseDlgBannerBitmap)" />
|
||||
<Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0" />
|
||||
<Control Id="Title" Type="Text" X="15" Y="15" Width="200" Height="15" Transparent="yes" NoPrefix="yes" Text="!(loc.BrowseDlgTitle)" />
|
||||
</Dialog>
|
||||
</UI>
|
||||
</Fragment>
|
||||
</Wix>
|
||||
72
deploy/dist/wix/AppDlgSequence.wxs
vendored
72
deploy/dist/wix/AppDlgSequence.wxs
vendored
@ -1,72 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
First-time install dialog sequence:
|
||||
- WixUI_WelcomeDlg
|
||||
- WixUI_LicenseAgreementDlg
|
||||
- WixUI_InstallDirDlg
|
||||
- WixUI_VerifyReadyDlg
|
||||
- WixUI_DiskCostDlg
|
||||
Maintenance dialog sequence:
|
||||
- WixUI_MaintenanceWelcomeDlg
|
||||
- WixUI_MaintenanceTypeDlg
|
||||
- WixUI_InstallDirDlg
|
||||
- WixUI_VerifyReadyDlg
|
||||
Patch dialog sequence:
|
||||
- WixUI_WelcomeDlg
|
||||
- WixUI_VerifyReadyDlg
|
||||
-->
|
||||
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||
<Fragment>
|
||||
<UI Id="AppDlgSequence">
|
||||
<TextStyle Id="WixUI_Font_Normal" FaceName="Roboto" Size="9" />
|
||||
<TextStyle Id="WixUI_Font_Bigger" FaceName="Roboto" Size="14" />
|
||||
<TextStyle Id="WixUI_Font_Title" FaceName="Roboto" Size="12" Bold="yes" Blue="255" Red="255" Green="255"/>
|
||||
|
||||
<Property Id="DefaultUIFont" Value="WixUI_Font_Normal" />
|
||||
<Property Id="WixUI_Mode" Value="InstallDir" />
|
||||
|
||||
<DialogRef Id="BrowseDlg" />
|
||||
<DialogRef Id="DiskCostDlg" />
|
||||
<DialogRef Id="ErrorDlg" />
|
||||
<DialogRef Id="FatalError" />
|
||||
<DialogRef Id="FilesInUse" />
|
||||
<DialogRef Id="MsiRMFilesInUse" />
|
||||
<DialogRef Id="PrepareDlg" />
|
||||
<DialogRef Id="ProgressDlg" />
|
||||
<DialogRef Id="ResumeDlg" />
|
||||
<DialogRef Id="UserExit" />
|
||||
|
||||
<Publish Dialog="AppBrowseDlg" Control="OK" Event="DoAction" Value="WixUIValidatePath" Order="3">1</Publish>
|
||||
<Publish Dialog="AppBrowseDlg" Control="OK" Event="SpawnDialog" Value="InvalidDirDlg" Order="4"><![CDATA[WIXUI_INSTALLDIR_VALID<>"1"]]></Publish>
|
||||
|
||||
<Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999">1</Publish>
|
||||
<Publish Dialog="ExitDialog" Control="Finish" Event="DoAction" Value="StartGui">NOT Installed</Publish>
|
||||
|
||||
<Publish Dialog="AppWelcome" Control="Next" Event="NewDialog" Value="AppInstallDirDlg" Order="1">1</Publish>
|
||||
<Publish Dialog="AppWelcome" Control="Next" Event="NewDialog" Value="AppVerifyReadyDlg">Installed AND PATCH</Publish>
|
||||
|
||||
<Publish Dialog="AppInstallDirDlg" Control="Next" Event="SetTargetPath" Value="[WIXUI_INSTALLDIR]" Order="1">1</Publish>
|
||||
<Publish Dialog="AppInstallDirDlg" Control="Next" Event="DoAction" Value="WixUIValidatePath" Order="2">NOT WIXUI_DONTVALIDATEPATH</Publish>
|
||||
<Publish Dialog="AppInstallDirDlg" Control="Next" Event="SpawnDialog" Value="InvalidDirDlg" Order="3"><![CDATA[NOT WIXUI_DONTVALIDATEPATH AND WIXUI_INSTALLDIR_VALID<>"1"]]></Publish>
|
||||
<Publish Dialog="AppInstallDirDlg" Control="Next" Event="NewDialog" Value="AppVerifyReadyDlg" Order="4">WIXUI_DONTVALIDATEPATH OR WIXUI_INSTALLDIR_VALID="1"</Publish>
|
||||
<Publish Dialog="AppInstallDirDlg" Control="ChangeFolder" Property="_BrowseProperty" Value="[WIXUI_INSTALLDIR]" Order="1">1</Publish>
|
||||
<Publish Dialog="AppInstallDirDlg" Control="ChangeFolder" Event="SpawnDialog" Value="AppBrowseDlg" Order="2">1</Publish>
|
||||
<Publish Dialog="AppInstallDirDlg" Control="Back" Event="NewDialog" Value="AppWelcome" Order="2">1</Publish>
|
||||
|
||||
<Publish Dialog="AppVerifyReadyDlg" Control="Back" Event="NewDialog" Value="AppInstallDirDlg" Order="1">NOT Installed</Publish>
|
||||
<Publish Dialog="AppVerifyReadyDlg" Control="Back" Event="NewDialog" Value="AppMaintenanceTypeDlg" Order="2">Installed AND NOT PATCH</Publish>
|
||||
<Publish Dialog="AppVerifyReadyDlg" Control="Back" Event="NewDialog" Value="AppInstallDirDlg" Order="2">Installed AND PATCH</Publish>
|
||||
|
||||
<Publish Dialog="MaintenanceWelcomeDlg" Control="Next" Event="NewDialog" Value="AppMaintenanceTypeDlg">1</Publish>
|
||||
|
||||
<Publish Dialog="AppMaintenanceTypeDlg" Control="RepairButton" Event="NewDialog" Value="AppVerifyReadyDlg">1</Publish>
|
||||
<Publish Dialog="AppMaintenanceTypeDlg" Control="RemoveButton" Event="NewDialog" Value="AppVerifyReadyDlg">1</Publish>
|
||||
<Publish Dialog="AppMaintenanceTypeDlg" Control="Back" Event="NewDialog" Value="MaintenanceWelcomeDlg">1</Publish>
|
||||
|
||||
<Property Id="ARPNOMODIFY" Value="1" />
|
||||
</UI>
|
||||
|
||||
<UIRef Id="WixUI_Common" />
|
||||
</Fragment>
|
||||
</Wix>
|
||||
24
deploy/dist/wix/AppInstallDirDlg.wxs
vendored
24
deploy/dist/wix/AppInstallDirDlg.wxs
vendored
@ -1,24 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||
<?include Include.wxi?>
|
||||
<Fragment>
|
||||
<UI Id="AppInstallDirDlg">
|
||||
<Dialog Id="AppInstallDirDlg" Width="370" Height="270" Title="!(loc.InstallDirDlg_Title)">
|
||||
<Control Id="Title" Type="Text" X="15" Y="15" Width="200" Height="15" Transparent="yes" NoPrefix="yes" Text="!(loc.InstallDirDlgTitle)" />
|
||||
|
||||
<Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUINext)" />
|
||||
<Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="!(loc.WixUIBack)" />
|
||||
<Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="!(loc.WixUICancel)">
|
||||
<Publish Event="SpawnDialog" Value="CancelDlg" />
|
||||
</Control>
|
||||
|
||||
<Control Id="InstallDirDlgBackground" Type="Bitmap" X="0" Y="0" Width="370" Height="234" TabSkip="no" Text="[CommonBackground]" />
|
||||
<Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0" />
|
||||
|
||||
<Control Id="FolderLabel" Transparent="yes" Type="Text" X="20" Y="70" Width="290" Height="30" NoPrefix="yes" Text="!(loc.InstallDirDlgFolderLabel)" />
|
||||
<Control Id="Folder" Type="PathEdit" X="20" Y="90" Width="320" Height="18" Property="WIXUI_INSTALLDIR" Indirect="yes" />
|
||||
<Control Id="ChangeFolder" Type="PushButton" X="20" Y="112" Width="56" Height="17" Text="!(loc.InstallDirDlgChange)" />
|
||||
</Dialog>
|
||||
</UI>
|
||||
</Fragment>
|
||||
</Wix>
|
||||
58
deploy/dist/wix/AppMaintenanceTypeDlg.wxs
vendored
58
deploy/dist/wix/AppMaintenanceTypeDlg.wxs
vendored
@ -1,58 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
|
||||
The use and distribution terms for this software are covered by the
|
||||
Common Public License 1.0 (http://opensource.org/licenses/cpl1.0.php)
|
||||
which can be found in the file CPL.TXT at the root of this distribution.
|
||||
By using this software in any fashion, you are agreeing to be bound by
|
||||
the terms of this license.
|
||||
|
||||
You must not remove this notice, or any other, from this software.
|
||||
-->
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||
<Fragment>
|
||||
<UI>
|
||||
<Dialog Id="AppMaintenanceTypeDlg" Width="370" Height="270" Title="!(loc.MaintenanceTypeDlg_Title)">
|
||||
<Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="234" TabSkip="no" Text="[CommonBackground]" />
|
||||
<Control Id="ChangeButton" Type="PushButton" X="40" Y="65" Width="80" Height="17" ToolTip="!(loc.MaintenanceTypeDlgChangeButtonTooltip)" Default="yes" Text="!(loc.MaintenanceTypeDlgChangeButton)">
|
||||
<Publish Property="WixUI_InstallMode" Value="Change">1</Publish>
|
||||
<Condition Action="disable">ARPNOMODIFY</Condition>
|
||||
</Control>
|
||||
<Control Id="ChangeText" Transparent="yes" Type="Text" X="60" Y="85" Width="280" Height="20" Text="!(loc.MaintenanceTypeDlgChangeText)">
|
||||
<Condition Action="hide">ARPNOMODIFY</Condition>
|
||||
</Control>
|
||||
<Control Id="ChangeDisabledText" Transparent="yes" Type="Text" X="60" Y="85" Width="280" Height="20" NoPrefix="yes" Text="!(loc.MaintenanceTypeDlgChangeDisabledText)" Hidden="yes">
|
||||
<Condition Action="show">ARPNOMODIFY</Condition>
|
||||
</Control>
|
||||
<Control Id="RepairButton" Type="PushButton" X="40" Y="118" Width="80" Height="17" ToolTip="!(loc.MaintenanceTypeDlgRepairButtonTooltip)" Text="!(loc.MaintenanceTypeDlgRepairButton)">
|
||||
<Publish Property="WixUI_InstallMode" Value="Repair">1</Publish>
|
||||
<Condition Action="disable">ARPNOREPAIR</Condition>
|
||||
</Control>
|
||||
<Control Id="RepairText" Transparent="yes" Type="Text" X="60" Y="138" Width="280" Height="30" Text="!(loc.MaintenanceTypeDlgRepairText)">
|
||||
<Condition Action="hide">ARPNOREPAIR</Condition>
|
||||
</Control>
|
||||
<Control Id="RepairDisabledText" Transparent="yes" Type="Text" X="60" Y="138" Width="280" Height="30" NoPrefix="yes" Text="!(loc.MaintenanceTypeDlgRepairDisabledText)" Hidden="yes">
|
||||
<Condition Action="show">ARPNOREPAIR</Condition>
|
||||
</Control>
|
||||
<Control Id="RemoveButton" Type="PushButton" X="40" Y="171" Width="80" Height="17" ToolTip="!(loc.MaintenanceTypeDlgRemoveButtonTooltip)" Text="!(loc.MaintenanceTypeDlgRemoveButton)">
|
||||
<Publish Property="WixUI_InstallMode" Value="Remove">1</Publish>
|
||||
<Condition Action="disable">ARPNOREMOVE</Condition>
|
||||
</Control>
|
||||
<Control Id="RemoveText" Transparent="yes" Type="Text" X="60" Y="191" Width="280" Height="20" NoPrefix="yes" Text="!(loc.MaintenanceTypeDlgRemoveText)">
|
||||
<Condition Action="hide">ARPNOREMOVE</Condition>
|
||||
</Control>
|
||||
<Control Id="RemoveDisabledText" Transparent="yes" Type="Text" X="60" Y="191" Width="280" Height="20" NoPrefix="yes" Text="!(loc.MaintenanceTypeDlgRemoveDisabledText)" Hidden="yes">
|
||||
<Condition Action="show">ARPNOREMOVE</Condition>
|
||||
</Control>
|
||||
<Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="!(loc.WixUIBack)" />
|
||||
<Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Disabled="yes" Text="!(loc.WixUINext)" />
|
||||
<Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="!(loc.WixUICancel)">
|
||||
<Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
|
||||
</Control>
|
||||
<Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0" />
|
||||
<Control Id="Title" Type="Text" X="15" Y="15" Width="340" Height="15" Transparent="yes" NoPrefix="yes" Text="!(loc.MaintenanceTypeDlgTitle)" />
|
||||
</Dialog>
|
||||
</UI>
|
||||
</Fragment>
|
||||
</Wix>
|
||||
140
deploy/dist/wix/AppVerifyReadyDlg.wxs
vendored
140
deploy/dist/wix/AppVerifyReadyDlg.wxs
vendored
@ -1,140 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||
<?include Include.wxi?>
|
||||
<Fragment>
|
||||
<UI>
|
||||
<Dialog Id="AppVerifyReadyDlg" Width="370" Height="270" Title="!(loc.VerifyReadyDlg_Title)" TrackDiskSpace="yes">
|
||||
<Control Id="Install" Type="PushButton" ElevationShield="yes" X="212" Y="243" Width="80" Height="17" Default="yes" Hidden="yes" Disabled="yes" Text="!(loc.VerifyReadyDlgInstall)">
|
||||
<Condition Action="show">NOT Installed AND ALLUSERS</Condition>
|
||||
<Condition Action="enable">NOT Installed</Condition>
|
||||
<Condition Action="default">NOT Installed</Condition>
|
||||
<Publish Event="EndDialog" Value="Return"><![CDATA[OutOfDiskSpace <> 1]]></Publish>
|
||||
<Publish Event="SpawnDialog" Value="OutOfRbDiskDlg">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND (PROMPTROLLBACKCOST="P" OR NOT PROMPTROLLBACKCOST)</Publish>
|
||||
<Publish Event="EndDialog" Value="Return">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
|
||||
<Publish Event="EnableRollback" Value="False">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
|
||||
<Publish Event="SpawnDialog" Value="OutOfDiskDlg">(OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 1) OR (OutOfDiskSpace = 1 AND PROMPTROLLBACKCOST="F")</Publish>
|
||||
</Control>
|
||||
<Control Id="InstallNoShield" Type="PushButton" ElevationShield="no" X="212" Y="243" Width="80" Height="17" Default="yes" Hidden="yes" Disabled="yes" Text="!(loc.VerifyReadyDlgInstall)">
|
||||
<Condition Action="show">NOT Installed AND NOT ALLUSERS</Condition>
|
||||
<Condition Action="enable">NOT Installed</Condition>
|
||||
<Condition Action="default">NOT Installed</Condition>
|
||||
<Publish Event="EndDialog" Value="Return"><![CDATA[OutOfDiskSpace <> 1]]></Publish>
|
||||
<Publish Event="SpawnDialog" Value="OutOfRbDiskDlg">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND (PROMPTROLLBACKCOST="P" OR NOT PROMPTROLLBACKCOST)</Publish>
|
||||
<Publish Event="EndDialog" Value="Return">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
|
||||
<Publish Event="EnableRollback" Value="False">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
|
||||
<Publish Event="SpawnDialog" Value="OutOfDiskDlg">(OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 1) OR (OutOfDiskSpace = 1 AND PROMPTROLLBACKCOST="F")</Publish>
|
||||
</Control>
|
||||
<Control Id="Change" Type="PushButton" ElevationShield="yes" X="212" Y="243" Width="80" Height="17" Default="yes" Hidden="yes" Disabled="yes" Text="!(loc.VerifyReadyDlgChange)">
|
||||
<Condition Action="show">WixUI_InstallMode = "Change" AND ALLUSERS AND (ADDLOCAL OR REMOVE)</Condition>
|
||||
<Condition Action="enable">WixUI_InstallMode = "Change"</Condition>
|
||||
<Condition Action="default">WixUI_InstallMode = "Change"</Condition>
|
||||
<Publish Event="EndDialog" Value="Return"><![CDATA[OutOfDiskSpace <> 1]]></Publish>
|
||||
<Publish Event="SpawnDialog" Value="OutOfRbDiskDlg">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND (PROMPTROLLBACKCOST="P" OR NOT PROMPTROLLBACKCOST)</Publish>
|
||||
<Publish Event="EndDialog" Value="Return">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
|
||||
<Publish Event="EnableRollback" Value="False">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
|
||||
<Publish Event="SpawnDialog" Value="OutOfDiskDlg">(OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 1) OR (OutOfDiskSpace = 1 AND PROMPTROLLBACKCOST="F")</Publish>
|
||||
</Control>
|
||||
<Control Id="ChangeNoShield" Type="PushButton" ElevationShield="no" X="212" Y="243" Width="80" Height="17" Default="yes" Hidden="yes" Disabled="yes" Text="!(loc.VerifyReadyDlgChange)">
|
||||
<Condition Action="show">WixUI_InstallMode = "Change" AND (NOT ALLUSERS OR (NOT ADDLOCAL AND NOT REMOVE))</Condition>
|
||||
<Condition Action="enable">WixUI_InstallMode = "Change"</Condition>
|
||||
<Condition Action="default">WixUI_InstallMode = "Change"</Condition>
|
||||
<Publish Event="EndDialog" Value="Return"><![CDATA[OutOfDiskSpace <> 1]]></Publish>
|
||||
<Publish Event="SpawnDialog" Value="OutOfRbDiskDlg">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND (PROMPTROLLBACKCOST="P" OR NOT PROMPTROLLBACKCOST)</Publish>
|
||||
<Publish Event="EndDialog" Value="Return">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
|
||||
<Publish Event="EnableRollback" Value="False">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
|
||||
<Publish Event="SpawnDialog" Value="OutOfDiskDlg">(OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 1) OR (OutOfDiskSpace = 1 AND PROMPTROLLBACKCOST="F")</Publish>
|
||||
</Control>
|
||||
<Control Id="Repair" Type="PushButton" X="212" Y="243" Width="80" Height="17" Default="yes" Hidden="yes" Disabled="yes" Text="!(loc.VerifyReadyDlgRepair)">
|
||||
<Condition Action="show">WixUI_InstallMode = "Repair"</Condition>
|
||||
<Condition Action="enable">WixUI_InstallMode = "Repair"</Condition>
|
||||
<Condition Action="default">WixUI_InstallMode = "Repair"</Condition>
|
||||
<Publish Event="ReinstallMode" Value="ecmus"><![CDATA[OutOfDiskSpace <> 1]]></Publish>
|
||||
<Publish Event="Reinstall" Value="All"><![CDATA[OutOfDiskSpace <> 1]]></Publish>
|
||||
<Publish Event="EndDialog" Value="Return"><![CDATA[OutOfDiskSpace <> 1]]></Publish>
|
||||
<Publish Event="SpawnDialog" Value="OutOfRbDiskDlg">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND (PROMPTROLLBACKCOST="P" OR NOT PROMPTROLLBACKCOST)</Publish>
|
||||
<Publish Event="EndDialog" Value="Return">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
|
||||
<Publish Event="EnableRollback" Value="False">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
|
||||
<Publish Event="SpawnDialog" Value="OutOfDiskDlg">(OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 1) OR (OutOfDiskSpace = 1 AND PROMPTROLLBACKCOST="F")</Publish>
|
||||
</Control>
|
||||
<Control Id="Remove" Type="PushButton" ElevationShield="yes" X="212" Y="243" Width="80" Height="17" Hidden="yes" Disabled="yes" Text="!(loc.VerifyReadyDlgRemove)">
|
||||
<Condition Action="show">WixUI_InstallMode = "Remove" AND ALLUSERS</Condition>
|
||||
<Condition Action="enable">WixUI_InstallMode = "Remove"</Condition>
|
||||
<Publish Event="Remove" Value="All"><![CDATA[OutOfDiskSpace <> 1]]></Publish>
|
||||
<Publish Event="EndDialog" Value="Return"><![CDATA[OutOfDiskSpace <> 1]]></Publish>
|
||||
<Publish Event="SpawnDialog" Value="OutOfRbDiskDlg">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND (PROMPTROLLBACKCOST="P" OR NOT PROMPTROLLBACKCOST)</Publish>
|
||||
<Publish Event="EndDialog" Value="Return">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
|
||||
<Publish Event="EnableRollback" Value="False">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
|
||||
<Publish Event="SpawnDialog" Value="OutOfDiskDlg">(OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 1) OR (OutOfDiskSpace = 1 AND PROMPTROLLBACKCOST="F")</Publish>
|
||||
</Control>
|
||||
<Control Id="RemoveNoShield" Type="PushButton" ElevationShield="no" X="212" Y="243" Width="80" Height="17" Hidden="yes" Disabled="yes" Text="!(loc.VerifyReadyDlgRemove)">
|
||||
<Condition Action="show">WixUI_InstallMode = "Remove" AND NOT ALLUSERS</Condition>
|
||||
<Condition Action="enable">WixUI_InstallMode = "Remove"</Condition>
|
||||
<Publish Event="Remove" Value="All"><![CDATA[OutOfDiskSpace <> 1]]></Publish>
|
||||
<Publish Event="EndDialog" Value="Return"><![CDATA[OutOfDiskSpace <> 1]]></Publish>
|
||||
<Publish Event="SpawnDialog" Value="OutOfRbDiskDlg">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND (PROMPTROLLBACKCOST="P" OR NOT PROMPTROLLBACKCOST)</Publish>
|
||||
<Publish Event="EndDialog" Value="Return">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
|
||||
<Publish Event="EnableRollback" Value="False">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
|
||||
<Publish Event="SpawnDialog" Value="OutOfDiskDlg">(OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 1) OR (OutOfDiskSpace = 1 AND PROMPTROLLBACKCOST="F")</Publish>
|
||||
</Control>
|
||||
<Control Id="Update" Type="PushButton" ElevationShield="yes" X="212" Y="243" Width="80" Height="17" Hidden="yes" Disabled="yes" Text="!(loc.VerifyReadyDlgUpdate)">
|
||||
<Condition Action="show">WixUI_InstallMode = "Update" AND ALLUSERS</Condition>
|
||||
<Condition Action="enable">WixUI_InstallMode = "Update"</Condition>
|
||||
<Publish Event="EndDialog" Value="Return"><![CDATA[OutOfDiskSpace <> 1]]></Publish>
|
||||
<Publish Event="SpawnDialog" Value="OutOfRbDiskDlg">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND (PROMPTROLLBACKCOST="P" OR NOT PROMPTROLLBACKCOST)</Publish>
|
||||
<Publish Event="EndDialog" Value="Return">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
|
||||
<Publish Event="EnableRollback" Value="False">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
|
||||
<Publish Event="SpawnDialog" Value="OutOfDiskDlg">(OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 1) OR (OutOfDiskSpace = 1 AND PROMPTROLLBACKCOST="F")</Publish>
|
||||
</Control>
|
||||
<Control Id="UpdateNoShield" Type="PushButton" ElevationShield="no" X="212" Y="243" Width="80" Height="17" Hidden="yes" Disabled="yes" Text="!(loc.VerifyReadyDlgUpdate)">
|
||||
<Condition Action="show">WixUI_InstallMode = "Update" AND NOT ALLUSERS</Condition>
|
||||
<Condition Action="enable">WixUI_InstallMode = "Update"</Condition>
|
||||
<Publish Event="EndDialog" Value="Return"><![CDATA[OutOfDiskSpace <> 1]]></Publish>
|
||||
<Publish Event="SpawnDialog" Value="OutOfRbDiskDlg">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND (PROMPTROLLBACKCOST="P" OR NOT PROMPTROLLBACKCOST)</Publish>
|
||||
<Publish Event="EndDialog" Value="Return">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
|
||||
<Publish Event="EnableRollback" Value="False">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
|
||||
<Publish Event="SpawnDialog" Value="OutOfDiskDlg">(OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 1) OR (OutOfDiskSpace = 1 AND PROMPTROLLBACKCOST="F")</Publish>
|
||||
</Control>
|
||||
|
||||
<Control Id="InstallTitle" Type="Text" X="15" Y="15" Width="300" Height="15" Transparent="yes" NoPrefix="yes" Hidden="yes" Text="{\WixUI_Font_Title}Ready to install">
|
||||
<Condition Action="show">NOT Installed</Condition>
|
||||
</Control>
|
||||
<Control Id="InstallText" Transparent="yes" Type="Text" X="25" Y="70" Width="320" Height="80" Hidden="yes" Text="!(loc.VerifyReadyDlgInstallText)">
|
||||
<Condition Action="show">NOT Installed</Condition>
|
||||
</Control>
|
||||
<Control Id="ChangeTitle" Type="Text" X="15" Y="15" Width="300" Height="15" Transparent="yes" NoPrefix="yes" Hidden="yes" Text="!(loc.VerifyReadyDlgChangeTitle)">
|
||||
<Condition Action="show">WixUI_InstallMode = "Change"</Condition>
|
||||
</Control>
|
||||
<Control Id="ChangeText" Transparent="yes" Type="Text" X="25" Y="70" Width="320" Height="80" Hidden="yes" Text="!(loc.VerifyReadyDlgChangeText)">
|
||||
<Condition Action="show">WixUI_InstallMode = "Change"</Condition>
|
||||
</Control>
|
||||
<Control Id="RepairTitle" Type="Text" X="15" Y="15" Width="300" Height="15" Transparent="yes" NoPrefix="yes" Hidden="yes" Text="!(loc.VerifyReadyDlgRepairTitle)">
|
||||
<Condition Action="show">WixUI_InstallMode = "Repair"</Condition>
|
||||
</Control>
|
||||
<Control Id="RepairText" Transparent="yes" Type="Text" X="25" Y="70" Width="320" Height="80" Hidden="yes" NoPrefix="yes" Text="!(loc.VerifyReadyDlgRepairText)">
|
||||
<Condition Action="show">WixUI_InstallMode = "Repair"</Condition>
|
||||
</Control>
|
||||
<Control Id="RemoveTitle" Type="Text" X="15" Y="15" Width="300" Height="15" Transparent="yes" NoPrefix="yes" Hidden="yes" Text="!(loc.VerifyReadyDlgRemoveTitle)">
|
||||
<Condition Action="show">WixUI_InstallMode = "Remove"</Condition>
|
||||
</Control>
|
||||
<Control Id="RemoveText" Transparent="yes" Type="Text" X="25" Y="70" Width="320" Height="80" Hidden="yes" NoPrefix="yes" Text="!(loc.VerifyReadyDlgRemoveText)">
|
||||
<Condition Action="show">WixUI_InstallMode = "Remove"</Condition>
|
||||
</Control>
|
||||
<Control Id="UpdateTitle" Type="Text" X="15" Y="15" Width="300" Height="15" Transparent="yes" NoPrefix="yes" Hidden="yes" Text="!(loc.VerifyReadyDlgUpdateTitle)">
|
||||
<Condition Action="show">WixUI_InstallMode = "Update"</Condition>
|
||||
</Control>
|
||||
<Control Id="UpdateText" Transparent="yes" Type="Text" X="25" Y="70" Width="320" Height="80" Hidden="yes" NoPrefix="yes" Text="!(loc.VerifyReadyDlgUpdateText)">
|
||||
<Condition Action="show">WixUI_InstallMode = "Update"</Condition>
|
||||
</Control>
|
||||
|
||||
<Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="!(loc.WixUICancel)">
|
||||
<Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
|
||||
</Control>
|
||||
<Control Id="Back" Type="PushButton" X="156" Y="243" Width="56" Height="17" Text="!(loc.WixUIBack)">
|
||||
<Condition Action="default">WixUI_InstallMode = "Remove"</Condition>
|
||||
</Control>
|
||||
<Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="234" TabSkip="no" Text="[CommonBackground]" />
|
||||
<Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0" />
|
||||
</Dialog>
|
||||
</UI>
|
||||
</Fragment>
|
||||
</Wix>
|
||||
29
deploy/dist/wix/AppWelcome.wxs
vendored
29
deploy/dist/wix/AppWelcome.wxs
vendored
@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
|
||||
|
||||
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||
<?include Include.wxi?>
|
||||
<Fragment>
|
||||
<UI Id="AppWelcome">
|
||||
<Property Id="AppWelcomeBackground">welcome_background</Property>
|
||||
<Binary Id="welcome_background" SourceFile="$(var.DeployResDir)\dist\wix\images\welcome_background.png"/>
|
||||
|
||||
<Dialog Id="AppWelcome" Width="370" Height="270" Title="!(loc.WelcomeDlg_Title)">
|
||||
<Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUINext)">
|
||||
<Publish Property="WixUI_InstallMode" Value="Update">Installed AND PATCH</Publish>
|
||||
</Control>
|
||||
<Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="!(loc.WixUICancel)">
|
||||
<Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
|
||||
</Control>
|
||||
<Control Id="Bitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="234" TabSkip="no" Text="[AppWelcomeBackground]" />
|
||||
<Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Disabled="yes" Text="!(loc.WixUIBack)" />
|
||||
<Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0" />
|
||||
</Dialog>
|
||||
|
||||
<InstallUISequence>
|
||||
<Show Dialog="AppWelcome" Before="ProgressDlg" Overridable="yes">NOT Installed OR PATCH</Show>
|
||||
</InstallUISequence>
|
||||
</UI>
|
||||
</Fragment>
|
||||
</Wix>
|
||||
72
deploy/dist/wix/DeskflowDlgSequence.wxs
vendored
72
deploy/dist/wix/DeskflowDlgSequence.wxs
vendored
@ -1,72 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
First-time install dialog sequence:
|
||||
- WixUI_WelcomeDlg
|
||||
- WixUI_LicenseAgreementDlg
|
||||
- WixUI_InstallDirDlg
|
||||
- WixUI_VerifyReadyDlg
|
||||
- WixUI_DiskCostDlg
|
||||
Maintenance dialog sequence:
|
||||
- WixUI_MaintenanceWelcomeDlg
|
||||
- WixUI_MaintenanceTypeDlg
|
||||
- WixUI_InstallDirDlg
|
||||
- WixUI_VerifyReadyDlg
|
||||
Patch dialog sequence:
|
||||
- WixUI_WelcomeDlg
|
||||
- WixUI_VerifyReadyDlg
|
||||
-->
|
||||
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||
<Fragment>
|
||||
<UI Id="DeskflowDlgSequence">
|
||||
<TextStyle Id="WixUI_Font_Normal" FaceName="Roboto" Size="9" />
|
||||
<TextStyle Id="WixUI_Font_Bigger" FaceName="Roboto" Size="14" />
|
||||
<TextStyle Id="WixUI_Font_Title" FaceName="Roboto" Size="12" Bold="yes" Blue="255" Red="255" Green="255"/>
|
||||
|
||||
<Property Id="DefaultUIFont" Value="WixUI_Font_Normal" />
|
||||
<Property Id="WixUI_Mode" Value="InstallDir" />
|
||||
|
||||
<DialogRef Id="BrowseDlg" />
|
||||
<DialogRef Id="DiskCostDlg" />
|
||||
<DialogRef Id="ErrorDlg" />
|
||||
<DialogRef Id="FatalError" />
|
||||
<DialogRef Id="FilesInUse" />
|
||||
<DialogRef Id="MsiRMFilesInUse" />
|
||||
<DialogRef Id="PrepareDlg" />
|
||||
<DialogRef Id="ProgressDlg" />
|
||||
<DialogRef Id="ResumeDlg" />
|
||||
<DialogRef Id="UserExit" />
|
||||
|
||||
<Publish Dialog="DeskflowBrowseDlg" Control="OK" Event="DoAction" Value="WixUIValidatePath" Order="3">1</Publish>
|
||||
<Publish Dialog="DeskflowBrowseDlg" Control="OK" Event="SpawnDialog" Value="InvalidDirDlg" Order="4"><![CDATA[WIXUI_INSTALLDIR_VALID<>"1"]]></Publish>
|
||||
|
||||
<Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999">1</Publish>
|
||||
<Publish Dialog="ExitDialog" Control="Finish" Event="DoAction" Value="StartGui">NOT Installed</Publish>
|
||||
|
||||
<Publish Dialog="DeskflowWelcome" Control="Next" Event="NewDialog" Value="DeskflowInstallDirDlg" Order="1">1</Publish>
|
||||
<Publish Dialog="DeskflowWelcome" Control="Next" Event="NewDialog" Value="DeskflowVerifyReadyDlg">Installed AND PATCH</Publish>
|
||||
|
||||
<Publish Dialog="DeskflowInstallDirDlg" Control="Next" Event="SetTargetPath" Value="[WIXUI_INSTALLDIR]" Order="1">1</Publish>
|
||||
<Publish Dialog="DeskflowInstallDirDlg" Control="Next" Event="DoAction" Value="WixUIValidatePath" Order="2">NOT WIXUI_DONTVALIDATEPATH</Publish>
|
||||
<Publish Dialog="DeskflowInstallDirDlg" Control="Next" Event="SpawnDialog" Value="InvalidDirDlg" Order="3"><![CDATA[NOT WIXUI_DONTVALIDATEPATH AND WIXUI_INSTALLDIR_VALID<>"1"]]></Publish>
|
||||
<Publish Dialog="DeskflowInstallDirDlg" Control="Next" Event="NewDialog" Value="DeskflowVerifyReadyDlg" Order="4">WIXUI_DONTVALIDATEPATH OR WIXUI_INSTALLDIR_VALID="1"</Publish>
|
||||
<Publish Dialog="DeskflowInstallDirDlg" Control="ChangeFolder" Property="_BrowseProperty" Value="[WIXUI_INSTALLDIR]" Order="1">1</Publish>
|
||||
<Publish Dialog="DeskflowInstallDirDlg" Control="ChangeFolder" Event="SpawnDialog" Value="DeskflowBrowseDlg" Order="2">1</Publish>
|
||||
<Publish Dialog="DeskflowInstallDirDlg" Control="Back" Event="NewDialog" Value="DeskflowWelcome" Order="2">1</Publish>
|
||||
|
||||
<Publish Dialog="DeskflowVerifyReadyDlg" Control="Back" Event="NewDialog" Value="DeskflowInstallDirDlg" Order="1">NOT Installed</Publish>
|
||||
<Publish Dialog="DeskflowVerifyReadyDlg" Control="Back" Event="NewDialog" Value="DeskflowMaintenanceTypeDlg" Order="2">Installed AND NOT PATCH</Publish>
|
||||
<Publish Dialog="DeskflowVerifyReadyDlg" Control="Back" Event="NewDialog" Value="DeskflowInstallDirDlg" Order="2">Installed AND PATCH</Publish>
|
||||
|
||||
<Publish Dialog="MaintenanceWelcomeDlg" Control="Next" Event="NewDialog" Value="DeskflowMaintenanceTypeDlg">1</Publish>
|
||||
|
||||
<Publish Dialog="DeskflowMaintenanceTypeDlg" Control="RepairButton" Event="NewDialog" Value="DeskflowVerifyReadyDlg">1</Publish>
|
||||
<Publish Dialog="DeskflowMaintenanceTypeDlg" Control="RemoveButton" Event="NewDialog" Value="DeskflowVerifyReadyDlg">1</Publish>
|
||||
<Publish Dialog="DeskflowMaintenanceTypeDlg" Control="Back" Event="NewDialog" Value="MaintenanceWelcomeDlg">1</Publish>
|
||||
|
||||
<Property Id="ARPNOMODIFY" Value="1" />
|
||||
</UI>
|
||||
|
||||
<UIRef Id="WixUI_Common" />
|
||||
</Fragment>
|
||||
</Wix>
|
||||
23
deploy/dist/wix/Include.wxi.in
vendored
23
deploy/dist/wix/Include.wxi.in
vendored
@ -1,23 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Include>
|
||||
<?define AppId="deskflow"?>
|
||||
<?define Name="Deskflow"?>
|
||||
<?define Version="@DESKFLOW_VERSION@"?>
|
||||
<?define Author="Deskflow"?>
|
||||
<?define BinDir="@CMAKE_RUNTIME_OUTPUT_DIRECTORY@"?>
|
||||
<?define ProjectIcon="@CMAKE_SOURCE_DIR@/src/gui/src/deskflow.ico"?>
|
||||
<?define DeployResDir="@CMAKE_SOURCE_DIR@/deploy"?>
|
||||
<?define QtDir="@QT_PATH@"?>
|
||||
<?define QtBinDir="$(var.QtDir)\bin"?>
|
||||
<?define ProgramFilesFolder="ProgramFiles64Folder"?>
|
||||
<?define PlatformSimpleName="64-bit"?>
|
||||
<?define UpgradeGuid="@CPACK_WIX_UPGRADE_GUID@"?>
|
||||
<?define QtPluginsPath="$(var.QtDir)\plugins"?>
|
||||
<?define OpenSslExeDir="@OPENSSL_EXE_DIR@"?>
|
||||
<?define OpenSslDllDir="@OPENSSL_ROOT_DIR@/bin"?>
|
||||
<?define GuiBin="deskflow.exe"?>
|
||||
<?define ServerBin="deskflow-server.exe"?>
|
||||
<?define ClientBin="deskflow-client.exe"?>
|
||||
<?define CoreBin="deskflow-core.exe"?>
|
||||
<?define DaemonBin="deskflow-daemon.exe"?>
|
||||
</Include>
|
||||
25
deploy/dist/wix/Installer.sln
vendored
25
deploy/dist/wix/Installer.sln
vendored
@ -1,25 +0,0 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.29411.108
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "Installer", "Installer.wixproj", "{D4BA9F39-6A35-4C8F-9CB2-67FCBE5CAB17}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x64 = Debug|x64
|
||||
Release|x64 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{D4BA9F39-6A35-4C8F-9CB2-67FCBE5CAB17}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{D4BA9F39-6A35-4C8F-9CB2-67FCBE5CAB17}.Debug|x64.Build.0 = Debug|x64
|
||||
{D4BA9F39-6A35-4C8F-9CB2-67FCBE5CAB17}.Release|x64.ActiveCfg = Release|x64
|
||||
{D4BA9F39-6A35-4C8F-9CB2-67FCBE5CAB17}.Release|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {2E0AA1C9-0F14-4FE4-8F18-430484EFBACE}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
41
deploy/dist/wix/Installer.wixproj
vendored
41
deploy/dist/wix/Installer.wixproj
vendored
@ -1,41 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0"
|
||||
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ProductVersion>3.11</ProductVersion>
|
||||
<ProjectGuid>{d4ba9f39-6a35-4c8f-9cb2-67fcbe5cab17}</ProjectGuid>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<OutputName>Installer</OutputName>
|
||||
<OutputType>Package</OutputType>
|
||||
<OutputPath>bin\$(Configuration)\</OutputPath>
|
||||
<IntermediateOutputPath>wix\obj\$(Configuration)\</IntermediateOutputPath>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="$(SolutionDir)/AppWelcome.wxs" />
|
||||
<Compile Include="$(SolutionDir)/AppInstallDirDlg.wxs" />
|
||||
<Compile Include="$(SolutionDir)/AppBrowseDlg.wxs" />
|
||||
<Compile Include="$(SolutionDir)/AppVerifyReadyDlg.wxs" />
|
||||
<Compile Include="$(SolutionDir)/AppMaintenanceTypeDlg.wxs" />
|
||||
<Compile Include="$(SolutionDir)/AppDlgSequence.wxs" />
|
||||
<Compile Include="$(SolutionDir)/Product.wxs" />
|
||||
<Content Include="$(SolutionDir)/Include.wxi" />
|
||||
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<WixExtension Include="WixUtilExtension">
|
||||
<HintPath>C:\Program Files (x86)\WiX Toolset v3.11\bin\WixUtilExtension.dll</HintPath>
|
||||
<Name>WixUtilExtension</Name>
|
||||
</WixExtension>
|
||||
<WixExtension Include="WixUIExtension">
|
||||
<HintPath>C:\Program Files (x86)\WiX Toolset v3.11\bin\WixUIExtension.dll</HintPath>
|
||||
<Name>WixUIExtension</Name>
|
||||
</WixExtension>
|
||||
<WixExtension Include="WixFirewallExtension">
|
||||
<HintPath>C:\Program Files (x86)\WiX Toolset v3.11\bin\WixFirewallExtension.dll</HintPath>
|
||||
<Name>WixFirewallExtension</Name>
|
||||
</WixExtension>
|
||||
</ItemGroup>
|
||||
<Import Project="$(WixTargetsPath)" Condition=" '$(WixTargetsPath)' != '' " />
|
||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets"
|
||||
Condition=" '$(WixTargetsPath)' == '' AND Exists('$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets') " />
|
||||
</Project>
|
||||
152
deploy/dist/wix/Product.wxs
vendored
152
deploy/dist/wix/Product.wxs
vendored
@ -1,152 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:fire="http://schemas.microsoft.com/wix/FirewallExtension" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
|
||||
<?include Include.wxi?>
|
||||
<Product Id="*" Language="1033" Manufacturer="$(var.Author)" Name="$(var.Name) ($(var.PlatformSimpleName))" UpgradeCode="$(var.UpgradeGuid)" Version="$(var.Version)">
|
||||
<Package Compressed="yes" InstallScope="perMachine" InstallerVersion="301"/>
|
||||
<MajorUpgrade DowngradeErrorMessage="A newer version of $(var.Name) is already installed."/>
|
||||
<MediaTemplate EmbedCab="yes"/>
|
||||
<!-- causes ICE61 warning, but stops user from installing many instances from nightly builds. -->
|
||||
<Upgrade Id="$(var.UpgradeGuid)">
|
||||
<UpgradeVersion Minimum="0.0.0.0" Property="UPGRADE"/>
|
||||
</Upgrade>
|
||||
<Feature Id="ProductFeature" Title="$(var.Name)">
|
||||
<ComponentGroupRef Id="ProductComponents"/>
|
||||
<ComponentGroupRef Id="OpenSSLComponents"/>
|
||||
<ComponentGroupRef Id="ProductQtStylesComponents"/>
|
||||
<ComponentGroupRef Id="ProductQtPluginComponents"/>
|
||||
<ComponentRef Id="RegistryEntries"/>
|
||||
<MergeRef Id="VC_Redist"/>
|
||||
</Feature>
|
||||
<DirectoryRef Id="TARGETDIR">
|
||||
<Component Guid="7CF3564D-1F8E-4D3D-9781-E1EE22D5BD67" Id="RegistryEntries">
|
||||
<RegistryKey Id="$(var.AppId)_server" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes" Key="Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" Root="HKLM">
|
||||
<RegistryValue Name="[INSTALLFOLDER]$(var.ServerBin)" Type="string" Value="~ HIGHDPIAWARE WIN7RTM"/>
|
||||
</RegistryKey>
|
||||
|
||||
<RegistryKey Id="$(var.AppId)_client" Root="HKLM"
|
||||
Key="Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"
|
||||
ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes">
|
||||
<RegistryValue Type="string" Name="[INSTALLFOLDER]$(var.ClientBin)" Value="~ HIGHDPIAWARE WIN7RTM"/>
|
||||
</RegistryKey>
|
||||
|
||||
<RegistryKey Id="$(var.AppId)" Root="HKLM"
|
||||
Key="Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"
|
||||
ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes">
|
||||
<RegistryValue Type="string" Name="[INSTALLFOLDER]$(var.GuiBin)" Value="~ HIGHDPIAWARE WIN7RTM"/>
|
||||
</RegistryKey>
|
||||
<!-- Windows 8 and later only -->
|
||||
<Condition><![CDATA[Installed OR (VersionNT >= 602)]]></Condition>
|
||||
</Component>
|
||||
<Merge Id="VC_Redist" SourceFile="$(var.DeployResDir)\dist\wix\msm\Microsoft_VC142_CRT_x64.msm" DiskId="1" Language="0"/>
|
||||
</DirectoryRef>
|
||||
<Property Id="CommonBackground">CommonBackground</Property>
|
||||
<Binary Id="CommonBackground" SourceFile="$(var.DeployResDir)\dist\wix\images\common_background.png"/>
|
||||
<Icon Id="AppIcon" SourceFile="$(var.ProjectIcon)"/>
|
||||
<WixVariable Id="WixUIBannerBmp" Value="$(var.DeployResDir)\dist\wix\images\banner.png"/>
|
||||
<WixVariable Id="WixUIDialogBmp" Value="$(var.DeployResDir)\dist\wix\images\dialog.png"/>
|
||||
<Property Id="ARPPRODUCTICON" Value="AppIcon"/>
|
||||
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLFOLDER"/>
|
||||
<Property Id="LEGACY_UNINSTALL_EXISTS">
|
||||
<RegistrySearch Id="LegacyRegistrySearch" Key="SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\$(var.Name)" Name="UninstallString" Root="HKLM" Type="file" Win64="no">
|
||||
<FileSearch Id="LegacyFileSearch" Name="uninstall.exe"/>
|
||||
</RegistrySearch>
|
||||
</Property>
|
||||
<Condition Message="An existing installation of $(var.Name) was detected, please uninstall it before continuing.">NOT LEGACY_UNINSTALL_EXISTS
|
||||
</Condition>
|
||||
<CustomAction ExeCommand="" FileKey="GuiProgram" Id="StartGui" Return="asyncNoWait"/>
|
||||
<UI>
|
||||
<UIRef Id="AppDlgSequence" />
|
||||
</UI>
|
||||
</Product>
|
||||
<Fragment>
|
||||
<Directory Id="TARGETDIR" Name="SourceDir">
|
||||
<Directory Id="$(var.ProgramFilesFolder)">
|
||||
<Directory Id="INSTALLFOLDER" Name="$(var.Name)">
|
||||
<Directory Id="OpenSSLDir" Name="OpenSSL"/>
|
||||
<Directory Id="PlatformsDir" Name="Platforms"/>
|
||||
<Directory Id="QTStylesDir" Name="styles"/>
|
||||
</Directory>
|
||||
</Directory>
|
||||
<Directory Id="ProgramMenuFolder"/>
|
||||
</Directory>
|
||||
</Fragment>
|
||||
<Fragment>
|
||||
<ComponentGroup Directory="INSTALLFOLDER" Id="ProductComponents">
|
||||
<Component Guid="EC9AD3B0-277C-4157-B5C8-5FD5B6A5F4AD" Id="Core">
|
||||
<File KeyPath="yes" Source="$(var.BinDir)/$(var.DaemonBin)"/>
|
||||
<ServiceInstall Description="Controls the $(var.Name) foreground processes." DisplayName="$(var.Name)" ErrorControl="normal" Id="ServiceInstall" Name="$(var.Name)" Start="auto" Type="ownProcess">
|
||||
<util:ServiceConfig FirstFailureActionType="restart" ResetPeriodInDays="1" RestartServiceDelayInSeconds="1" SecondFailureActionType="restart" ThirdFailureActionType="restart"/>
|
||||
</ServiceInstall>
|
||||
<ServiceControl Id="ServiceControl" Name="$(var.Name)" Remove="uninstall" Start="install" Stop="both"/>
|
||||
<File Source="$(var.BinDir)/$(var.ServerBin)">
|
||||
<fire:FirewallException Id="ServerFirewallException" IgnoreFailure="yes" Name="$(var.Name) Server" Scope="any"/>
|
||||
</File>
|
||||
<File Source="$(var.BinDir)/$(var.ClientBin)">
|
||||
<fire:FirewallException Id="ClientFirewallException" IgnoreFailure="yes" Name="$(var.Name) Client" Scope="any"/>
|
||||
</File>
|
||||
<File Source="$(var.OpenSslDllDir)/libssl-3-x64.dll"/>
|
||||
<File Source="$(var.OpenSslDllDir)/libcrypto-3-x64.dll"/>
|
||||
</Component>
|
||||
<Component Guid="BAC8149B-6287-45BF-9C27-43D71ED40214" Id="Gui">
|
||||
<File Id="GuiProgram" KeyPath="yes" Source="$(var.BinDir)/$(var.GuiBin)">
|
||||
<Shortcut Advertise="yes" Directory="ProgramMenuFolder" Icon="$(var.GuiBin)" Id="GuiShortcut" Name="$(var.Name)">
|
||||
<Icon Id="$(var.GuiBin)" SourceFile="$(var.ProjectIcon)"/>
|
||||
</Shortcut>
|
||||
<fire:FirewallException Id="GuiFirewallException" IgnoreFailure="yes" Name="$(var.Name)" Scope="any"/>
|
||||
</File>
|
||||
<?if $(var.Configuration) = "Debug" ?>
|
||||
<File Source="$(var.BinDir)\Qt6Cored.dll"/>
|
||||
<File Source="$(var.BinDir)\Qt6Guid.dll"/>
|
||||
<File Source="$(var.BinDir)\Qt6Networkd.dll"/>
|
||||
<File Source="$(var.BinDir)\Qt6Svgd.dll"/>
|
||||
<File Source="$(var.BinDir)\Qt6Widgetsd.dll"/>
|
||||
<File Source="$(var.BinDir)\styles\qmodernwindowsstyle.dll"/>
|
||||
<!-- HACK: Normally the C++ redistributable solves this dependency, including it can cause problems -->
|
||||
<File Source="C:\Program Files (x86)\Windows Kits\10\bin\$(var.Platform)\ucrt\ucrtbased.dll"/>
|
||||
<?else ?>
|
||||
<File Source="$(var.BinDir)\brotlicommon.dll"/>
|
||||
<File Source="$(var.BinDir)\brotlidec.dll"/>
|
||||
<File Source="$(var.BinDir)\bz2.dll"/>
|
||||
<File Source="$(var.BinDir)\double-conversion.dll"/>
|
||||
<File Source="$(var.BinDir)\freetype.dll"/>
|
||||
<File Source="$(var.BinDir)\harfbuzz.dll"/>
|
||||
<File Source="$(var.BinDir)\icudt74.dll"/>
|
||||
<File Source="$(var.BinDir)\icuin74.dll"/>
|
||||
<File Source="$(var.BinDir)\icuuc74.dll"/>
|
||||
<File Source="$(var.BinDir)\libpng16.dll"/>
|
||||
<File Source="$(var.BinDir)\pcre2-16.dll"/>
|
||||
<File Source="$(var.BinDir)\Qt6Core.dll"/>
|
||||
<File Source="$(var.BinDir)\Qt6Gui.dll"/>
|
||||
<File Source="$(var.BinDir)\Qt6Network.dll"/>
|
||||
<File Source="$(var.BinDir)\Qt6Svg.dll"/>
|
||||
<File Source="$(var.BinDir)\Qt6Widgets.dll"/>
|
||||
<File Source="$(var.BinDir)\zlib1.dll"/>
|
||||
<File Source="$(var.BinDir)\zstd.dll"/>
|
||||
<File Source="$(var.BinDir)\styles\qmodernwindowsstyle.dll"/>
|
||||
<?endif ?>
|
||||
</Component>
|
||||
</ComponentGroup>
|
||||
<ComponentGroup Directory="QTStylesDir" Id="ProductQtStylesComponents">
|
||||
<Component Guid="96E0F8D8-64FD-4CE8-94D1-F6EDCBBB4995" Id="Styles">
|
||||
<File Id="qmodernwindowsstyle" Source="$(var.BinDir)\styles\qmodernwindowsstyle.dll"/>
|
||||
</Component>
|
||||
</ComponentGroup>
|
||||
<ComponentGroup Directory="PlatformsDir" Id="ProductQtPluginComponents">
|
||||
<Component Guid="684EFA14-856B-440E-A5E6-E90E04E36B41" Id="QtPlatformPlugin">
|
||||
<?if $(var.Configuration) = "Debug" ?>
|
||||
<File Source="$(var.BinDir)\platforms\qwindowsd.dll"/>
|
||||
<?else ?>
|
||||
<File Source="$(var.BinDir)\platforms\qwindows.dll"/>
|
||||
<?endif ?>
|
||||
</Component>
|
||||
</ComponentGroup>
|
||||
<ComponentGroup Directory="OpenSSLDir" Id="OpenSSLComponents">
|
||||
<Component Guid="92648F77-65A6-4B16-AC59-A1F37BD341B1" Id="OpenSSL">
|
||||
<File Id="OpenSSLDll1" Source="$(var.OpenSslDllDir)/libcrypto-3-x64.dll"/>
|
||||
<File Id="OpenSSLDll2" Source="$(var.OpenSslDllDir)/libssl-3-x64.dll"/>
|
||||
<File Source="$(var.OpenSslExeDir)/openssl.exe"/>
|
||||
<File Source="$(var.OpenSslExeDir)/openssl.cnf"/>
|
||||
</Component>
|
||||
</ComponentGroup>
|
||||
</Fragment>
|
||||
</Wix>
|
||||
BIN
deploy/dist/wix/images/common_background.png
vendored
BIN
deploy/dist/wix/images/common_background.png
vendored
Binary file not shown.
|
Before Width: | Height: | Size: 21 KiB |
BIN
deploy/dist/wix/images/welcome_background.png
vendored
BIN
deploy/dist/wix/images/welcome_background.png
vendored
Binary file not shown.
|
Before Width: | Height: | Size: 154 KiB |
@ -1,55 +0,0 @@
|
||||
import os, base64
|
||||
|
||||
# Deskflow -- mouse and keyboard sharing utility
|
||||
# Copyright (C) 2024 Symless Ltd.
|
||||
#
|
||||
# This package is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# found in the file LICENSE that should have accompanied this file.
|
||||
#
|
||||
# This package is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
temp_path = "tmp/certificate"
|
||||
|
||||
|
||||
class Certificate:
|
||||
"""
|
||||
Installs a certificate from a base64 string, and returns the path to the certificate.
|
||||
Once the context is exited, the certificate is removed from the filesystem.
|
||||
|
||||
Example usage:
|
||||
with Certificate(base64) as cert_path:
|
||||
print(f"Certificate path: {cert_path}")
|
||||
"""
|
||||
|
||||
def __init__(self, base64, file_ext):
|
||||
self.base64 = base64
|
||||
self.temp_filename = f"{temp_path}.{file_ext}"
|
||||
|
||||
def __enter__(self):
|
||||
print(f"Decoding certificate to temporary path: {self.temp_filename}")
|
||||
try:
|
||||
cert_bytes = base64.b64decode(self.base64)
|
||||
except Exception as e:
|
||||
raise ValueError("Failed to decode certificate base64") from e
|
||||
|
||||
os.makedirs(os.path.dirname(self.temp_filename), exist_ok=True)
|
||||
with open(self.temp_filename, "wb") as cert_file:
|
||||
cert_file.write(cert_bytes)
|
||||
|
||||
return self.temp_filename
|
||||
|
||||
def __exit__(self, _exc_type, _exc_value, _traceback):
|
||||
# not strictly necessary for ci, but when run on a dev machine, it reduces the risk
|
||||
# that private keys are left on the filesystem
|
||||
print(f"Removing temporary certificate file: {self.temp_filename}")
|
||||
os.remove(self.temp_filename)
|
||||
|
||||
# propagate exceptions
|
||||
return False
|
||||
@ -14,18 +14,13 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import ctypes, sys, os, shutil, time, subprocess
|
||||
import xml.etree.ElementTree as ET
|
||||
import lib.cmd_utils as cmd_utils
|
||||
import lib.env as env
|
||||
import psutil # type: ignore
|
||||
from lib.certificate import Certificate
|
||||
import lib.colors as colors
|
||||
import lib.file_utils as file_utils
|
||||
|
||||
LOCK_FILE = "tmp/elevated.lock"
|
||||
MSBUILD_CMD = "msbuild"
|
||||
SIGNTOOL_CMD = "signtool"
|
||||
CERTUTIL_CMD = "certutil"
|
||||
RUNNER_TEMP_ENV = "RUNNER_TEMP"
|
||||
SERVICE_NOT_RUNNING_ERROR = 2
|
||||
ERROR_ACCESS_VIOLATION = 0xC0000005
|
||||
@ -100,24 +95,6 @@ def set_env_var(name, value):
|
||||
print(f"Setting environment variable: {name}={value}")
|
||||
cmd_utils.run(["setx", name, new_value], check=True, shell=True, print_cmd=True)
|
||||
|
||||
|
||||
def package(filename_base, build_dir, dist_dir):
|
||||
cert_env_key = "WINDOWS_PFX_CERTIFICATE"
|
||||
cert_base64 = env.get_env(cert_env_key, required=False)
|
||||
packager = WindowsPackager(filename_base, build_dir, dist_dir)
|
||||
|
||||
if cert_base64:
|
||||
cert_password = env.get_env("WINDOWS_PFX_PASSWORD")
|
||||
packager.sign_binaries(cert_base64, cert_password)
|
||||
|
||||
packager.build_msi()
|
||||
|
||||
if cert_base64:
|
||||
packager.sign_msi(cert_base64, cert_password)
|
||||
else:
|
||||
print(f"Skipped code signing, env var not set: {cert_env_key}")
|
||||
|
||||
|
||||
def assert_vs_cmd(cmd):
|
||||
has_cmd = cmd_utils.has_command(cmd)
|
||||
if not has_cmd:
|
||||
@ -126,76 +103,6 @@ def assert_vs_cmd(cmd):
|
||||
"re-run from 'Developer Command Prompt for VS'"
|
||||
)
|
||||
|
||||
|
||||
def run_codesign(path, cert_base64, cert_password):
|
||||
time_server = "http://timestamp.digicert.com"
|
||||
hashing_algorithm = "SHA256"
|
||||
|
||||
with Certificate(cert_base64, "pfx") as cert_path:
|
||||
print("Signing MSI installer...")
|
||||
assert_vs_cmd(SIGNTOOL_CMD)
|
||||
|
||||
# WARNING: contains private key password, never print this command
|
||||
cmd_utils.run(
|
||||
[
|
||||
SIGNTOOL_CMD,
|
||||
"sign",
|
||||
"/f",
|
||||
cert_path,
|
||||
"/p",
|
||||
cert_password,
|
||||
"/t",
|
||||
time_server,
|
||||
"/fd",
|
||||
hashing_algorithm,
|
||||
path,
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
class WindowsPackager:
|
||||
|
||||
def __init__(self, filename_base, build_dir, dist_dir):
|
||||
self.filename_base = filename_base
|
||||
self.build_dir = build_dir
|
||||
self.dist_dir = dist_dir
|
||||
self.wix_file = f"{build_dir}/installer/Installer.sln"
|
||||
self.msi_file = f"{build_dir}/installer/bin/Release/Installer.msi"
|
||||
|
||||
def build_msi(self):
|
||||
print("Building MSI installer...")
|
||||
configuration = "Release"
|
||||
platform = "x64"
|
||||
|
||||
assert_vs_cmd(MSBUILD_CMD)
|
||||
cmd_utils.run(
|
||||
[
|
||||
MSBUILD_CMD,
|
||||
self.wix_file,
|
||||
f"/p:Configuration={configuration}",
|
||||
f"/p:Platform={platform}",
|
||||
],
|
||||
shell=True,
|
||||
print_cmd=True,
|
||||
)
|
||||
|
||||
path = self.get_package_path()
|
||||
print(f"Copying MSI installer to {self.dist_dir}")
|
||||
os.makedirs(self.dist_dir, exist_ok=True)
|
||||
shutil.copy(self.msi_file, path)
|
||||
|
||||
def get_package_path(self):
|
||||
return f"{self.dist_dir}/{self.filename_base}.msi"
|
||||
|
||||
def sign_binaries(self, cert_base64, cert_password):
|
||||
exe_pattern = f"{self.build_dir}/bin/*.exe"
|
||||
run_codesign(exe_pattern, cert_base64, cert_password)
|
||||
|
||||
def sign_msi(self, cert_base64, cert_password):
|
||||
path = self.get_package_path()
|
||||
run_codesign(path, cert_base64, cert_password)
|
||||
|
||||
|
||||
class WindowsService:
|
||||
def __init__(self, script, args):
|
||||
self.script = script
|
||||
|
||||
@ -1,92 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# Deskflow -- mouse and keyboard sharing utility
|
||||
# Copyright (C) 2024 Symless Ltd.
|
||||
#
|
||||
# This package is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# found in the file LICENSE that should have accompanied this file.
|
||||
#
|
||||
# This package is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import lib.env as env
|
||||
|
||||
env.ensure_in_venv(__file__)
|
||||
|
||||
import argparse
|
||||
import platform
|
||||
from dotenv import load_dotenv # type: ignore
|
||||
|
||||
ENV_FILE = ".env"
|
||||
DEFAULT_FILENAME_BASE = "deskflow"
|
||||
DEFAULT_PROJECT_BUILD_DIR = "build"
|
||||
DEFAULT_DIST_DIR = "dist"
|
||||
DEFAULT_PACKAGE_NAME = "deskflow"
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument(
|
||||
"--package-version",
|
||||
help="Set the Package Version",
|
||||
required=True)
|
||||
parser.add_argument(
|
||||
"--leave-test-installed",
|
||||
action="store_true",
|
||||
help="Leave test package installed",
|
||||
)
|
||||
args = parser.parse_args()
|
||||
|
||||
load_dotenv(dotenv_path=ENV_FILE)
|
||||
|
||||
package(
|
||||
DEFAULT_FILENAME_BASE,
|
||||
DEFAULT_PROJECT_BUILD_DIR,
|
||||
DEFAULT_DIST_DIR,
|
||||
version=args.package_version,
|
||||
)
|
||||
|
||||
def package(
|
||||
filename_prefix,
|
||||
project_build_dir,
|
||||
dist_dir,
|
||||
version,
|
||||
):
|
||||
filename_base = get_filename_base(version, filename_prefix)
|
||||
print(f"Package filename base: {filename_base}")
|
||||
|
||||
if env.is_windows():
|
||||
windows_package(filename_base, project_build_dir, dist_dir)
|
||||
else:
|
||||
raise RuntimeError(f"Unsupported platform: {env.get_os()}")
|
||||
|
||||
|
||||
def get_filename_base(version, prefix):
|
||||
os = env.get_os()
|
||||
machine = platform.machine().lower()
|
||||
os_part = os
|
||||
|
||||
if os == "windows":
|
||||
# Some Windows users get confused by 'amd64' and think it's 'arm64',
|
||||
# so we'll use Intel's 'x64' branding (even though it's wrong).
|
||||
# Also replace 'x86_64' with 'x64' for consistency.
|
||||
os_part= "win"
|
||||
if machine == "amd64" or machine == "x86_64":
|
||||
machine = "x64"
|
||||
return f"{prefix}-{version}-{os_part}-{machine}"
|
||||
|
||||
|
||||
|
||||
def windows_package(filename_base, project_build_dir, dist_dir):
|
||||
import lib.windows as windows
|
||||
|
||||
windows.package(filename_base, project_build_dir, dist_dir)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user