Git Product home page Git Product logo

Comments (70)

kenjiuno avatar kenjiuno commented on June 8, 2024

I have a sample installer script written by NSIS language. It is an installer for Npgsql .NET4.0 & 4.5.

https://gist.github.com/kenjiuno/7985982

The tools (ModifyDbProviderFactories/GACInstall/GACRemove) are external EXEs written by C# .NET 4.0.

The screenshot:

sample_installer

I suggest this as a draft to discuss about installer. Also I can tweak the script to fit current Npgsql.

from npgsql.

franciscojunior avatar franciscojunior commented on June 8, 2024

That's excellent, Kenji!

Is it too difficult to add support for 2.0 and 3.5 framework versions?

from npgsql.

kenjiuno avatar kenjiuno commented on June 8, 2024

Thanks.

Is it too difficult to add support for 2.0 and 3.5 framework versions?

Yes No, I'll try it.

I'm curious to know if anyone is trying to place Npgsql into Mono runtime's GAC.

from npgsql.

franciscojunior avatar franciscojunior commented on June 8, 2024

No, I'll try it.

Thanks!

I'm curious to know if anyone is trying to place Npgsql into Mono runtime's GAC.

I also don't know. I never got those statistics. :(

I think more people use GAC on ms.net because of tools like edmgen etc.

I think on Mono the biggest motivation would be to not have many copies of Npgsql floating around. For example in a web server.

from npgsql.

roji avatar roji commented on June 8, 2024

@kenjiuno, gacinstall exists just as well on mono and with the same syntax (i.e. gacinstall -i ).

If you really want to go all the way, on Windows you can try to see whether there's a standard way to know if/where mono is installed (a registry key maybe??). Then, if so, you can ask the user to choose where to install Npgsql by launching the correct gacutil.exe. I think there may even be multiple mono versions installed side by side.

Of course, if you're on Linux or MacOS everything is different, no exe or anything. But I suggest we concentrate on Windows for now, we can always add a Linux installer later...

from npgsql.

franciscojunior avatar franciscojunior commented on June 8, 2024

I agree with Shay. I think we should concentrate on windows installer and then we can work on Linux later.

from npgsql.

kenjiuno avatar kenjiuno commented on June 8, 2024

Ok...
I'll suspend installer to Mono. And I'll stick to Windows MS .NET environment for now.

@roji

Add an optional checkbox for the publisher policy as well.

For example, if we have 2.2.2.0 release, redirect 2.2.0.0-2.2.1.0 to 2.2.2.0?

Ok, here is brushed up version:

sample_installer3

https://gist.github.com/kenjiuno/7985982

It'll be fit modern UI style by setting XPStyle on. This screenshot uses off (NSIS default).

Skinning is available. Modern UI, or ExperienceUI.

btw nsis compiler will accept external variable input.

makensis.exe /DUSE_UPX /DVERSION=1.337 /DNO_IMAGES myscript.nsi

from npgsql.

roji avatar roji commented on June 8, 2024

Wow, it looks nice :) (especially the ExperienceUI :)

A few comments:

  • I In my opinion, this install would only be for installing into the GAC - no need for a "destination folder" step at all. If the user doesn't need GAC installation, then the nuget installation method is the one to use... Allowing the user to install to a directory would encourage them not to use nuget, which offers things like automatic updates etc.
  • The policy of the publisher policy file (and its generation process) is probably out of the scope of this issue. In other words, the publisher policy file would be compiled as part of the build server, and the NSIS part would simply pull it inside just like any other DLL.
  • Regarding the specific policy (if we do want to discuss it): if we're going for a semver-like scheme with three version numbers, as is standard/recommended, then the third version is supposed to indicate non-breaking bugfixes. It would make sense, then, to specify a policy that redirects all 2.1.x releases to the latest 2.1 version, but not to 2.2.x.
  • Look at the warning in this page: http://msdn.microsoft.com/en-us/library/yf1d93sz(v=vs.110).aspx. Microsoft recommends against using gacutil, because it doesn't update reference counting etc. If we want to do this right, can you check what method you're using for the installation?

from npgsql.

roji avatar roji commented on June 8, 2024

Here's some more details on Windows Installer: http://www.codeproject.com/Articles/4352/Demystifying-the-NET-Global-Assembly-Cache. Note:

This is the preferred way for installing such shared assemblies and should be the only way shared assemblies are installed on non development machines

from npgsql.

franciscojunior avatar franciscojunior commented on June 8, 2024

That's the way to go, Kenji! Excellent work!

Look at the warning in this page: http://msdn.microsoft.com/en-us/library/yf1d93sz(v=vs.110).aspx. Microsoft recommends against using gacutil, because it doesn't update reference counting etc. If we want to do this right, can you check what method you're using for the installation?

Hmmmm, that made me wonder which method the installer should be using to add assemblies to GAC with reference counting... I thought gacutil was the only way to add assemblies to GAC :)
I think I use GAC too little time.

from npgsql.

franciscojunior avatar franciscojunior commented on June 8, 2024

Here's some more details on Windows Installer: http://www.codeproject.com/Articles/4352/Demystifying-the-NET-Global-Assembly-Cache. Note:

And there is Shay answering me before I even ask... :)

from npgsql.

kenjiuno avatar kenjiuno commented on June 8, 2024

Hi.

Thanks for reply.

this install would only be for installing into the GAC

Ok, it is more simple!

the publisher policy file would be compiled as part of the build server

I see.

It would make sense, then, to specify a policy that redirects all 2.1.x releases to the latest 2.1 version, but not to 2.2.x.

It is ok. I understood it.

because it doesn't update reference counting etc

Yes, you are right. I have forgotten it until now.

can you check what method you're using for the installation?

I'm using Publish.GacInstall Method

it is well known alternative to gacutil.exe /i.

it will break reference counting easily as you mention.

Hmmmm, that made me wonder which method the installer should be using to add assemblies to GAC with reference counting... I thought gacutil was the only way to add assemblies to GAC :)

Only Windows Installer would have feature for polite GAC installation method... I have not tried yet...

Google gac wix showed me some Windows Installer samples using WiX Toolset.

I'll try WiX Toolset next night. http://wix.codeplex.com/

from npgsql.

kenjiuno avatar kenjiuno commented on June 8, 2024

Some points I like to test:

  • GAC installation of .net 2.0 assembly.
  • GAC installation of .net 4.0 assembly.
  • Both installation at one once.
  • Install Npgsql, then gacutil /u, then launch db application.
  • Optional: Install .net 2.0 assembly without .net 2.0 runtime.
  • Optional: Install .net 4.0 assembly without .net 4.0 runtime.
  • Optional: Install .net 2.0 or 4.0 assembly with no runtime installed.

from npgsql.

kenjiuno avatar kenjiuno commented on June 8, 2024

I have known .net4.0 app can also use .net2.0 gac.

It is ok: install Npgsql .net2.0/4.0 at once.
It is NG: install Npgsql .net2.0, then install Npgsql .net4.0 by maintenance mode. also vice versa.

Sample windows installer written by WiX Toolset:
NpgsqlSetup.wxs https://gist.github.com/kenjiuno/8039290

Windows installer prevents gac dll from removing.

H:\Dev\Npgsql_files>"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\gacutil.exe" /u Npgsql
Microsoft (R) .NET Global Assembly Cache Utility.  Version 4.0.30319.33440
Copyright (c) Microsoft Corporation.  All rights reserved.


Assembly: Npgsql, Version=2.1.0.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7, processorArchitecture=MSIL
Unable to uninstall: assembly is required by one or more applications
Pending references:
              SCHEME: <WINDOWS_INSTALLER>  ID: <MSI>  DESCRIPTION : <Windows Installer>
Number of assemblies uninstalled = 0
Number of failures = 0

Compile:

candle NpgsqlSetup.wxs && light -ext WixUIExtension NpgsqlSetup.wixobj

To install:

msiexec /i NpgsqlSetup.msi

Preselection:

msiexec /i NpgsqlSetup.msi ADDLOCAL=Npgsql45

Uninstall it:

msiexec /passive /x "{772a9e26-9ab8-4011-bce6-d95b19d22b57}"

Screenshot:

sample_installer4

from npgsql.

roji avatar roji commented on June 8, 2024

Haven't had time to test yet, but this. Looks great @kenjiuno! WiX seems to be the right solution to this problem.

I will try to spend some time and look at it tomorrow.

from npgsql.

roji avatar roji commented on June 8, 2024

Also, not sure but we should also probably allow optional GAC installation of both EntityFramework DLLs (regular and legacy).

Later there's also the publisher policy as an option, but we can handle that later too :)

from npgsql.

kenjiuno avatar kenjiuno commented on June 8, 2024

I have updated the installer script. https://gist.github.com/kenjiuno/8039290

It uses package based path like Npgsql2.0.14.3-bin-ms.net2.0 for dll import.

Specify ver by -dVER=2.0.14.3

Use -dEF=0 for 2.0 product line. It doesn't contain independent Entity framework assemblies.

I'll test later...

from npgsql.

roji avatar roji commented on June 8, 2024

@kenjiuno, do you think you'll have some time to look at this task at some point?

from npgsql.

kenjiuno avatar kenjiuno commented on June 8, 2024

Ok. I'll research about power query, and so on.

from npgsql.

roji avatar roji commented on June 8, 2024

Thanks @kenjiuno!

Am Freitag, 18. Juli 2014 schrieb kenjiuno :

Ok. I'll research about power query, and so on.


Reply to this email directly or view it on GitHub
#128 (comment).

from npgsql.

DavidKarlas avatar DavidKarlas commented on June 8, 2024

Just random thought...
I thought GAC is dying... and everyone is going NuGet...

from npgsql.

franciscojunior avatar franciscojunior commented on June 8, 2024

I think some tools still need to find assemblies in the GAC. For example, #271 talks exactly about a tool which uses assemblies from GAC.

from npgsql.

kenjiuno avatar kenjiuno commented on June 8, 2024

Hi.

I have checked about Power Query. It will need that Npgsql is installed in GAC.

I have installed the following items for testing:

Here is sample usage:

Launch [Excel 2013], [Blank workbook], [POWER QUERY], [From Database], and then [From PostgreSQL Database]

from_postgresql_database

Fill [Server] and [Database]

postgresql_database

Query Editor will appear. However it reports Npgsql is absent.

query1_datasource_error

Setup Npgsql and then install it into GAC anyway.

nsis_setup

Try again.

It will request to fill Username and Password.

Navigator pane will appear after successful db connection.

preview

Double click the city.

query_editor_city

Select [Apply and Close]

apply_and_close

If you have Power Map Preview for Excel 2013 (http://www.microsoft.com/en-us/download/details.aspx?id=38395), you will be able to visualize your table data!

power_map_preview

from npgsql.

kenjiuno avatar kenjiuno commented on June 8, 2024

Hi.

Here is my summary of installer for Npgsql.

GAC installation is important if you want to do

  • DDEX support in VisualStudio. It is useful to work with EntityFramework Model Editor.
  • EdmGen or such.
  • Power Query.

My NSIS setup (experimental) will do

  • GAC install. And you can remove assembly from GAC manually. It is not locked by anything.
  • Auto edit machine.config

My sample Windows installer (experimental) written with WiX toolkit will do

  • GAC inst. And you cannot remove assembly by yourself. It is locked by Windows Installer.
  • It is not yet done about machine.config modifier.

If someone need need installer, or want to try it urgently, I can build private NSIS setup.

Windows installer version can GAC installation. But you will need to edit machine.config in hand work.

from npgsql.

kenjiuno avatar kenjiuno commented on June 8, 2024

Hi.

Frankly speaking, which target (framework version) is better for installer?

Npgsql for .net 4.5?

IMAO .net 4.0 and 4.5 versions will satisfy recent needs of Npgsql as an ADO .net data provider.

from npgsql.

franciscojunior avatar franciscojunior commented on June 8, 2024

I think that by default .net 4.5 would be ideal.

Later I think we could add support for other frameworks according to demand. I think 2.0 would have low demand. I don't know if 3.5 would have a high or low demand.

from npgsql.

kenjiuno avatar kenjiuno commented on June 8, 2024

Ok.
I'll think about .net 2.0 version later...

Here is an unofficial! Npgsql GAC installer (NSIS version)

Setup_Npgsql-2.2.0-KU20140725-a846e688.exe
https://drive.google.com/file/d/0BzIsP2o582nbdkVOdkhiWFZRcTA/edit?usp=sharing

I will post WindowsInstaller version later...

from npgsql.

franciscojunior avatar franciscojunior commented on June 8, 2024

Em 25/07/2014 10:00, "kenjiuno" [email protected] escreveu:

Ok.
I'll think about .net 2.0 version later...

Here is an unofficial! Npgsql GAC installer (NSIS version)

Setup_Npgsql-2.2.0-KU20140725-a846e688.exe

https://drive.google.com/file/d/0BzIsP2o582nbdkVOdkhiWFZRcTA/edit?usp=sharing

I will post WindowsInstaller version later...

Awesome, Kenji!

I'll make some tests. Then we can add it to our downloads section so other
can give it a try too.


Reply to this email directly or view it on GitHub.

from npgsql.

kenjiuno avatar kenjiuno commented on June 8, 2024

Hello.
Here is an experimental Npgsql/Mono.Security installer (Windows Installer version).

Npgsql-2.2.0.0-KU20140725-a846e688.msi
https://drive.google.com/file/d/0BzIsP2o582nbeHljY1dxMlpvSjQ/edit?usp=sharing

Feature

GAC installer for Npgsql.dll and Mono.Security.dll

They are locked by Windows installer, so you cannot remove them by gacutil /u

Edit machine.config

The installer will add 2 elements into .NET4.0 machine.config (x86 and x64)

<remove invariant="Npgsql"/>
<add name="Npgsql Data Provider" invariant="Npgsql" description=".Net Data Provider for PostgreSQL" type="Npgsql.NpgsqlFactory, Npgsql, Version=2.2.0.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>

Known issues

machine.config indent issue

I use util:XmlConfig from WiX.
XmlConfig seems to use MSXML.
MSXML seems not to format XML after insertion.

  <system.data>
    <DbProviderFactories>
      <add ... />
      <add ... />
    ...
    <remove invariant="Npgsql"/><add name="Npgsql Data Provider" invariant="Npgsql" description=".Net Data Provider for PostgreSQL" type="Npgsql.NpgsqlFactory, Npgsql, Version=2.2.0.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/></DbProviderFactories>
  </system.data>

uninstaller won't remove assembly from GAC.

It unlocks assemblies. So you can remove them by gacutil /u

More research time is required...

uninstaller won't edit machine.config.

I have tried 2 ways, but there is no good result for now.

  • let util:XmlConfig manage its created element.
  • add remove element by util:XmlConfig on uninstaller.

We may need to consider other tool to tweak machine.config.

Installer source code

You can check the installer code from my branch.
https://github.com/kenjiuno/Npgsql/tree/master-setup

Notice: I will rebase the branch, when Npgsql is updated.

from npgsql.

roji avatar roji commented on June 8, 2024

@kenjiuno, this looks like really great work. I prefer the Windows Installer approach, where the DLL is locked in the GAC until you uninstall the Npgsql package.

Is it required (or standard) for the installer to manage the machine.config? Can this be left to the user, who may wish to do it only in the project App.config and not in the machine.config? I don't know much about this...

I'll try to find the time to review soon...

from npgsql.

franciscojunior avatar franciscojunior commented on June 8, 2024

That's simply awesome, Kenji!
Regarding the machine.config handling, I noticed you already have some custom code to change machine.config file. Can you explain better which problem you are facing when trying to edit machine.config during uninstall?

@roji , I think it is good to have machine.config handling capabilities in the installer as users would want a complete install giving that some tools require this configuration. I think this modification should be an option in the installer (enabled by default). As Kenji Uno installer already does.

from npgsql.

Emill avatar Emill commented on June 8, 2024

Will it be possible to release the installer with version 2.2.0?

Also, I think the description for Npgsql.EntityFramework and maybe also Npgsql in nuget should contain a link to an information page how to setup the DDEX provider (since I think most users are lost if they don't install it, at least for EF users that don't use Code First).

from npgsql.

kenjiuno avatar kenjiuno commented on June 8, 2024

Hi Emil!
I will prepare 2.2.0 setup!

DDEX thing is a little bit confused.

It is intended to be used by developer. And it needs GAC installation of Npgsql for now.

NuGet version of Npgsql realizes install-less distribution for end user. GAC installation isn't needed for most cases against NuGet enabled development.

from npgsql.

Emill avatar Emill commented on June 8, 2024

Hmm, is ddex and model designer possible by installing it from nuget? I thought GAC installation was needed + machine.config change.

from npgsql.

Emill avatar Emill commented on June 8, 2024

The thing I'm worried about is users doing this:

"I want Npgsql with EF. Cool, I can install it via nuget in Visual Studio. There, now installed... Hey! I don't see PostgreSQL as an option when choosing database type in the model designer??"

Therefore, it would be good with a link in the nuget description how to set it up.

from npgsql.

roji avatar roji commented on June 8, 2024

@Emill, I think you're right that we need to explain things better to users - exactly when they need the DDEX provider and when they don't. We can update the nuget description for the EF packages (there are two), and also the manual.

But there is another issue - looking at our build server, I see that a ZIP is being prepared for the DDEX provider, containing the VSIX and also a DLL and a PDB. Is this the way we want to distribute everything? Does the VSIX already install npgsql into the GAC, or is this a separate step?

We probably want:

  • The EXE installer which installs npgsql into the GAC and updates the machine.config (no Visual Studio integration).
  • The VSIX, which ideally does the GAC installation step above if needed, this way it's a one-click install which does everything.

I can do the proper config in our build server to make everything build properly, I just need to know what to do.

Thoughts?

Also, it doesn't seem like we should wait to complete this for 2.2.0... We can work on this for 2.2.1?

from npgsql.

franciscojunior avatar franciscojunior commented on June 8, 2024

Also, I think the description for Npgsql.EntityFramework and maybe also Npgsql in nuget should contain a link to an information page how to setup the DDEX provider (since I think most users are lost if they don't install it, at least for EF users that don't use Code First).

Agreed!

Hmm, is ddex and model designer possible by installing it from nuget? I thought GAC installation was needed + machine.config change.

Yes, GAC and machine.config changes are needed. Currently the nuget package doesn't do anything about that.

The thing I'm worried about is users doing this:

"I want Npgsql with EF. Cool, I can install it via nuget in Visual Studio. There, now installed... Hey! I don't see PostgreSQL as an option when choosing database type in the model designer??"

I think this is really happening.

Therefore, it would be good with a link in the nuget description how to set it up.

Sure!
+1

But there is another issue - looking at our build server, I see that a ZIP is being prepared for the DDEX provider, containing the VSIX and also a DLL and a PDB. Is this the way we want to distribute everything?

I also noticed those files in the zip. But I thought they were needed in order for the .vsix package to install.

Also, regarding the DDEX provider, we aren't building the package for vs2010. @roji , do you think it would be possible to create another buildtype which would use the 2010 project so we could build the package for vs2010? You don't need to create all the buildtypes using the 2010 project. I think just one which creates the vsix project is enough. Thanks in advance.

Does the VSIX already install npgsql into the GAC, or is this a separate step?

From @kenjiuno tutorial, the vsix packages doesn't install Npgsql into the GAC. It is a separate step.

We probably want:

  • The EXE installer which installs npgsql into the GAC and updates the machine.config (no Visual Studio integration).
  • The VSIX, which ideally does the GAC installation step above if needed, this way it's a one-click install which does everything.

I think we could add the vsix installation as an option in the exe installer. I don't know how much flexibility we have to add other steps in the vsix package to make it add Npgsql into GAC though.

We can modify the exe installer all we want. Thus, we just need to finish the installer and it would take care of everything. What do you all think?

from npgsql.

kenjiuno avatar kenjiuno commented on June 8, 2024

Hi.

@Emill

Will it be possible to release the installer with version 2.2.0?
Here is setup built for recent release npgsql:8f70c8b7
https://drive.google.com/folderview?id=0BzIsP2o582nbQmt4N1g1dUZ6M1E&usp=sharing

Both msi and exe(nsis) setup files are available.
Note: msi uninstaller won't remove GAC Npgsql.dll. But you can
uninstall by invoking "gacutil /u".

Hmm, is ddex and model designer possible by installing it from nuget? I thought GAC installation was needed + machine.config change.
You are right, it still requires invocation of administration
privileges for installation.
I will research the possibility of VisualStudio+Npgsql+DDEX (without
admin priv) by NuGet distribution technology.

@franciscojunior

I think we could add the vsix installation as an option in the exe installer. I don't know how much flexibility we have to add other steps in the vsix package to make it add Npgsql into GAC though.
Ok, I will prepare a setup for that purpose. I think that's a sound choice.

2014-08-26 1:42 GMT+09:00 Francisco Figueiredo Jr. [email protected]:

Also, I think the description for Npgsql.EntityFramework and maybe also
Npgsql in nuget should contain a link to an information page how to setup
the DDEX provider (since I think most users are lost if they don't install
it, at least for EF users that don't use Code First).

Agreed!

Hmm, is ddex and model designer possible by installing it from nuget? I
thought GAC installation was needed + machine.config change.

Yes, GAC and machine.config changes are needed. Currently the nuget package
doesn't do anything about that.

The thing I'm worried about is users doing this:

"I want Npgsql with EF. Cool, I can install it via nuget in Visual Studio.
There, now installed... Hey! I don't see PostgreSQL as an option when
choosing database type in the model designer??"

I think this is really happening.

Therefore, it would be good with a link in the nuget description how to set
it up.

Sure!
+1

But there is another issue - looking at our build server, I see that a ZIP
is being prepared for the DDEX provider, containing the VSIX and also a DLL
and a PDB. Is this the way we want to distribute everything?

I also noticed those files in the zip. But I thought they were needed in
order for the .vsix package to install.

Also, regarding the DDEX provider, we aren't building the package for
vs2010. @roji , do you think it would be possible to create another
buildtype which would use the 2010 project so we could build the package for
vs2010? You don't need to create all the buildtypes using the 2010 project.
I think just one which creates the vsix project is enough. Thanks in
advance.

Does the VSIX already install npgsql into the GAC, or is this a separate
step?

From @kenjiuno tutorial, the vsix packages doesn't install Npgsql into the
GAC. It is a separate step.

We probably want:

The EXE installer which installs npgsql into the GAC and updates the
machine.config (no Visual Studio integration).
The VSIX, which ideally does the GAC installation step above if needed, this
way it's a one-click install which does everything.

I think we could add the vsix installation as an option in the exe
installer. I don't know how much flexibility we have to add other steps in
the vsix package to make it add Npgsql into GAC though.

We can modify the exe installer all we want. Thus, we just need to finish
the installer and it would take care of everything. What do you all think?


Reply to this email directly or view it on GitHub.

from npgsql.

kenjiuno avatar kenjiuno commented on June 8, 2024

Ok, this is the nsis setup for testing: Npgsql(into
GAC)+machine.config editor+DDEX vsix(Vs2012/Vs2013).

Setup_Npgsql-2.2.0.0-KU20140827-8f70c8b7.exe
https://drive.google.com/file/d/0BzIsP2o582nbbW5OZ2lPc2tGbVE/edit?usp=sharing

I have tested on both Win8.1(jp) and Win2012R2(en-us). It worked well
in stress less.

2014-08-26 22:10 GMT+09:00 Kenzi U [email protected]:

Hi.

@Emill

Will it be possible to release the installer with version 2.2.0?
Here is setup built for recent release npgsql:8f70c8b7
https://drive.google.com/folderview?id=0BzIsP2o582nbQmt4N1g1dUZ6M1E&usp=sharing

Both msi and exe(nsis) setup files are available.
Note: msi uninstaller won't remove GAC Npgsql.dll. But you can
uninstall by invoking "gacutil /u".

Hmm, is ddex and model designer possible by installing it from nuget? I thought GAC installation was needed + machine.config change.
You are right, it still requires invocation of administration
privileges for installation.
I will research the possibility of VisualStudio+Npgsql+DDEX (without
admin priv) by NuGet distribution technology.

@franciscojunior

I think we could add the vsix installation as an option in the exe installer. I don't know how much flexibility we have to add other steps in the vsix package to make it add Npgsql into GAC though.
Ok, I will prepare a setup for that purpose. I think that's a sound choice.

2014-08-26 1:42 GMT+09:00 Francisco Figueiredo Jr. [email protected]:

Also, I think the description for Npgsql.EntityFramework and maybe also
Npgsql in nuget should contain a link to an information page how to setup
the DDEX provider (since I think most users are lost if they don't install
it, at least for EF users that don't use Code First).

Agreed!

Hmm, is ddex and model designer possible by installing it from nuget? I
thought GAC installation was needed + machine.config change.

Yes, GAC and machine.config changes are needed. Currently the nuget package
doesn't do anything about that.

The thing I'm worried about is users doing this:

"I want Npgsql with EF. Cool, I can install it via nuget in Visual Studio.
There, now installed... Hey! I don't see PostgreSQL as an option when
choosing database type in the model designer??"

I think this is really happening.

Therefore, it would be good with a link in the nuget description how to set
it up.

Sure!
+1

But there is another issue - looking at our build server, I see that a ZIP
is being prepared for the DDEX provider, containing the VSIX and also a DLL
and a PDB. Is this the way we want to distribute everything?

I also noticed those files in the zip. But I thought they were needed in
order for the .vsix package to install.

Also, regarding the DDEX provider, we aren't building the package for
vs2010. @roji , do you think it would be possible to create another
buildtype which would use the 2010 project so we could build the package for
vs2010? You don't need to create all the buildtypes using the 2010 project.
I think just one which creates the vsix project is enough. Thanks in
advance.

Does the VSIX already install npgsql into the GAC, or is this a separate
step?

From @kenjiuno tutorial, the vsix packages doesn't install Npgsql into the
GAC. It is a separate step.

We probably want:

The EXE installer which installs npgsql into the GAC and updates the
machine.config (no Visual Studio integration).
The VSIX, which ideally does the GAC installation step above if needed, this
way it's a one-click install which does everything.

I think we could add the vsix installation as an option in the exe
installer. I don't know how much flexibility we have to add other steps in
the vsix package to make it add Npgsql into GAC though.

We can modify the exe installer all we want. Thus, we just need to finish
the installer and it would take care of everything. What do you all think?


Reply to this email directly or view it on GitHub.

from npgsql.

franciscojunior avatar franciscojunior commented on June 8, 2024

Excellent, @kenjiuno !

I'll test it here and will let you know if I find any problem.

from npgsql.

franciscojunior avatar franciscojunior commented on June 8, 2024

I just tested your installer and it is very good!

Some comments:

  • Would it be possible to add the ddex installer for vs2010 too? This way I can test the vsix installer in vs2010.
  • I don't know very much about the Null Soft Installer, but do you think it would be possible to create an entry in the windows uninstall section?
  • When I run the installer for the second time, to test the uninstall procedure, I noticed that it didn't know Npgsql was already installed. Would it be possible to make the installer know that it installed Npgsql in a previous run?
  • When the uninstall finished, I noticed that it commented out the dbprovider entry of Npgsql. I think it would be better to remove it instead of commenting.
  • Other than that, I think this installer is very good!
    My comments are only details which wouldn't avoid the installer utilization.

from npgsql.

roji avatar roji commented on June 8, 2024

Guys, let me know when you think you have a finished version, and if possible let me know what are the steps to create the EXE, I'll set it up at the build server.

from npgsql.

franciscojunior avatar franciscojunior commented on June 8, 2024

Hi, @kenjiuno !

I just released the final version of Npgsql 2.2.0. Do you think it would be possible to release a version of your installer using this release? I'll add it to our downloads page in github and pgfoundry so people can test it and give us feedback.

After that, as @roji said, we need to finish the installer and integrate the code into the codebase so we can have the build server create the installers for us. :)

from npgsql.

kenjiuno avatar kenjiuno commented on June 8, 2024

Hi, sorry for blank!
I was busy for some days.

@franciscojunior

I just released the final version of Npgsql 2.2.0. Do you think it would be possible to release a version of your installer using this release?

Yes, now I have done! And I have improved some points listed below.

Setup_Npgsql-2.2.0.0-Final-Release.exe
https://drive.google.com/file/d/0BzIsP2o582nbTGM0X1FWaW50OEU/edit?usp=sharing

Since Aug 27:

  • plus VS2010 ddex (from my build)
  • plus uninstaller
  • remove dbprovider instead of commenting on uninstall.
  • with ExperienceUI
  • files updated from official Npgsql-2.2.0-net45.zip, NpgsqlDdexProvider-2.2.0-VS2013.zip

Issues for now:

  • NSIS's silent installer option "/S" doesn't link to vsix installer/uninstaller options.
  • Uninstaller doesn't show component descriptions due to experienceUI's problem.

Source: installer/Setup_Npgsql.nsi
kenjiuno/Npgsql@d27b733

from npgsql.

franciscojunior avatar franciscojunior commented on June 8, 2024

Excellent, @kenjiuno !

I'll test it and will let you know if I find anything.

If everything is ok, I think we can put this installer in our downloads section so others can use it and give us feedback about it.

from npgsql.

stephenpatten avatar stephenpatten commented on June 8, 2024

I just installed and used it with ServiceStack.ORMLite T4 and it worked perfectly. Thank you!

from npgsql.

franciscojunior avatar franciscojunior commented on June 8, 2024

Thanks for your feedback, @stephenpatten !

I'll add it to our downloads section.

from npgsql.

Emill avatar Emill commented on June 8, 2024

Now when the installer is done, I think https://github.com/npgsql/Npgsql/wiki/Visual-Studio-Design-Time-Support---DDEX-Provider should be updated.

The sections about how to build and debug the ddex extension and how to edit machine.config can be removed (or moved to another page). Instead, there should be a section where to download the new installer together with instructions that all components in the installer should be selected.

The section about "Add references to Npgsql and Npgsql.EntityFramework" should be changed to install from nuget.

from npgsql.

roji avatar roji commented on June 8, 2024

We also need to have the EXE build on the build server. @kenjiuno, if you send me the build instructions I'll make sure to set it all up.

from npgsql.

kenjiuno avatar kenjiuno commented on June 8, 2024

Hi @roji!

The installer is saved at branch master-setup-0902 of https://github.com/kenjiuno/Npgsql.git

installer folder stores:

  • A NSIS script: Setup_Npgsql.nsi
  • A WiX script: NpgsqlSetup.wxs
  • 2 tools for GAC: GACInstall and GACRemove
  • A tool for machine.config: ModifyDbProviderFactories
  • Some batch files for my private build.

Build server needs some installations:

Build tools with msbuild :

  • installer/GACInstall/GACInstall.sln
  • installer/GACRemove/GACRemove.sln
  • installer/ModifyDbProviderFactories/ModifyDbProviderFactories.sln
msbuild /p:Configuration=Debug-net40 installer/GACInstall/GACInstall.sln
msbuild /p:Configuration=Debug-net40 installer/GACRemove/GACRemove.sln
msbuild /p:Configuration=Debug-net40 installer/ModifyDbProviderFactories/ModifyDbProviderFactories.sln

NSIS compiler command line:

"C:\Program Files (x86)\NSIS\makensis.exe" Setup_Npgsql.nsi

Input files (working folder is installer):

bin\Debug-net40\GACInstall.*
bin\Debug-net40\GACRemove.*
bin\Debug-net40\ModifyDbProviderFactories.*

Npgsql-${VER}-net45\*.dll
Npgsql-${VER}-net45\NpgsqlDdexProvider.vsix

Npgsql-${VER}-net40\NpgsqlDdexProvider.vsix

${VER} = 2.2.0.0

Please let me know if it needs any tweaks!
Thanks.

from npgsql.

kenjiuno avatar kenjiuno commented on June 8, 2024

Hi!

If you don't mind, I will write an automated setup builder project for msbuild, and then send a pull request.

from npgsql.

roji avatar roji commented on June 8, 2024

@kenjiuno, that would be great - this way the EXE would be produced as part of the build... thanks!

from npgsql.

kenjiuno avatar kenjiuno commented on June 8, 2024

Hi.

I have built setup for 2.2.1

Setup_Npgsql-2.2.1.0.exe
https://drive.google.com/file/d/0BzIsP2o582nbSlhtRGNkdmUzcGs/view?usp=sharing

It can be built by msbuild.
The setup for Npgsql 2.2.x is located at another branch Branch_v2.2.1_with_setup (kenjiuno/Npgsql@6973e08) because of Mono.Security.dll instead of Common.Logging introduced to Npgsql 3.

from npgsql.

franciscojunior avatar franciscojunior commented on June 8, 2024

Excellent, @kenjiuno !
I'll add it to our downloads page.

Did you see this issue: #383 ? The user says that when using the .net 4.0 dll, visual studio complaints that it was compiled with .net 4.5. I'll make some tests to check what is happening.

from npgsql.

franciscojunior avatar franciscojunior commented on June 8, 2024

@kenjiuno , I just open the installer file and inside the Npgsql-2.2.1.0-net40 folder, there is only the NpgsqlDdexProvider.vsix, while in the Npgsql-2.2.1.0-net45 folder, there is the ddex and Npgsql.dll as well. Is this expected? I think there should be a Npgsql.dll file inside the *-net40 folder.

from npgsql.

kenjiuno avatar kenjiuno commented on June 8, 2024

Hi @franciscojunior

*-net40 contains ddex for VS2010.
*-net45 contains ddex for VS2012/VS2013.

VS2014 CTP may need another vsix package for ddex.

I think there should be a Npgsql.dll file inside the *-net40 folder.

Ok, I will modify installer to contain net40 version too!

Did you see this issue: #383 ? The user says that when using the .net 4.0 dll, visual studio complaints that it was compiled with .net 4.5. I'll make some tests to check what is happening.

Yes, I have checked it. It is complex problem to be solved for now.

GAC will feed only one Npgsql.dll regardless of the .net framework version (4.0 or 4.5)

So, user or developer need to remove Npgsql.dll from GAC for instance, or try Npgsql which has another assembly version. This annoys end user...

from npgsql.

franciscojunior avatar franciscojunior commented on June 8, 2024

Em sexta-feira, 17 de outubro de 2014, kenjiuno [email protected]
escreveu:

Hi @franciscojunior https://github.com/franciscojunior

*-net40 contains ddex for VS2010.
*-net45 contains ddex for VS2012/VS2013.

VS2014 CTP may need another vsix package for ddex.

I think there should be a Npgsql.dll file inside the *-net40 folder.

Ok, I will modify installer to contain net40 version too!

Ahhh, now I remember... The installer had only support for net45. I forgot
about that and didn't add a proper message about that. Sorry for that,
Kenji.
And thank you for having a look at net40 support. If it is too much
complicated to add two versions in the same installer, I think we can
create two separated installers: one for net40 and another for net45.

Did you see this issue: #383 #383

? The user says that when using the .net 4.0 dll, visual studio complaints
that it was compiled with .net 4.5. I'll make some tests to check what is
happening.

Yes, I have checked it. It is complex problem to be solved for now.

GAC will feed only one Npgsql.dll regardless of the .net framework version
(4.0 or 4.5)

So, user or developer need to remove Npgsql.dll from GAC for instance, or
try Npgsql which has another assembly version. This annoys end user...

I wasn't aware of that. Thanks for the heads up, Kenji!
This is really annoying. I think we have to add that information to our
documentation so users know what to do when this issue happens.

Thanks for your comments and explanations, @kenji!


Reply to this email directly or view it on GitHub
#128 (comment).

Regards,

Francisco Figueiredo Jr.
Npgsql Lead Developer
http://www.npgsql.org
http://gplus.to/franciscojunior
http://fxjr.blogspot.com
http://twitter.com/franciscojunior

from npgsql.

kenjiuno avatar kenjiuno commented on June 8, 2024

Hi.

And thank you for having a look at net40 support. If it is too much
complicated to add two versions in the same installer, I think we can
create two separated installers: one for net40 and another for net45.

It can be done, net40/net45 in same installer.

I will code the installer to use internal MSBuild task.

It is already done for ddex 2010 compilation.

    <!-- Call internal MSBuild to prepare NpgsqlDdexProvider2010 binary. for Vs2010/2012/2013 -->

    <MSBuild Projects="..\NpgsqlDdexProvider\NpgsqlDdexProvider2010.csproj" 
             Properties="Configuration=Release-net40" 
             Targets="Build" />

It is useful to build multiple configurations (net40/net45) in one solution build session.

So, I want to build the following 2 configurations in one build session. And may I use it inside the installer.csproj?

  • Npgsql Release-net40
  • Npgsql Release-net45

from npgsql.

kenjiuno avatar kenjiuno commented on June 8, 2024

Hi.

I have updated setup programs.

Setup_Npgsql-2.2.3.0-net45.exe
https://drive.google.com/file/d/0BzIsP2o582nbZ21TTDhjZWFjSGM/view?usp=sharing

Setup_Npgsql-2.2.3.0-net40.exe
https://drive.google.com/file/d/0BzIsP2o582nbcnZjdWRHRkVvd1E/view?usp=sharing

I hope setups will be uploaded at its release:
https://github.com/npgsql/npgsql/releases/tag/v2.2.3

from npgsql.

franciscojunior avatar franciscojunior commented on June 8, 2024

I hope setups will be uploaded at its release:
https://github.com/npgsql/npgsql/releases/tag/v2.2.3

Done!

Thank you very much, @kenjiuno!

from npgsql.

dropyghost avatar dropyghost commented on June 8, 2024

I just installed and got same error on both Npgsql 2.2.2.0 and Npgsql 2.2.3.0 setup.
image

from npgsql.

dropyghost avatar dropyghost commented on June 8, 2024

Once is installed, what are the steps to connect with the postgres db and create the model?

nevermind i found the tutorial
https://github.com/npgsql/npgsql/wiki/Visual-Studio-Design-Time-Support---DDEX-Provider

from npgsql.

kenjiuno avatar kenjiuno commented on June 8, 2024

Hi @dropyghost

Thank you for trying it!
Feel free to contact us if you have any problems.

thanks
kenji uno

from npgsql.

kenjiuno avatar kenjiuno commented on June 8, 2024

I have noticed that current Setup doesn't contain Npgsql.EntityFrameworkLegacy!

So, you may see the following message, when you open the ADO.NET Entity Data Model Designer for an edmx file connected to PostgreSQL via Npgsql ddex:

Cannot load 'xxx.edmx': Could not load Npgsql.EntityFrameworkLegacy assembly, is it installed?

legacyef

I'll fix this in next setup release.

from npgsql.

kenjiuno avatar kenjiuno commented on June 8, 2024

Hi.

I have updated setup programs. It includes fix for #422 and includes Npgsql.EntityFrameworkLegacy.

Setup_Npgsql-2.2.3.0-r2-net40.exe
https://drive.google.com/file/d/0BzIsP2o582nbUXpmZHl0SWVQMkk/view?usp=sharing

Setup_Npgsql-2.2.3.0-r2-net45.exe
https://drive.google.com/file/d/0BzIsP2o582nbYURXODlzbUx4SjA/view?usp=sharing

I will post a pull request for fix #422

from npgsql.

franciscojunior avatar franciscojunior commented on June 8, 2024

Excellent, @kenjiuno !

I just updated the installers in our downloads section.

Thank you very much for your work on this! You rock!

from npgsql.

roji avatar roji commented on June 8, 2024

Closed as we already have an installer

from npgsql.

ramarivera avatar ramarivera commented on June 8, 2024

Hello. I'm really sorry if this is a "dumb question", but where can I find *.exe installers for npgsql 3.X.X?

from npgsql.

kenjiuno avatar kenjiuno commented on June 8, 2024

Hi.

Npgsql 3.x setup is not officially released yet, and won't be released.

Try NuGet to obtain official packages: Npgsql, EntityFramework6.Npgsql and such.

If you need for EntityDataModel wizard of VisualStudio, you can try my VSIX installer:
https://github.com/kenjiuno/Npgsql/releases

This kind of discussion will move to newer topic: #718

from npgsql.

ramarivera avatar ramarivera commented on June 8, 2024

@kenjiuno thank you very much, that's exactly why I needed the exe installers.

from npgsql.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.