我创建了一个具有 ini 文件和 db.mdb(访问)的应用程序,它将一些图像从 web 下载到 App 附近的文件夹中。
好吧,我用 Setup Factory Software 创建了一个安装文件。一切似乎都很好,我启动了我的应用程序,它没有改变 ini 文件的值,没有下载图像,也没有向 db 插入任何记录。
这是我的应用程序的路径,C:\Program Files (x86)\XXXXXXX
这是将行插入数据库的代码
public void AddChannels(List<MediaChannel> list)
{
string connectionString = "Provider=Microsoft.Jet.OleDb.4.0; Data Source=data\\db.mdb;";
try
{
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = connection;
connection.Open();
int tmp1;
string tmpstr;
foreach (var mediaChannel in list)
{
tmp1 = mediaChannel.ImagePath.LastIndexOf('/');
tmpstr = mediaChannel.ImagePath.Substring(tmp1+ 1, mediaChannel.ImagePath.Length - tmp1 - 1);
cmd.CommandText = "Insert Into Channels(ChannelName,CategoryName,Url,ImagePath,ChannelType) values(@ChannelName,@CategoryName,@Url,@ImagePath,@ChannelType)";
cmd.Parameters.AddWithValue("@ChannelName", mediaChannel.Name);
cmd.Parameters.AddWithValue("@CategoryName", mediaChannel.CategoryName);
cmd.Parameters.AddWithValue("@Url", mediaChannel.Url);
cmd.Parameters.AddWithValue("@ImagePath", tmpstr);
cmd.Parameters.AddWithValue("@ChannelType", (int)mediaChannel.ChannelType);
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
connection.Close();
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
这是我的图片下载方法
private void DownloadLogo()
{
string localFilename = Application.StartupPath + @"\Imgs\";
if (!Directory.Exists(localFilename))
Directory.CreateDirectory(localFilename);
foreach (var mediaChannel in channelList)
{
string imgName = mediaChannel.ImagePath;
if (imgName.Contains("http://"))
{
int tmp1 = mediaChannel.ImagePath.LastIndexOf('/');
imgName = mediaChannel.ImagePath.Substring(tmp1 + 1, mediaChannel.ImagePath.Length - tmp1 - 1);
}
if (!File.Exists(localFilename + imgName))
{
using (var client = new WebClient())
{
client.DownloadFile(mediaChannel.ImagePath, localFilename + imgName);
}
}
}
}
一切看起来都很好,我从来没有遇到过这种问题。如果我以管理员身份运行我的程序,它可以工作......
还有一件事,我打开了位于 C:\Program Files (x86)\XXXXXXX\data 中的数据库,我使用了 MS Access,有趣的是,我无法编辑表。它说我需要保存为文件以进行更改。我认为程序文件(86)受 UAC 保护。我的操作系统是 Windows 8 Professional。
也许安装程序会这样?因为安装屏蔽设置的许可证有限,我无法使用 Visual Studio 设置,所以我使用了第 3 部分设置制造商应用程序。
那么,如何解决这个问题呢?我的客户正在等我解决这个问题..