Inno setup 为所有用户安装应用程序和数据库

Inno setup 为所有用户安装应用程序和数据库,inno-setup,Inno Setup,我正在尝试使用最新的inno设置来部署我的程序。似乎我不能(也不推荐)将我的程序安装到program Files文件夹,因为它会给出一些限制(例如,我的程序在使用程序中修改数据库的部分时总是有问题,除非它是作为管理员启动的)。我在某个地方读到,我们应该要求inno安装程序在CSIDL_APPDATA安装我们的程序,但我对inno安装程序不是很熟悉。如何使用Inno安装程序执行此操作?应用程序本身应安装到{pf}下的文件夹(程序文件)中。 但是,应用程序数据(或数据库)应该放在{commonapp

我正在尝试使用最新的inno设置来部署我的程序。似乎我不能(也不推荐)将我的程序安装到program Files文件夹,因为它会给出一些限制(例如,我的程序在使用程序中修改数据库的部分时总是有问题,除非它是作为管理员启动的)。我在某个地方读到,我们应该要求inno安装程序在
CSIDL_APPDATA
安装我们的程序,但我对inno安装程序不是很熟悉。如何使用Inno安装程序执行此操作?

应用程序本身应安装到
{pf}
下的文件夹(程序文件)中。 但是,应用程序数据(或数据库)应该放在
{commonappdata}
下面的文件夹中。如果数据库将由普通用户修改,则需要设置此文件夹的权限(使用
permissions
参数)。如果它是特定于用户的,他们可以将默认值复制到用户的appdata文件夹并进行修改

[Dirs]
Name: {commonappdata}\i-Catcher Console; permissions: everyone-modify admins-full;

在使用Access应用程序时,如果该应用程序将UI内置到数据库中,则会出现复杂性。在这种情况下,两个位置都一样糟糕(
{commonappdata}/blah
稍微好一点)但是,您需要根据需要设置权限。

可能您误解了您阅读的内容,事实上,它可能建议您将数据文件部署到CSIDL_APPDATA,并将程序部署到程序文件。但是如果我将数据库和应用程序放在不同的文件夹中,这会产生问题,因为在我的c#代码中我只使用String connString=“Data Source=recipes.db”;这意味着recipes.db应该与主可执行文件位于同一文件夹中,不是吗?在各种情况下都会失败。您应该修复它以确定应用程序数据文件夹,并使用完全限定的路径。emmm。。我如何在c#中做到这一点?我的意思是类似字符串connString=“Data Source=“+installedfolder+”recipes.db”的内容,在C#中,您可以使用类似以下内容获取路径:
String path=Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)+@“\i-Catcher Console\Logs\”。正如我在回复中所说,您不应该使用数据库的安装路径。除非您绝对需要由多个用户帐户共享数据库(这并不常见),否则您应该只在
{app}
{commonappdata}
中安装只读模板,并使应用程序本身在其
{userappdata}
等效路径中复制此文件以供实际使用(如果尚未存在)。虽然在某些情况下需要更改权限,但应尽可能避免更改,因为它们会以某种方式降低安全性。