我的项目和我为它设置的设置存在很大问题。 我的应用程序是在VS2005中,它在Windows 7的ApplicationData文件夹中安装了一个MDF文件(SqlExpress 2005)。
我遇到的第一个问题是当安装程序将MDF和LDF放入ApplicationData\MyApplication
文件夹时,权限错误,然后我的应用程序无法访问要附加到SQL Express的文件。
所以我所做的是一个自定义动作,给予每个人权限(我知道......这不是很好)。好的,到目前为止我的应用程序都适用。
我面临的第二个问题是,如果用户不是默认的管理员帐户,当他执行msi文件时,MSI在尝试运行自定义操作时会显示2869错误。有了这个问题,我必须强制用户执行setup.exe而不是MSI文件。或者,如果用户执行MSI文件,则以某种方式进行正确的设置。
我在PostBuildEvent中阅读了有关NoImpersonate和NoImpersonate.js脚本的内容:
cscript.exe "$(ProjectDir)NoImpersonate.js" "$(BuiltOuputPath)"
但是当我这样做时,我的应用程序中的某些文件夹或错误日志不会被创建。
我希望我提供了所有信息。我需要解决这个问题,我不知道怎么做。
修改
我写了错误的目录。它不是ApplicationData,目录是ProgramData。对不起。
答案 0 :(得分:1)
我得到的第一个问题是什么时候 安装程序将mdf和ldf放入 ApplicationData \ MyApplication文件夹, 权限错误
您使用的是用户Application Data文件夹还是所有用户文件夹?另外,您需要什么权限?
如果使用每用户文件夹,则无需设置任何权限。如果您使用的是所有用户文件夹,则应用程序应始终以管理员权限运行,以便可以在该位置写入。
我面临的第二个问题是,如果 用户,不是默认值 管理员帐户,然后是用户 执行,msi文件,然后是msi 尝试时执行2869错误 制作自定义动作。
这是因为自定义操作失败。您的方法不正确,您不需要为Application Data文件夹设置自定义权限。所以你不需要任何自定义动作。