mirror of
https://github.com/1Remote/1Remote.git
synced 2026-04-25 05:26:04 +03:00
[GH-ISSUE #58] Automated build #2926
Labels
No labels
area-configuration
area-ct-app
area-ct-rdp
area-ct-remoteapp
area-ct-ssh
area-ct-vnc
area-launcher
area-list
area-tags
area-teamwork
bug
chore
dependencies
general-build/ci
general-performance
general-refactor
general-security
general-supportive
general-ux
meta-documentation
meta-enhancement
meta-enhancement
meta-feature
meta-help-wanted
meta-unknown-error
priority-hi
priority-low
pull-request
question
resolution-duplicate
resolution-invalid
resolution-wontfix
stale
task-put-off
task-still-considering
task-working-in-progress
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/1Remote#2926
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @majkinetor on GitHub (Jan 13, 2021).
Original GitHub issue: https://github.com/1Remote/1Remote/issues/58
Originally assigned to: @majkinetor on GitHub.
We should have document such as DEVEL.md that should provide reproducible way to setup up local environment.
It should contain machine prerequisites, along with any procedure required to build the app.
@VShawn commented on GitHub (Jan 13, 2021):
I try write a demo:
Development
PReomteM is written in the CSharp, UI power by WPF.
Environment
Here is what you need to setup a development environment:
with
Build
@majkinetor commented on GitHub (Jan 13, 2021):
Thanks. I will move this into its own file on repo and make automated build from CLI.
@majkinetor commented on GitHub (Jan 13, 2021):
This is not enough and not precise. VS comes with bunch of modules.
This one requires:
@majkinetor commented on GitHub (Jan 13, 2021):
Looks like even that is not enough. Reference is still missing on all projects
Windows.X(PopUp, ApplicationModel, ...).Old dotNet is horror.
@VShawn commented on GitHub (Jan 14, 2021):
Sorry, I forgot it needs Win10 SDK support.
Here is all I have on my workstation in company (can't find a button for turn VS2019 installer UI into english):
MY VS2019 install config.zip
@majkinetor commented on GitHub (Jan 14, 2021):
I managed to build it using the following steps
Now, I need to test this in the sandbox and with VS express. The point is to find minimal set of dependencies.
@majkinetor commented on GitHub (Jan 16, 2021):
I keep getting this error when trying to build PRemoteM in SandBox:
Unable to write manifest 'obj\Debug\PRemoteM.exe.manifest'. Could not load file or assembly 'System.Data.SqlXml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified. PRemoteMCore builds fine.
I succeeded to compile it but not sure how, can't reproduce it easily.
Will look into it some more...
@majkinetor commented on GitHub (Jan 16, 2021):
I pushed this to branch
build.What I am trying can be accomplished locally this way:
Set-Alias ib $pwd\Invoke-Build.ps1ib ?ib BuildInSandboxLast command will complain if you don't have sandbox installed and show you command to do it. After that it does this:
ib Deps; takes around 15 minutesYou can now open VS2019 in sandbox and try to build it. Project is available on Desktop.
Those are the deps so far and VS builds it after some interventions.
What is the point of all this
The point is to have locally reproducible build. This will be used in CI pipeline (on any system, not necessarily GH) instead of magic we have now. Build simply becomes
ib Deps; ib Buildas one step pipeline.This can also be used to setup dev environment on empty machine.
@majkinetor commented on GitHub (Jan 16, 2021):
BTW, on my own machine
ib Buildworked until it needed to access your private keys for installer. Build on my machine is not very relevant as I have installed tone of stuff (the same as you as shown by your screenshot, most of which are not relevant to the project).Here is the error:
(_CreateMainPackage target) -> C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VisualStudio\v16.0\AppxPackage\Microsoft.AppXPackage.Targets(4659,5): error APPX0104: Certificate file 'C:\FastToolsShared\git key\Shawn.pfx' not found. [C:\Work\PRemoteM\Installer\Installer.wapproj] C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VisualStudio\v16.0\AppxPackage\Microsoft.AppXPackage.Targets(4659,5): error APPX0107: The certificate specified is not valid for signing. For more information about valid certificates, see http://go.microsoft.com/fwlink/?LinkID=241478. [C:\Work\PRemoteM\Installer\Installer.wapproj]notice that your local folder
C:\FastToolsShared\git key\Shawn.pfxis shown.@majkinetor commented on GitHub (Jan 16, 2021):
This is how sandbox looks while installing stuff:
@majkinetor commented on GitHub (Jan 16, 2021):
I think I found the problem:
When this is set to
falseSqlXml error is no longer present. This is changed with the following option ClickOnce which is currently enabled:Since this is problematic, shell we disable it ? When one does that, it adds dummy manifest file in csproj which doesn't exist on file system and next error is:
Severity Code Description Project File Line Suppression State Error CS1926 Error opening Win32 manifest file C:\Users\WDAGUtilityAccount\Desktop\PRemoteM\PRemoteM\Properties\app.manifest -- Could not find file 'C:\Users\WDAGUtilityAccount\Desktop\PRemoteM\PRemoteM\Properties\app.manifest'. PRemoteM C:\Users\WDAGUtilityAccount\Desktop\PRemoteM\PRemoteM\CSC 1 ActiveJust by deleting Properties\app.manifest file within VS makes it work then (alternative would be to add manifest on your own in the project without any autogeneration and funky magic)
@majkinetor commented on GitHub (Jan 16, 2021):
Can you check if above setting works for you and if so, please commit new PRemoteM.csproj file.
@majkinetor commented on GitHub (Jan 16, 2021):
BTW, the SqlXML assembly is present on the SandBox system, and even if I add it among references it changes nothing....
@majkinetor commented on GitHub (Jan 16, 2021):
After this change only your key is problematic from CLI:
ib BuildThis doesn't happen when building within VS for some reason...
Maybe we could remove the installer altogether :-)
If you wanna keep that, any secrets will have to go to to specific place which is IMO something we should avoid if possible as secret will have to be obtained from some type of vault during the build.
@majkinetor commented on GitHub (Jan 16, 2021):
Found another err, this time in R2Win32 configuration (Debug works fine):
The type or namespace name 'Windows' could not be found (are you missing a using directive or an assembly reference?) PRemoteM C:\Users\WDAGUtilityAccount\Desktop\PRemoteM\PRemoteM\App.xaml.cs 9 ActiveThe type or namespace name 'Windows' could not be found (are you missing a using directive or an assembly reference?) PRemoteM C:\Users\WDAGUtilityAccount\Desktop\PRemoteM\PRemoteM\ViewModel\VmServerListPage.cs 12 ActiveThose are easily fixed using VS option Remove and sort usings in 2 mentioned files, then
ib Build -aReleaseType R2Win32works. Not sure how and why unused usings influence build, but there you go....@majkinetor commented on GitHub (Jan 16, 2021):
So, to recap all above :-)
App.xaml.csandViewModel\VmServerListPage.csPRemoteM.csprojand remove dummy manifest from csproj or just add it again.@VShawn commented on GitHub (Jan 17, 2021):
wow a lot of great job...
1. Remove unused usings in App.xaml.cs and ViewModel\VmServerListPage.cs
but using System.Windows is do needed in VmServerListPage.cs App.xaml.cs, and I dont think the unused usings will cause this build problem.
BTW here is what unused using
screenshot
2. Remove click once options in PRemoteM.csproj and remove dummy manifest from csproj or just add it again.
I dont even know when I enable it :(, And I find it would be useless in PRM according to wiki since we publish release by 7z package and Microsoft store. I will get it disabled
[WIP] I have to go out now, check it latter.
But I have no impression of this file as well
Check app.manifest by a quick view, finding it was generated by VS2019 automatically and nothing secret in it, since git ignor it for unknown reason I may push it manually
3. Remove or fix installer project so that it doesn't require your local certificate.
certificate is required so that it can publish to microsoft store, do you know how any approch for microsoft store package build into CI?
OR we can add a dummy certificate for CI build to sign msix, push it to git, with it CI can build a msix that can be insatlled only if the user install the dummy certification, check: https://www.advancedinstaller.com/install-test-certificate-from-msix.html
OR we may ignor the build msix package in CI, CI will only offering the WIn32 exe release.
@majkinetor commented on GitHub (Jan 17, 2021):
That one isn't removed, those that got removed are Windows.Application.Store, System.Windows.Data, System.ComponentModel, System.Diagnostics.
I know :-).
I am not sure what is going on here, but that action solved it for me and since its repeatable, you can try it on your own. I noticed once for that error that it was enough to just hover with mouse over the error line, and the error would disappear after that in VS error window ?! Didn't analyze it more.
When you deselect click once, it is added automatically by VS in csproj, but not in file system
I am up for that one as I personally think almost nobody will use this from Store (maybe I am wrong, but the target audience for store are not IT professionals).
OK, let me try to ignore it in CI until we have a way to use secrets vault.
BTW, Installing and starting a sandbox on your local machine should be trivial, you should check it out yourself. I will ofc document everything once its done but If you need any more info now let me know (some notes are at https://github.com/VShawn/PRemoteM/issues/58#issuecomment-761540765)
@VShawn commented on GitHub (Jan 18, 2021):
Nope, in facte It is quite difficult for me since we have a powerful firewall that make me a hard way to connect to the international networks.
Over 300 downloads from Store since 2020.12.01, impressive
@majkinetor commented on GitHub (Jan 18, 2021):
God damn... I'll think of something... if possible.
OK, I stand corrected :)
BTW, did you fixed the manifest problem ? I see you removed unused usings.
@VShawn commented on GitHub (Jan 18, 2021):
I uploaded app.manifest, did it can be treated as fixed?
https://github.com/VShawn/PRemoteM/blob/dev/PRemoteM/Properties/app.manifest
@majkinetor commented on GitHub (Jan 18, 2021):
I just checked, and now it builds in VS2019 community without problems in Debug mode. In Win32 mode there is an erorror:
I committed a fix now on
devbranch, and now it works up to the problem with keys which remains to be fixed.Here is a transcript: build.log
@majkinetor commented on GitHub (Jan 18, 2021):
OK, so this is easily fixed by excluding it from the build in that configuration:
It builds OK from the CLI after that and it shows that it doesn't build installer:
I committed a change to SLN file to
dev.So, all issues are now solved.
@majkinetor commented on GitHub (Jan 18, 2021):
So, all issues are now solved except automation of Store build but that is for some other topic.
Now I need to see how/where to host this, and to avoid provisioning each time as it takes 15-20 minutes to install all, and there is that firewall thingy...
BTW, I noticed my R2Win32 build has 2 DLLs then what you publish:
@VShawn commented on GitHub (Jan 19, 2021):
congratulations 👍 , it finally works.
Interop.MSTSCLib.dll
AxInterop.MSTSCLib.dll
this two libs is needed by RDP, genertaed by windows. All apps that support RDB need them.
github.com/mRemoteNG/mRemoteNG@2cf5a4317d/mRemoteNGInstaller/Installer/Fragments/FilesFragment.wxs (L40)@majkinetor commented on GitHub (Jan 19, 2021):
That is strange.... I don't have those 2 files in my build for some reason.
I tested RDP in Sandbox and it works without them! I searched entire sandbox drive for them and they are not there.