mirror of
https://github.com/debauchee/barrier.git
synced 2024-11-23 00:56:21 +03:00
changed installer from nsis to wix - attempting to fix "synwinxt.dll in use" error on upgrade.
This commit is contained in:
parent
64248beb4e
commit
f7445a6aea
@ -407,7 +407,7 @@ class InternalCommands:
|
||||
else:
|
||||
for target in targets:
|
||||
if generator.startswith('Visual Studio'):
|
||||
self.run_vcbuild(generator, target)
|
||||
self.run_vcbuild(generator, target, self.sln_filepath())
|
||||
elif generator == 'Xcode':
|
||||
cmd = self.xcodebuild_cmd + ' -configuration ' + target.capitalize()
|
||||
self.runBuildCommand(cmd, target)
|
||||
@ -560,12 +560,12 @@ class InternalCommands:
|
||||
# special case for version 10, use new /target:clean
|
||||
if generator.startswith('Visual Studio 10'):
|
||||
for target in targets:
|
||||
self.run_vcbuild(generator, target, '/target:clean')
|
||||
self.run_vcbuild(generator, target, self.sln_filepath(), '/target:clean')
|
||||
|
||||
# any other version of visual studio, use /clean
|
||||
elif generator.startswith('Visual Studio'):
|
||||
for target in targets:
|
||||
self.run_vcbuild(generator, target, '/clean')
|
||||
self.run_vcbuild(generator, target, self.sln_filepath(), '/clean')
|
||||
|
||||
else:
|
||||
cmd = ''
|
||||
@ -685,7 +685,8 @@ class InternalCommands:
|
||||
|
||||
elif type == 'win':
|
||||
if sys.platform == 'win32':
|
||||
self.distNsis(vcRedistDir, qtDir)
|
||||
#self.distNsis(vcRedistDir, qtDir)
|
||||
self.distWix()
|
||||
else:
|
||||
package_unsupported = True
|
||||
|
||||
@ -771,6 +772,33 @@ class InternalCommands:
|
||||
err = os.system(cmd)
|
||||
self.restore_chdir()
|
||||
|
||||
def distWix(self):
|
||||
generator = self.getGeneratorFromConfig().cmakeName
|
||||
|
||||
arch = 'x86'
|
||||
if generator.endswith('Win64'):
|
||||
arch = 'x64'
|
||||
|
||||
version = self.getVersionFromCmake()
|
||||
args = "/p:DefineConstants=\"Version=%s\"" % version
|
||||
|
||||
self.run_vcbuild(generator, 'release', 'synergy.sln', args, 'src/setup/win32/')
|
||||
|
||||
filename = "%s-%s-Windows-%s.msi" % (
|
||||
self.project,
|
||||
version,
|
||||
arch)
|
||||
|
||||
old = "bin/Release/synergy.msi"
|
||||
new = "bin/Release/%s" % (filename)
|
||||
|
||||
try:
|
||||
os.remove(new)
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
os.rename(old, new)
|
||||
|
||||
def distNsis(self, vcRedistDir, qtDir):
|
||||
|
||||
if vcRedistDir == '':
|
||||
@ -872,7 +900,7 @@ class InternalCommands:
|
||||
elif type == 'win':
|
||||
|
||||
# get platform based on last generator used
|
||||
ext = 'exe'
|
||||
ext = 'msi'
|
||||
generator = self.getGeneratorFromConfig().cmakeName
|
||||
if generator.find('Win64') != -1:
|
||||
platform = 'Windows-x64'
|
||||
@ -1167,7 +1195,7 @@ class InternalCommands:
|
||||
|
||||
return path
|
||||
|
||||
def run_vcbuild(self, generator, mode, args=''):
|
||||
def run_vcbuild(self, generator, mode, solution, args='', dir=''):
|
||||
import platform
|
||||
|
||||
# os_bits should be loaded with '32bit' or '64bit'
|
||||
@ -1189,6 +1217,7 @@ class InternalCommands:
|
||||
else: # target = 32bit
|
||||
vcvars_platform = 'x86' # 32/64bit OS building 32bit app
|
||||
config_platform = 'Win32'
|
||||
|
||||
if mode == 'release':
|
||||
config = 'Release'
|
||||
else:
|
||||
@ -1197,14 +1226,16 @@ class InternalCommands:
|
||||
if generator.startswith('Visual Studio 10'):
|
||||
cmd = ('@echo off\n'
|
||||
'call "%s" %s \n'
|
||||
'cd "%s"\n'
|
||||
'msbuild /nologo %s /p:Configuration="%s" /p:Platform="%s" "%s"'
|
||||
) % (self.get_vcvarsall(generator), vcvars_platform, args, config, config_platform, self.sln_filepath())
|
||||
) % (self.get_vcvarsall(generator), vcvars_platform, dir, args, config, config_platform, solution)
|
||||
else:
|
||||
config = config + '|' + config_platform
|
||||
cmd = ('@echo off\n'
|
||||
'call "%s" %s \n'
|
||||
'cd "%s"\n'
|
||||
'vcbuild /nologo %s "%s" "%s"'
|
||||
) % (self.get_vcvarsall(generator), vcvars_platform, args, self.sln_filepath(), config)
|
||||
) % (self.get_vcvarsall(generator), vcvars_platform, dir, args, solution, config)
|
||||
|
||||
# Generate a batch file, since we can't use environment variables directly.
|
||||
temp_bat = self.getBuildDir() + r'\vcbuild.bat'
|
||||
|
BIN
res/banner.bmp
Normal file
BIN
res/banner.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 84 KiB |
BIN
res/dialog.bmp
Normal file
BIN
res/dialog.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 451 KiB |
20
src/setup/win32/Include.wxi
Normal file
20
src/setup/win32/Include.wxi
Normal file
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Include>
|
||||
|
||||
<?define Name="Synergy" ?>
|
||||
<?define Author="The Synergy Project" ?>
|
||||
|
||||
<?define BinPath="../../../bin/$(var.Configuration)" ?>
|
||||
<?define ResPath="../../../res" ?>
|
||||
|
||||
<?ifndef Version ?>
|
||||
<?define Version="1.2.3.4" ?>
|
||||
<?endif?>
|
||||
|
||||
<?if $(var.Platform) = "x64" ?>
|
||||
<?define ProgramFilesFolder="ProgramFiles64Folder" ?>
|
||||
<?else?>
|
||||
<?define ProgramFilesFolder="ProgramFilesFolder" ?>
|
||||
<?endif?>
|
||||
|
||||
</Include>
|
97
src/setup/win32/Product.wxs
Normal file
97
src/setup/win32/Product.wxs
Normal file
@ -0,0 +1,97 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:fire="http://schemas.microsoft.com/wix/FirewallExtension">
|
||||
<?include Include.wxi?>
|
||||
|
||||
<Product Id="*" Name="$(var.Name)" Language="1033" Version="$(var.Version)" Manufacturer="$(var.Author)" UpgradeCode="E87C85E3-69FD-4F00-BBB4-69C5FD615D47">
|
||||
|
||||
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
|
||||
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
|
||||
<MediaTemplate EmbedCab="yes" />
|
||||
<UIRef Id="WixUI_InstallDir" />
|
||||
|
||||
<Feature Id="ProductFeature" Title="$(var.Name)">
|
||||
<ComponentGroupRef Id="ProductComponents" />
|
||||
</Feature>
|
||||
|
||||
<Icon Id="synergy.ico" SourceFile="$(var.ResPath)/synergy.ico"/>
|
||||
|
||||
<WixVariable Id="WixUILicenseRtf" Value="$(var.ResPath)\License.rtf" />
|
||||
<WixVariable Id="WixUIBannerBmp" Value="$(var.ResPath)\banner.bmp" />
|
||||
<WixVariable Id="WixUIDialogBmp" Value="$(var.ResPath)\dialog.bmp" />
|
||||
|
||||
<Property Id="ARPPRODUCTICON" Value="synergy.ico" />
|
||||
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLFOLDER" />
|
||||
|
||||
<Property Id="LEGACY_UNINSTALL_EXISTS">
|
||||
<RegistrySearch
|
||||
Id="LegacyRegistrySearch" Root="HKLM"
|
||||
Key="SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Synergy"
|
||||
Name="UninstallString" Win64="no" Type="file">
|
||||
<FileSearch Id="LegacyFileSearch" Name="uninstall.exe" />
|
||||
</RegistrySearch>
|
||||
</Property>
|
||||
|
||||
<Condition Message="An existing installation of [ProductName] was detected, please uninstall it before continuing.">
|
||||
NOT LEGACY_UNINSTALL_EXISTS
|
||||
</Condition>
|
||||
|
||||
<CustomAction Id="StartGui" FileKey="GuiFile" ExeCommand="" Return="asyncNoWait" />
|
||||
|
||||
<InstallExecuteSequence>
|
||||
<Custom Action="StartGui" After="InstallFinalize">NOT Installed</Custom>
|
||||
</InstallExecuteSequence>
|
||||
|
||||
</Product>
|
||||
|
||||
<Fragment>
|
||||
<Directory Id="TARGETDIR" Name="SourceDir">
|
||||
<Directory Id="$(var.ProgramFilesFolder)">
|
||||
<Directory Id="INSTALLFOLDER" Name="$(var.Name)" />
|
||||
</Directory>
|
||||
<Directory Id="ProgramMenuFolder" />
|
||||
</Directory>
|
||||
</Fragment>
|
||||
|
||||
<Fragment>
|
||||
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
|
||||
|
||||
<Component Id="Service" Guid="EC9AD3B0-277C-4157-B5C8-5FD5B6A5F4AD" >
|
||||
<File Source="$(var.BinPath)/synergyd.exe" />
|
||||
<ServiceInstall
|
||||
Id="ServiceInstall" Name="Synergy" DisplayName="[ProductName]"
|
||||
Description="Controls the [ProductName] foreground processes."
|
||||
Type="ownProcess" Start="auto" ErrorControl="normal" />
|
||||
<ServiceControl
|
||||
Id="ServiceControl" Name="Synergy"
|
||||
Start="install" Stop="both" Remove="uninstall" />
|
||||
</Component>
|
||||
|
||||
<Component Id="Core" Guid="BBF05BE7-1BC9-444B-8A24-EF35D0B44D39">
|
||||
<File Source="$(var.BinPath)/synergys.exe">
|
||||
<fire:FirewallException Id="SereverFirewallException" Name="[ProductName]" Scope="any" />
|
||||
</File>
|
||||
<File Source="$(var.BinPath)/synergyc.exe" />
|
||||
<File Source="$(var.BinPath)/syntool.exe" />
|
||||
<File Source="$(var.BinPath)/synwinhk.dll" />
|
||||
</Component>
|
||||
|
||||
<Component Id="ShellEx" Guid="77A9CA73-A5A7-4EF9-88CC-F2E014EF73EA">
|
||||
<File Source="$(var.BinPath)/synwinxt.dll" />
|
||||
<RegistryKey Root="HKCR" Key="*\shellex\DataHandler">
|
||||
<RegistryValue Value="{1BE208B1-BC21-4E39-8BB6-A5DC3F51479E}" Type="string" />
|
||||
</RegistryKey>
|
||||
<RegistryKey Root="HKCR" Key="CLSID\{1BE208B1-BC21-4E39-8BB6-A5DC3F51479E}\InprocServer32">
|
||||
<RegistryValue Value="[INSTALLFOLDER]synwinxt.dll" Type="string" />
|
||||
<RegistryValue Name="ThreadingModel" Value="Apartment" Type="string" />
|
||||
</RegistryKey>
|
||||
</Component>
|
||||
|
||||
<Component Id="Gui" Guid="BAC8149B-6287-45BF-9C27-43D71ED40214">
|
||||
<File Id="GuiFile" Source="$(var.BinPath)/synergy.exe" KeyPath="yes">
|
||||
<Shortcut Id="GuiShortcut" Name="$(var.Name)" Directory="ProgramMenuFolder" Icon="synergy.ico" Advertise="yes" />
|
||||
</File>
|
||||
</Component>
|
||||
|
||||
</ComponentGroup>
|
||||
</Fragment>
|
||||
</Wix>
|
26
src/setup/win32/synergy.sln
Normal file
26
src/setup/win32/synergy.sln
Normal file
@ -0,0 +1,26 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "synergy", "synergy.wixproj", "{D4BA9F39-6A35-4C8F-9CB2-67FCBE5CAB17}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{D4BA9F39-6A35-4C8F-9CB2-67FCBE5CAB17}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{D4BA9F39-6A35-4C8F-9CB2-67FCBE5CAB17}.Debug|x86.Build.0 = Debug|x86
|
||||
{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|x86.ActiveCfg = Release|x86
|
||||
{D4BA9F39-6A35-4C8F-9CB2-67FCBE5CAB17}.Release|x86.Build.0 = Release|x86
|
||||
{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
|
||||
EndGlobal
|
31
src/setup/win32/synergy.wixproj
Normal file
31
src/setup/win32/synergy.wixproj
Normal file
@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ProductVersion>3.8</ProductVersion>
|
||||
<ProjectGuid>{d4ba9f39-6a35-4c8f-9cb2-67fcbe5cab17}</ProjectGuid>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<OutputName>synergy</OutputName>
|
||||
<OutputType>Package</OutputType>
|
||||
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' ">$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
|
||||
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
|
||||
<OutputPath>..\..\..\bin\$(Configuration)\</OutputPath>
|
||||
<IntermediateOutputPath>..\..\..\build\wix\obj\$(Configuration)\</IntermediateOutputPath>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<WixExtension Include="WixFirewallExtension">
|
||||
<HintPath>$(WixExtDir)\WixFirewallExtension.dll</HintPath>
|
||||
<Name>WixFirewallExtension</Name>
|
||||
</WixExtension>
|
||||
<WixExtension Include="WixUtilExtension">
|
||||
<HintPath>$(WixExtDir)\WixUtilExtension.dll</HintPath>
|
||||
<Name>WixUtilExtension</Name>
|
||||
</WixExtension>
|
||||
<WixExtension Include="WixUIExtension">
|
||||
<HintPath>C:\Program Files (x86)\WiX Toolset v3.8\bin\WixUIExtension.dll</HintPath>
|
||||
<Name>WixUIExtension</Name>
|
||||
</WixExtension>
|
||||
<Compile Include="Product.wxs" />
|
||||
<Content Include="Include.wxi" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(WixTargetsPath)" />
|
||||
</Project>
|
Loading…
Reference in New Issue
Block a user