Dotfuscator Pro cant read licensing information under Jenkins buildserver - jenkins

I'm trying to get Dotfuscator Pro 4.13 to run between the unit tests and creation of installation package. The buildserver that we use is Jenkins 1.487 on Windows Server 2008 R2.
The command line for dotfuscator is very simple, i use /q and point out an xml configuration file. it works like a charm when i manually run the exact command from the commandline.
But when the same commands are executed by Jenkins the following error is logged:
Use of this software implies acceptance of accompanying license
agreement.
LICENSED TO:
SERIAL #:
You must first accept the end user license agreement before using Dotfuscator.
For some reason Dotfuscator cant read the licensing information when it's ran by Jenkins. I cant find any information about this but something tells me that this is related to the user that Jenkins is executed under. What am i missing?

As i thought it was something user related. this problem comes from that the user the Jenkins job is ran under has never accepted the Dotfuscator user agreement. There are two ways to resolve this:
Either you log into the machine with the user that is running the automated build and launch the Dotfuscator GUI and accept the license agreement
Or you can copy the following files:
C:\Users{user that installed/accepted agreement}\AppData\Local\PreEmptive Solutions\Dotfuscator Professional Edition\4.0\dfusrprf.xml
C:\Users{user that installed/accepted agreement}\AppData\Local\PreEmptive Solutions\Dotfuscator Professional Edition\4.0\dotfuscator.cfg
C:\ProgramData\PreEmptive Solutions\Dotfuscator Professional Edition\4.0\dotfuscator.dat
into the installation directory of dotfuscator (default is C:\Program Files (x86)\PreEmptive Solutions\Dotfuscator Professional Edition 4.13.0).

I had a similar problem using Team Foundation Build Service running under Windows Server 2012.
According to Dotfuscator's tech support:
To resolve this you will need to move the following files:
C:\Users{User that installed dotfuscator}\AppData\Local\PreEmptive Solutions\Dotfuscator Professional Edition\4.0\dfusrprf.xml
C:\Users{User that installed dotfuscator}\AppData\Local\PreEmptive Solutions\Dotfuscator Professional Edition\4.0\dotfuscator.cfg
Into the same folder on the user account that is running the automated build.
I was running my build service under NT AUTHORITY\NETWORK SERVICE. After some searching I found their home directories:
%systemroot%\ServiceProfiles\NetworkService
which usually translates as:
c:\Windows\ServiceProfiles\NetworkService

Related

Beckhoff TwinCat3 CI/CD Docker

So what I'm looking for is some way to build my PLC project in a Docker Container for a nice and easy CI/CD.
From what I found online it is not possible to perform a command line compilation of Beckhoff TwinCAT.
I did find this post on stackoverflow:
TwinCAT3 build on Jenkins
But this requires devenv.exe which is not provided in build tools.
Anyone got a way of building my project within docker?
Building a TwinCAT PLC project programmatically can be done using the TwinCAT automation interface although it is not trivial. This is what is discussed in the post you linked. You must install TwinCAT XAE and then write a (C#) program that builds and deploys your PLC project. I wrote such a program for my customers.
Because a PLC program has real-time requirements it cannot run everywhere. It does not run in Windows but besides Windows such that it can meet its RT requirements. This Windows/TwinCAT combination only runs in specific virtualization platforms/modes. I ran TwinCAT PLC projects in Windows Server Hyper-V and VMware for my customers. You probably will have to run docker on Windows Server Hyper-V in Hyper-V isolation mode.

Build a project targeting MSVC on linux Jenkins

I have a private server that I've been slowly setting up for personal projects, but I've run into a bit of a roadblock. My server is running Arch linux [I like bleeding edge and minimalistic installs in situations like this] and I have Jenkins running on it so that I can have it automatically build projects. I have a project that I've been working on that is currently targeting the Win32/64 platform using MSVC, but I can't seem to find any info anywhere about setting up a job on Jenkins for this situation. I was hoping that I could maybe setup a Docker instance that would be able to provide the MSVC toolchain, especially since Visual Studio Code is available for Linux, and that I could use that as part of my Jenkins setup to generate Win binaries for me to test on my main machine. I mention this because naturally, Visual Studio is not a command line utility, and currently my server is a pure headless setup that only provides cli interaction, so if possible, I would like to avoid directly adding GUI packages to the server, but if it is the only way, I'd be willing to do so. Is there really no way to achieve what I'm going for with this?
Sorry if this lacks important details or is formatted poorly, this is my first time asking a question here as it's very rare for me to not be able to find the info I'm looking for in an already existing question.
After research, this is not currently possible as it stems from a misunderstanding of exactly what docker provides. Docker simply uses the underlying OS to provide everything and does not provide any virtualization of foreign OSs. Without a version of the MSVC toolchain that can run on linux, or possibly the use of WINE, there is not a way to achieve this short of a VM. Since WINE is not perfect, the most reliable solution as it appears to me is the VM, but YMMV. The other advantage to using a VM is that I can keep the server headless.
I can't answer this question completely, but this topic is interesting to me too.
Note: Visual Studio Code is open-source, but that's an Electron-based editor. Visual Studio IDE and MSVC are proprietary Windows-only apps.
The website https://blog.sixeyed.com/how-to-dockerize-windows-applications/ suggests it's possible to dockerize Windows apps, including Visual Studio.
Docker images for Windows apps need to be based on microsoft/nanoserver or microsoft/windowsservercore, or on another image based on one of those.
Once you get that working, I'd use Visual Studio command-line builds, like devenv /build file.sln [optionally /project file.vcxproj ]. (https://learn.microsoft.com/en-us/visualstudio/ide/reference/devenv-command-line-switches?view=vs-2017 ).
Note that the VS2017 installer does not function on Wine. I recently filed a bug for this (https://bugs.winehq.org/show_bug.cgi?id=45749 followed by https://bugs.winehq.org/show_bug.cgi?id=45757 ).
I personally use Appveyor for auto-building MSVC apps. Appveyor is a Windows-based centralized cloud service, not a self-hosted CI system.

How to bundle Electron application and windows service together?

I am very new with electron application. I need some help with election installation.
I have an Electron desktop application and a windows service.
I can start and stop my pre installed services by using sudo-prompt package.
I am creating windows installer by using electron-winstaller package.
But I want to bundle my windows service along with my electron application. My requirement is when I install my electron package then it should install my service also, when I uninstall my package then that service should be uninstalled.
Please help me out. Any clue, Any suggestions will be appreciated.
If you think this should be achieved with something else then please do suggest me.
Electron's windows installer packager strikes me a specific case tool that would likely hit limitations in scenarios like this. I would use a general case tool instead such as the Free and Open Source Windows Installer XML Toolset aka WiX. I would also use with that another FOSS application called Industrial Strength Windows Installer XML aka IsWiX.
WiX allows you to describe and build MSI databases using an XML/XSD domain specific language. It supports MSBuild for easy integration with your CI/CD pipeline. IsWiX* is a set of project templates and graphical designers that provide an opinionated project structuring (scaffolding) and greatly speeds up the learning curve and implementation. For example, this installer you describe could be done without writing a single line of XML.
For more information see: https://github.com/iswix-llc/iswix-tutorials
The desktop-application and windows-service tutorials should** show you everything you need to know to author this installer. Basically follow the desktop-application all the way through and then skip to the final portion of the windows-service tutorial where you define the windows service.
I'm the maintainer of IsWiX
** This assumes your service exe is a proper Windows service that interfaces with the windows service control manager. If it's really just a console app that runs as a service you will need to include a program such as srvany.exe. This will require one line of hand crafted XML to extended the service definition in the registry with the proper command line value to be passed to your exe. An example can be found here: Wix installer to replace INSTSRV and SRVANY for user defined service installation

Visual Studio sometimes detects configuration issue on jenkins CI server

I have Jenkins CI server which builds various .net projects. The server is on Virtual Machine, connected to ActiveDirectory and Jenkins is running in the context of domain user which is also a local administrator.
Software used:
Windows 10 Professional
Visual Studio 2015 14.0.25431.01 Update 3
Jenkins 1.625.3
Solutions are build using devenv.com (currently msbuild is not an option), e.g.:
"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.com" "xxxxx.sln" /rebuild "Release|Any CPU"
My issue is, that quite often I receive an error, just after running devenv.com:
Microsoft Visual Studio has detected a configuration issue. To correct this, please restart as Administrator. For more information please visit: http://go.microsoft.com/fwlink/?LinkId=659046Build
It started to happen after one of Windows 10 updates. I found out, that when someone is log in to build server with the remote desktop using the same domain account, the builds run OK. After logout, the builds run OK for some time and then the errors are back.
Any clue what's going on?
It may be related to this apparent bug in a recent Windows update:
Connect: Visual Studio 2015 and SSMS 2016 RTM (VS 2015 shell) not running under "Run as different user" on Windows 10 Anniversary, Windows 2016 CTP 5
UPDATE 2017-09-08
As #Florian points out, the above link is broken. I can't even find the Connect issue cached on Google, Bing or archive.org.
The Connect issue Unable to start SSMS as another user (cached copy on archive.org) makes me think it would be worth checking whether the problem resolves after updating Windows 10 to 1703 (Creators Update) and ensuring that April 25, 2017—KB4016240 (OS Build 15063.250) has been applied. If this works, anyone running Jenkins on Windows Server 2016 will have to wait for Microsoft to publish 1703 and KB4016240 (or equivalent) for that OS.
Excerpts from Connect page "Unable to start SSMS as another user". I have bolded the error details, which match those in the original question (except for the LinkId in the supplied URL) even though the product is SSMS rather than VS:
Version: SQL Server 2016 CTP3
Operating System: Windows 10
Steps to Reproduce:
Right-click SQL Server Management Studio, select "More", then "Run as
a different user"
Actual Results:
Error message: "This task requires the application to have elevated
permissions" with two options: Restart under different credentials,
and Cancel the task and return to Microsoft SQL Server Management
Studio. Pressing either option closes the window with no further
result. Error information is:
Microsoft SQL Server Management Studio has detected a configuration issue. To correct this, please restart as Administrator. For more information please visit: http://go.microsoft.com/fwlink/?LinkId=647011.
When I go to that page and try the fix suggested there, I can't find
ieproxy.dll. The fix is for Windows 7 / Internet Explorer 8, and I'm
on Windows 10 with Internet Explorer 11, so that may be why it's not
there.
[...]
Posted by Microsoft on 4/28/2017 at 6:26 PM
Hi Jake, It turned out that this issue has been resolved (on the Windows side) very recently - like 3 days ago :)
If you are running Win10 "1703", just make sure you get the latest
updates (specifically, KB4016240) and you should be able to run
ssms.exe using "runas" just fine. This will work with any version of
SSMS.
Currently, the fix is not available on older versions of Win10 (e.g.
1607) or WS2016 (also 1607).
Thanks,
-Matteo
[...]
Posted by Microsoft on 4/27/2017 at 7:35 PM
Hi Jake, Yes, we are aware of this issue (in Windows 10).
We've engaged with the Visual Studio and Windows folks (which is there
the issue is) and hopefully will have a way to fix this issue in SSMS
(you should not need an updated SSMS, just an update in Windows 10).
I'm going to keep this issue open until I have more concrete updates
on it.
Thanks,
-Matteo
If the Windows updates do not solve the problem or are not available to you, I would suggest trying repair operations on Windows as well as Visual Studio.
I'm running into the same error after updating my Windows 10 to 1607, in that I cannot run Visual Studio as a different user. I'm not building solutions at the time though, but still running the VS program as I think you would be calling.
Using this command: runas /netonly /user:domain \ account devenv.exe
as outlined here Unable to launch Visual Studio 2015 as a different user works for me. Not as convenient but does the trick.

Locking/Unlocking a file remotely in Subversion

I have Subversion setup on a Windows machine for iOS development. The WIndows machine acts as the server and all the team members are working on Macs.
I use TortoiseSVN as the SVN client and I know you can lock files using that but you have to have access to the directory in the server to do that all the time. Therefore I'm looking for a way to do it remotely.
To explain further, when a team member starts editing a file, he should be able to issue a command through the terminal (I read that you cannot do this through Xcode though a feature like that would have been great!) to lock the file and again unlock it the same way.
How can I do this?
Thanks
svn lock <filename> on a file kept in a working copy is the equivalent of Tortoise's "Get Lock"

Resources