VS2015 打包winform程序失败,怎么办

VS2015 打包winform程序失败,怎么办,第1张

这个问题是由于权限辩陵御问题导致携岩的。解决方法如下: 1)如果一定要安装到 C:\Program Files目录下,你必须以“管理员身份”运行安装程序。 2)以普通省份运行安装程序的汪橡话,可以安装到除了C:\Windows和C:\Program Files目录外其他任意一个地方

首先去网上下载opencv,安装(其实伏消就是解压)

解压安装完成后,找到路径,记录下来

然后打开vs2015,新建一个空白的c++控制台程简桥序

新建完成后找到属性右键添加一个配置文件,注意编译环境

然后双击打开配置文件,在c/c++的附加包含目录指定拦厅猛路径到inlcude文件目录

点击链接器,在附加库目录指定目录到lib下面

最后链接器-》输入指定lib文件,该文件名可以在lib目录下查看

最后把sample里的cpp文件添加到工程运行即可

在一般情况下,InstallShield默认的安装文件夹是存放Windows程序文件夹(Program files)的完整路径,即C:\ Program files(如果Windows安装在C盘的话)。但是,在绝大多数情况下我们都希望客户将应用程序安装在单独的数据盘上,即不与 *** 作系统安装在同一个硬盘分区里。一方面便于管理,另一方面也为了防止我们的程序因为系统盘格式化而受到连累。因此,我们常常会建议用户在安装应用程序的时候选择另一个硬盘,如D盘。

另外,我们有时希望我们所开发出来的应用程序安装在一个带有自己公司名称和应用程序名称的目录下。InstallShield默认的目录就做的非常好,她会建立一个诸如“C:\Program Files\ABCD软件工作室\Demo”的目录(在这里我虚构了一个公司“ABCD软件工作室”)。但,问题是,一旦让用户选择了其它的路径,或者硬盘,他们几乎都不会在目录上加上开发商和应用程序目录,“\ABCD软件工作室\Demo”。如果用户仅仅选择了磁盘而忘了选择任何目录的话,InstallShield就会将所有的程序和数据文件复制到磁盘根目录下,用户和我们当然都不希望这样。信让因此,为了避免这一切的发生我们只能寄希望于我们的安装程序能够有足够的智能来应付这一切,这样就不管用户是否选择了目录。实现方法如下。

在事件OnFirstUIBefore中找到Dlg_SdAskDestPath分支,如下

Dlg_SdAskDestPath:

szTitle = ""

szMsg = ""

nResult = SdAskDestPath( szTitle, szMsg, szDir, 0 )

TARGETDIR = szDir

if (nResult = BACK) goto Dlg_SdRegisterUserEx

我们首先需要定义一个临时字符串变量svTemp

STRING svTemp

然后,将语句

nResult = SdAskDestPath( szTitle, szMsg, szDir, 0 )

TARGETDIR = szDir

修改成滑汪局如下:

svTemp = szDir

nResult = SdAskDestPath( szTitle, szMsg, szDir, 0 )

if ( svTemp != szDir) then

szDir = szDir^@COMPANY_NAME ^@PRODUCT_NAME

endif

TARGETDIR = szDir

该语句的功能是在用户选择的路径后加上单位和应用程序名称作为安装的目录(注:这里我并没有考虑到用户在选择了默认外的路径后加上单位和应用程序名称作为安装目录的情况)。其中,变量COMPANY_NAME 和PRODUCT_NAME中存放的是单位名和产品名,我们可以随时在资源面板中修改它的值。

变量TARGETDIR是指向在硬盘上目的文件夹的完整路径。当调用函数SdAskDestPath时,该函数会创建一个对话框来让用户选择应用程序要存陵汪放的目的路径。

不要以为加上了单位和程序的目录就万事大吉了,可别忘了既然让用户来选择安装的目的盘就很有可能出现磁盘空间不够大,从而导致程序的安装失败或安装后的剩余空间不够程序将来数据的存放等等。因此,必须在用户选择之后,程序进入下一步之前对目的盘的可用空间进行判断。在这里我假设我们的程序需要10兆的空间来存放目前的文件和未来几年可能的数据。

为了达到上述目的就必须知道:

1、 用户最终选择的是哪个硬盘

2、 该硬盘当前的剩余空间是多少

那么,如何来实现呢?幸好InstallShield为我们提供了足够多的函数来应付这一切。

函数一:GetDisk

该函数从指定的路径或带有路径的文件名当中提取该路径或文件所在的磁盘驱动器号。调用成功返回0,否则返回小于0的任何数。

函数二:GetDiskSpace

该函数返回指定磁盘或指定路径所在磁盘的剩余空间,用字节表示。

具体实现代码如下:

//*******加入磁盘剩余空间判断,目前判断剩余空间是否少于10M

//******* 10M * 1024千字节 * 1024字节 = 10485760 字节

GetDisk (szDir, svDrive)

lFreeSpace = GetDiskSpace (svDrive)

if (lFreeSpace <10485760) then

MessageBox("警告:安装路径所在的磁盘空间不足10M!请重新选择!",SEVERE)

goto Dlg_SdAskDestPath

endif

// end.

我们只要将这段代码放入语句

if (nResult = BACK) goto Dlg_SdRegisterUserEx

之前就行了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8235853.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存