Comments (26)
Thanks. I will move this into its own file on repo and make automated build from CLI.
from 1remote.
I managed to build it using the following steps
choco install visualstudio2019-workload-universal
choco install windows-sdk-10-version-1809-all
$lastSdkVersion = Get-ChildItem "${Env:ProgramFiles(x86)}\Windows Kits\10\Include" | Sort-Object -Descending | Select-Object -First 1 -Expand Name
# This is added to PRM.Core and PRemoteM csproj files
"<PropertyGroup>
<TargetPlatformVersion>${lastSdkVersion}</TargetPlatformVersion>
</PropertyGroup>"
Now, I need to test this in the sandbox and with VS express. The point is to find minimal set of dependencies.
from 1remote.
but using System.Windows is do needed in VmServerListPage.cs
That one isn't removed, those that got removed are Windows.Application.Store, System.Windows.Data, System.ComponentModel, System.Diagnostics.
and I dont think the unused usings will cause this build problem.
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.
But I have no impression of this file as well
When you deselect click once, it is added automatically by VS in csproj, but not in file system
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 may ignore the build msix package in CI, CI will only offering the WIn32 exe release.
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)
from 1remote.
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:
- Windows 10 1703 or later
- Microsoft Visual Studio 2019 (VS2019) Community or higher
with- .NET desktop development
- Windows 10 SDK (10.0.17763.0)
- .NET Framework 4.8 SDK
- .NET Framework 4.8 Dev Pack (may included in VS2019)
- (Optional) ReSharper
- (Optional) Git
Build
- Clone from GitHub.
- Open PRM solution by VS2019
- Resotre all NuGet Packages
- You can build PReomteM now.
from 1remote.
Microsoft Visual Studio 2019 (VS2019) Community or higher
This is not enough and not precise. VS comes with bunch of modules.
This one requires:
- Universal Windows Platform Development (2.5 GB with 87 packages :S)
from 1remote.
Looks like even that is not enough. Reference is still missing on all projects Windows.X
(PopUp, ApplicationModel, ...).
Old dotNet is horror.
from 1remote.
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):
from 1remote.
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. PRemoteM
Core builds fine.
I succeeded to compile it but not sure how, can't reproduce it easily.
Will look into it some more...
from 1remote.
I pushed this to branch build
.
What I am trying can be accomplished locally this way:
- Open admin powershell in root folder of the project
- Set convenience alias:
Set-Alias ib $pwd\Invoke-Build.ps1
- See available tasks with
ib ?
- Run
ib BuildInSandbox
Last command will complain if you don't have sandbox installed and show you command to do it. After that it does this:
- Opens clean environment
- Installs ALL prereq using
ib Deps
; takes around 15 minutes - It tries to build using CLI commands after that but it will fail due to SqlXml error
You 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.
choco install -y visualstudio2019community
choco install -y netfx-4.8-devpack
choco install -y visualstudio2019-workload-manageddesktop
choco install -y visualstudio2019-workload-universal
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 Build
as one step pipeline.
This can also be used to setup dev environment on empty machine.
from 1remote.
BTW, on my own machine ib Build
worked 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.pfx
is shown.
from 1remote.
This is how sandbox looks while installing stuff:
from 1remote.
I think I found the problem:
<PropertyGroup>
<GenerateManifests>true</GenerateManifests>
</PropertyGroup>
When this is set to false
SqlXml 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 Active
Just 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)
from 1remote.
Can you check if above setting works for you and if so, please commit new PRemoteM.csproj file.
from 1remote.
BTW, the SqlXML assembly is present on the SandBox system, and even if I add it among references it changes nothing....
from 1remote.
After this change only your key is problematic from CLI:
ib Build
This 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.
from 1remote.
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 Active
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\ViewModel\VmServerListPage.cs 12 Active
Those are easily fixed using VS option Remove and sort usings in 2 mentioned files, then ib Build -aReleaseType R2Win32
works. Not sure how and why unused usings influence build, but there you go....
from 1remote.
So, to recap all above :-)
- Remove unused usings in
App.xaml.cs
andViewModel\VmServerListPage.cs
- Remove click once options in
PRemoteM.csproj
and remove dummy manifest from csproj or just add it again. - Remove or fix installer project so that it doesn't require your local certificate.
from 1remote.
wow a lot of great job...
1. Remove unused usings in App.xaml.cs and ViewModel\VmServerListPage.cs
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\ViewModel\VmServerListPage.cs 12 Active
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
2. Remove click once options in PRemoteM.csproj and remove dummy manifest from csproj or just add it again.
click once options
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
manifest
[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.
from 1remote.
Installing and starting a sandbox on your local machine should be trivial
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.
I personally think almost nobody will use this from Store
Over 300 downloads from Store since 2020.12.01, impressive
from 1remote.
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.
God damn... I'll think of something... if possible.
Over 300 downloads from Store since 2020.12.01, impressive
OK, I stand corrected :)
BTW, did you fixed the manifest problem ? I see you removed unused usings.
from 1remote.
I uploaded app.manifest, did it can be treated as fixed?
https://github.com/VShawn/PRemoteM/blob/dev/PRemoteM/Properties/app.manifest
from 1remote.
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 dev
branch, and now it works up to the problem with keys which remains to be fixed.
Here is a transcript: build.log
from 1remote.
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.
from 1remote.
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:
- Interop.MSTSCLib.dll
- AxInterop.MSTSCLib.dll
from 1remote.
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.
https://github.com/mRemoteNG/mRemoteNG/blob/2cf5a4317d0cbd61c2135aa8f7ab608db2d88629/mRemoteNGInstaller/Installer/Fragments/FilesFragment.wxs#L40
from 1remote.
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.
from 1remote.
Related Issues (20)
- 0.7.2.8版本的使用.net framework多少版本 HOT 1
- Runner for VNC ``` { "$type": "ExternalRunner", "Params": {}, "ExePath": "C:\\Program Files\\WindowsApps\\16536Shawn.V.Workshop.PRemoteM_1.0.92.0_neutral__c5279amkf5zgy\\Ui\\1Remote.exe", "IsExeExisted": true, "Arguments": "%1RM_HOSTNAME%::%1RM_PORT% -password=%1RM_PASSWORD% -scale=auto", "RunWithHosting": true, "EnvironmentVariables": [ { "Key": "VNC_PASSWORD", "Value": "%1RM_PASSWORD%" } ], "Name": "TightVNC", "OwnerProtocolName": "VNC" } ``` HOT 1
- ssh do not update after tab switching HOT 1
- add treeview
- Messed up configuration UI with bulk edit
- alt + m 快速启动功能优化建议 HOT 5
- memory leak after long time RDP connection HOT 4
- 批量编辑功能希望能够添加修改协议的功能啊!也希望可以支持批量导入SSH服务器信息功能! HOT 1
- export encryption
- 1.0.0 BETA: Custom SSH Runners not working
- 1.0.0 BETA: Apps are not running HOT 2
- 1.0.0 BETA: Custom SFP Runners not working HOT 2
- 1.0.0 BETA Build 20240220-0d35db creates wrong json HOT 2
- 1.0.0 BETA adding env vars not working HOT 1
- Font size for SSH is not used when reconnecting
- rdp window can be dragged to change size HOT 1
- sftp window support local files HOT 1
- 希望增加主题根据系统主题切换
- 是否可以增加分组功能? HOT 1
- ssh window need vertical scrollbar HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from 1remote.