2011-06-03 51 views
2

嗯,我使用Visual C++ 2010 Express和我的MIDI音序器的安装应用的ResEdit 安装在Windows 7上排除故障的兼容性PCA - “此程序可能没有正确安装”

的Win32 API,没有MFC,一些自定义窗口和控制类和这样。

现在,我得到了Windows 7中,我党SETUP程序是破产了。

的Windows给我的OLE“难道这个程序正确安装?”啄。 这意味着我的安装程序有些问题。

我试着去弄清楚这可能是...

我见过这2个SO线程:

"This program might not have installed correctly"

"This program might not have installed correctly" message in Windows 7 RC

而曾经使我这些地方:

http://msdn.microsoft.com/en-us/library/dd371711(VS.85).aspx

http://msdn.microsoft.com/en-us/library/bb756937.aspx

http://msdn.microsoft.com/en-us/library/aa905330.aspx#wvduac_topic3

http://blogs.msdn.com/b/cjacks/archive/2009/06/18/pca-changes-for-windows-7-how-to-tell-us-you-are-not-an-installer-take-2-because-we-changed-the-rules-on-you.aspx

http://community.flexerasoftware.com/archive/index.php?t-189007.html

只有我使用注册表项是标准的卸载点和 协会的文件类型。

SETUP在程序文件\ pianocheater目录 中写入一个dat.cfg文件,指向所有应用程序的数据所在的位置。 (只是一个文本文件,其中有一个路径) (和一个用于该数据目录中的临时目录等等.cfg目录使用。)

所以我只从程序文件\ pianocheater后安装READING。

有人可以想到为什么Windows不喜欢安装? 源代码位于http://shazware.com/_etc/SETUP_PIANOCHEATER.cpp 它使用我的窗口库,控制类在精神上类似于mfc。 我也可以发送它的有用部分。

这对安装应用程序并不是太糟糕。 对于一个win32家伙/ gal应该是非常可爱的。

我可以uuuuuse一些he'p ...:/

噢,我要指出的是,围棋()的入口点,而不是主要的()。 DBG()只是做OutputDebugString(),看起来都运行得很好。 TStr只是一个大字符[MAX_PATH](我不会做Unicode)

而这个技巧可能是我在win7 64位上,但这是一个32位的应用程序。 虽然我很确定我正在为assoc和卸载点正确使用注册表。

那么,我应该做的清单xml的东西? 还是有更正确的方法来做事吗?

感谢了,

...史蒂夫

+0

你为什么要编写自己的安装程序?为什么不使用工具来构建安装程序?该工具将会正确。 – 2011-06-03 20:02:08

+0

好吧,我只是想自己做。这个应用程序是我的爱好,我只想知道安装程序是做什么的。 – 2011-06-04 15:21:54

回答

3

首先,检查邮件是否是假阳性或没有。您看到的消息旨在使用启发式(可能错误!)来确定安装程序是否因Windows Vista/7兼容性问题而失败。如果您的安装程序实际上与Windows 7/Vista兼容,那么您只需添加清单declaring itself compatible。您还需要向清单中添加requestedExecutionLevel entry以请求提升。

如果您的安装程序实际上失败了,当然,那么您应该先解决它。最后,如果由于启动程序可执行文件提前退出等原因而显示错误,请考虑通过向启动程序添加适当的清单条目来抑制安装程序检测(如果发现错误,则可以使用的asInvoker if启动程序不需要管理访问权限; requestedExecutionLevel清单条目的存在应为suppress installer detection)。请注意,您应确保使用ShellExecute来调用您的主安装程序进程,而不是CreateProcess,否则UAC可能无法提升子进程。

+0

非常感谢 - 感谢帮助!好吧,我只是做清单的事情(reqExLevel和Vista,win7 guids)需要完成的一切(根据我)是。如果应用程序已安装,我的应用程序也会重新安装 - 在这种情况下,将不会有任何 - 添加 - 添加/删除程序条目。我也会检查一下,然后举起双手(只要表单能够消除抱怨)。 – 2011-06-04 15:30:31