Nsis cpack:如何在安装期间将程序与文件扩展名关联?

Nsis cpack:如何在安装期间将程序与文件扩展名关联?,nsis,cpack,Nsis,Cpack,我正在用CPack和NSIS创建一个windows安装程序。在安装过程中,应询问用户是否希望将我的程序与文件扩展名关联。至少如果您在扩展名为windows的文件上使用“打开…”时,应该告诉您可以使用我的程序打开它。有人知道怎么做吗?转到您系统上的nsis安装文件夹,从examples目录中查看makensis.nsi。它将.nsi与makensisw.exe关联。 祝你好运;) 转到系统上的nsis安装文件夹,从examples目录中查看makensis.nsi。它将.nsi与makensisw

我正在用CPack和NSIS创建一个windows安装程序。在安装过程中,应询问用户是否希望将我的程序与文件扩展名关联。至少如果您在扩展名为windows的文件上使用“打开…”时,应该告诉您可以使用我的程序打开它。有人知道怎么做吗?

转到您系统上的nsis安装文件夹,从examples目录中查看makensis.nsi。它将.nsi与makensisw.exe关联。
祝你好运;)

转到系统上的nsis安装文件夹,从examples目录中查看makensis.nsi。它将.nsi与makensisw.exe关联。
祝你好运;)

要使用NSIS创建文件关联,我建议使用Andrei T:和提到的NSIS插件。要将它们集成到CPack中,您需要包含脚本,在安装步骤中调用宏,在卸载步骤中调用其他宏。 例如,我是如何使用“文件关联”插件的:

在此实现中,它不是可选步骤

请注意双重转义。这是必需的,因为CPack使用这些字符串创建中间文件,如果仅转义一次,则会出现语法错误

还请注意,所有CMake路径都应使用反斜杠。我将其转换为:

get_filename_component(path_to_plugins"${path_to_plugins}" ABSOLUTE)
file(TO_NATIVE_PATH "${path_to_plugins}" path_to_plugins)
string(REPLACE "\\" "\\\\" path_to_plugins"${path_to_plugins}")

要使用NSIS创建文件关联,我建议使用Andrei T:和提到的NSIS插件。要将它们集成到CPack中,您需要包含脚本,在安装步骤中调用宏,在卸载步骤中调用其他宏。 例如,我是如何使用“文件关联”插件的:

在此实现中,它不是可选步骤

请注意双重转义。这是必需的,因为CPack使用这些字符串创建中间文件,如果仅转义一次,则会出现语法错误

还请注意,所有CMake路径都应使用反斜杠。我将其转换为:

get_filename_component(path_to_plugins"${path_to_plugins}" ABSOLUTE)
file(TO_NATIVE_PATH "${path_to_plugins}" path_to_plugins)
string(REPLACE "\\" "\\\\" path_to_plugins"${path_to_plugins}")

还要检查,然后我必须告诉cpack使用我的.nsi文件?还要检查,然后我必须告诉cpack使用我的.nsi文件?