[GH-ISSUE #227] Can't install on a virtual machine (no admin rights) #222

Open
opened 2026-02-25 20:31:11 +03:00 by kerem · 14 comments
Owner

Originally created by @Ard625514 on GitHub (Apr 20, 2018).
Original GitHub issue: https://github.com/aluxnimm/outlookcaldavsynchronizer/issues/227

Many company's use "Bring Your Own Device" and provide access to their office environment through a VDI (Citrix or Mircosoft Remote Desktop).
In order to sync my calendar events and contacts i would like to use OutlookCalDavSynchroniser (OCDS) in this environment.
I tried to install OCDS at 2 clients and in both situations i got a "No admin rights" error.
Would it be possible to make a non-install version (Portable)?

Originally created by @Ard625514 on GitHub (Apr 20, 2018). Original GitHub issue: https://github.com/aluxnimm/outlookcaldavsynchronizer/issues/227 Many company's use "Bring Your Own Device" and provide access to their office environment through a VDI (Citrix or Mircosoft Remote Desktop). In order to sync my calendar events and contacts i would like to use OutlookCalDavSynchroniser (OCDS) in this environment. I tried to install OCDS at 2 clients and in both situations i got a "No admin rights" error. Would it be possible to make a non-install version (Portable)?
Author
Owner

@aluxnimm commented on GitHub (Apr 29, 2018):

Not sure if portable Outlook Addins are possible or if that would need a standalone application. Not our focus atm.

<!-- gh-comment-id:385251796 --> @aluxnimm commented on GitHub (Apr 29, 2018): Not sure if portable Outlook Addins are possible or if that would need a standalone application. Not our focus atm.
Author
Owner

@Ard625514 commented on GitHub (May 1, 2018):

Portable is not the goal, installing without admin rights is what i need. Would that be possible?

<!-- gh-comment-id:385793475 --> @Ard625514 commented on GitHub (May 1, 2018): Portable is not the goal, installing without admin rights is what i need. Would that be possible?
Author
Owner

@Offerel commented on GitHub (Jul 9, 2018):

install without Admin rights would be great.

<!-- gh-comment-id:403386814 --> @Offerel commented on GitHub (Jul 9, 2018): install without Admin rights would be great.
Author
Owner

@tobyX commented on GitHub (Feb 19, 2019):

I agree, install without Admin rights would be great!

<!-- gh-comment-id:465082865 --> @tobyX commented on GitHub (Feb 19, 2019): I agree, install without Admin rights would be great!
Author
Owner

@rdoering commented on GitHub (Sep 5, 2019):

Yeah, I need this feature, too.

<!-- gh-comment-id:528192571 --> @rdoering commented on GitHub (Sep 5, 2019): Yeah, I need this feature, too.
Author
Owner

@rdoering commented on GitHub (Sep 5, 2019):

Is there a workaround, currently?

<!-- gh-comment-id:528193185 --> @rdoering commented on GitHub (Sep 5, 2019): Is there a workaround, currently?
Author
Owner

@Offerel commented on GitHub (Sep 5, 2019):

You can extract all files manually either with 7Zip or by command line with msiexec /a drive:\filepath\to\MSI\file /qb TARGETDIR=drive:\filepath\to\target\folder. Thats enough for a update. For a fresh install, you must setup some registry keys to register the path to the plugin in Outlook. But i cant remember what key exactly it was.

Found it:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Office\Outlook\Addins\CalDavSynchronizer.1]
"FriendlyName"="CalDavSynchronizer"
"LoadBehavior"=dword:00000003
"Description"="CalDavSynchronizer"
"Manifest"="file:///C:\\Path\\To\\CalDavSynchronizer\\CalDavSynchronizer.vsto|vstolocal"
<!-- gh-comment-id:528194361 --> @Offerel commented on GitHub (Sep 5, 2019): You can extract all files manually either with 7Zip or by command line with ` msiexec /a drive:\filepath\to\MSI\file /qb TARGETDIR=drive:\filepath\to\target\folder`. Thats enough for a update. For a fresh install, you must setup some registry keys to register the path to the plugin in Outlook. But i cant remember what key exactly it was. Found it: ``` Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Microsoft\Office\Outlook\Addins\CalDavSynchronizer.1] "FriendlyName"="CalDavSynchronizer" "LoadBehavior"=dword:00000003 "Description"="CalDavSynchronizer" "Manifest"="file:///C:\\Path\\To\\CalDavSynchronizer\\CalDavSynchronizer.vsto|vstolocal" ```
Author
Owner

@rdoering commented on GitHub (Sep 5, 2019):

That's funny, I discovered this solution also and would like to describe it here. Thanks for pointing out the registration key.

What are you thinking about adding an batch file? IMHO it's unnecessary, because MSI is also able to handle this,but the currently configured one unfortunately not.

<!-- gh-comment-id:528216600 --> @rdoering commented on GitHub (Sep 5, 2019): That's funny, I discovered this solution also and would like to describe it here. Thanks for pointing out the registration key. What are you thinking about adding an batch file? IMHO it's unnecessary, because MSI is also able to handle this,but the currently configured one unfortunately not.
Author
Owner

@Offerel commented on GitHub (Sep 5, 2019):

A *.bat or *.cmd would be a good idea. Maybe interactive, so that you can specify if thats a update or new install. Or read the registry to decide, if it is update (if the key already exists). I don't know, if it is possible to read the registry via *.cmd

<!-- gh-comment-id:528223492 --> @Offerel commented on GitHub (Sep 5, 2019): A *.bat or *.cmd would be a good idea. Maybe interactive, so that you can specify if thats a update or new install. Or read the registry to decide, if it is update (if the key already exists). I don't know, if it is possible to read the registry via *.cmd
Author
Owner

@rdoering commented on GitHub (Sep 5, 2019):

Unfortunately I am not allowed to run powershell scripts on this maschine.

Thats why I could only set correct entry for me :-(

New-Item -Path $calDavSyncPath
  New-ItemProperty -Path $calDavSyncPath -Name "FriendlyName" -Value "CalDavSynchronizer" 
  New-ItemProperty -Path $calDavSyncPath -Name "LoadBehavior" -Value 3 -PropertyType dword
  New-ItemProperty -Path $calDavSyncPath -Name "Description" -Value "CalDavSynchronizer" 
  New-ItemProperty -Path $calDavSyncPath -Name "Manifest" -Value "file:///C:\\Tools\\CalDavSynchronizer\\CalDavSynchronizer.vsto|vstolocal" 

A better solution should looks like

$addinPath = "Registry::HKEY_CURRENT_USER\Software\Microsoft\Office\Outlook\Addins"
$isOutlookAddinAvailable = Test-Path -Path $addinPath

$calDavSyncPath = "$addinPath\CalDavSynchronizer.1"
$isCalDavSyncInstalled = Test-Path -Path $calDavSyncPath
if ($isCalDavSyncInstalled) {
  Write-Output 'update'
  Write-Output 'NIY'
} else {
  Write-Output 'install'

  New-Item -Path $calDavSyncPath
  New-ItemProperty -Path $calDavSyncPath -Name "FriendlyName" -Value "CalDavSynchronizer" 
  New-ItemProperty -Path $calDavSyncPath -Name "LoadBehavior" -Value 3 -PropertyType dword
  New-ItemProperty -Path $calDavSyncPath -Name "Description" -Value "CalDavSynchronizer" 
  New-ItemProperty -Path $calDavSyncPath -Name "Manifest" -Value "file:///C:\\Tools\\CalDavSynchronizer\\CalDavSynchronizer.vsto|vstolocal" 
}

<!-- gh-comment-id:528240641 --> @rdoering commented on GitHub (Sep 5, 2019): Unfortunately I am not allowed to run powershell scripts on this maschine. Thats why I could only set correct entry for me :-( ``` New-Item -Path $calDavSyncPath New-ItemProperty -Path $calDavSyncPath -Name "FriendlyName" -Value "CalDavSynchronizer" New-ItemProperty -Path $calDavSyncPath -Name "LoadBehavior" -Value 3 -PropertyType dword New-ItemProperty -Path $calDavSyncPath -Name "Description" -Value "CalDavSynchronizer" New-ItemProperty -Path $calDavSyncPath -Name "Manifest" -Value "file:///C:\\Tools\\CalDavSynchronizer\\CalDavSynchronizer.vsto|vstolocal" ``` A better solution should looks like ``` $addinPath = "Registry::HKEY_CURRENT_USER\Software\Microsoft\Office\Outlook\Addins" $isOutlookAddinAvailable = Test-Path -Path $addinPath $calDavSyncPath = "$addinPath\CalDavSynchronizer.1" $isCalDavSyncInstalled = Test-Path -Path $calDavSyncPath if ($isCalDavSyncInstalled) { Write-Output 'update' Write-Output 'NIY' } else { Write-Output 'install' New-Item -Path $calDavSyncPath New-ItemProperty -Path $calDavSyncPath -Name "FriendlyName" -Value "CalDavSynchronizer" New-ItemProperty -Path $calDavSyncPath -Name "LoadBehavior" -Value 3 -PropertyType dword New-ItemProperty -Path $calDavSyncPath -Name "Description" -Value "CalDavSynchronizer" New-ItemProperty -Path $calDavSyncPath -Name "Manifest" -Value "file:///C:\\Tools\\CalDavSynchronizer\\CalDavSynchronizer.vsto|vstolocal" } ```
Author
Owner

@Offerel commented on GitHub (Sep 6, 2019):

Oh... you are faster then me... i came up with a much like similar approach but as a *.bat file. I have put it here as CDS.bat.txt and also the source for it. It should work as expected. Maybe Alex can pack it in the release *.zip files as well.

@aluxnimm feel free to change my source and include it where you want. Maybe its helpfull to others as well.

CDS.bat.txt

@ECHO OFF
SET cdspath=
SET mode=2
SET regpath=HKCU\Software\Microsoft\Office\Outlook\Addins\CalDavSynchronizer.1
FOR /F "tokens=* USEBACKQ" %%g IN (`REG QUERY %regpath% /v Manifest 2^> nul`) do (SET cdspath=%%g)
SET cdspath="%cdspath:~30%"
SET cdspath=%cdspath:~1,-35%
IF "%cdspath%"=="" SET mode=1

IF "%mode%"=="1" (
	ECHO This will INSTALL CalDavSynchronizer, since i could not find it's path in the registry
	SET /P ipath=Please type in the path: 
	SET manifest=file:///%ipath%\CalDavSynchronizer.vsto^|vstolocal
	reg add %regpath% /v Manifest /t REG_SZ /d "%manifest%" > nul 2>&1
	reg add %regpath% /v LoadBehavior /t REG_DWORD /d 3 > nul 2>&1
	reg add %regpath% /v FriendlyName /t REG_SZ /d CalDavSynchronizer > nul 2>&1
	reg add %regpath% /v Description /t REG_SZ /d CalDavSynchronizer > nul 2>&1
	SET cdspath=%ipath%
) ELSE (
	ECHO This will UPDATE CalDavSynchronizer to the path: %cdspath%
)

SET extract=msiexec /a CalDavSynchronizer.Setup.msi /qb TARGETDIR=%cdspath%
%extract%
PAUSE
<!-- gh-comment-id:528732149 --> @Offerel commented on GitHub (Sep 6, 2019): Oh... you are faster then me... i came up with a much like similar approach but as a *.bat file. I have put it here as CDS.bat.txt and also the source for it. It should work as expected. Maybe Alex can pack it in the release *.zip files as well. @aluxnimm feel free to change my source and include it where you want. Maybe its helpfull to others as well. [CDS.bat.txt](https://github.com/aluxnimm/outlookcaldavsynchronizer/files/3582453/CDS.bat.txt) ``` @ECHO OFF SET cdspath= SET mode=2 SET regpath=HKCU\Software\Microsoft\Office\Outlook\Addins\CalDavSynchronizer.1 FOR /F "tokens=* USEBACKQ" %%g IN (`REG QUERY %regpath% /v Manifest 2^> nul`) do (SET cdspath=%%g) SET cdspath="%cdspath:~30%" SET cdspath=%cdspath:~1,-35% IF "%cdspath%"=="" SET mode=1 IF "%mode%"=="1" ( ECHO This will INSTALL CalDavSynchronizer, since i could not find it's path in the registry SET /P ipath=Please type in the path: SET manifest=file:///%ipath%\CalDavSynchronizer.vsto^|vstolocal reg add %regpath% /v Manifest /t REG_SZ /d "%manifest%" > nul 2>&1 reg add %regpath% /v LoadBehavior /t REG_DWORD /d 3 > nul 2>&1 reg add %regpath% /v FriendlyName /t REG_SZ /d CalDavSynchronizer > nul 2>&1 reg add %regpath% /v Description /t REG_SZ /d CalDavSynchronizer > nul 2>&1 SET cdspath=%ipath% ) ELSE ( ECHO This will UPDATE CalDavSynchronizer to the path: %cdspath% ) SET extract=msiexec /a CalDavSynchronizer.Setup.msi /qb TARGETDIR=%cdspath% %extract% PAUSE ```
Author
Owner

@Nuube commented on GitHub (Jun 3, 2022):

I tried to do this today and did not work. Can someone confirm that it still works this way on his installation (or not)?

<!-- gh-comment-id:1146039736 --> @Nuube commented on GitHub (Jun 3, 2022): I tried to do this today and did not work. Can someone confirm that it still works this way on his installation (or not)?
Author
Owner

@mausquirk commented on GitHub (Oct 31, 2023):

I applied https://github.com/aluxnimm/outlookcaldavsynchronizer/issues/227#issuecomment-528194361 today. It works with an Outlook Version of 2016.
Thanks for that.

<!-- gh-comment-id:1787537041 --> @mausquirk commented on GitHub (Oct 31, 2023): I applied https://github.com/aluxnimm/outlookcaldavsynchronizer/issues/227#issuecomment-528194361 today. It works with an Outlook Version of 2016. Thanks for that.
Author
Owner

@StaffanBetner commented on GitHub (Nov 20, 2024):

I applied #227 (comment) today. It works with an Outlook Version of 2016. Thanks for that.

Also works for M365 Outlook (16.0.18025.20214)

<!-- gh-comment-id:2488495531 --> @StaffanBetner commented on GitHub (Nov 20, 2024): > I applied [#227 (comment)](https://github.com/aluxnimm/outlookcaldavsynchronizer/issues/227#issuecomment-528194361) today. It works with an Outlook Version of 2016. Thanks for that. Also works for M365 Outlook (16.0.18025.20214)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/outlookcaldavsynchronizer#222
No description provided.