【问题标题】:install in ProgramData folder using NSIS使用 NSIS 安装在 ProgramData 文件夹中
【发布时间】:2020-03-13 17:27:28
【问题描述】:

我想使用nsis installerC:\ProgramData 文件夹中安装一些应用程序数据。我想避免对其进行硬编码,因为它可能不在C: drive 上。

文档https://nsis.sourceforge.io/Docs/Chapter4.html 没有任何定义ProgramData 的常量。 nsisProgramData文件夹中的安装方式是什么?

【问题讨论】:

    标签: windows-installer nsis


    【解决方案1】:

    Microsoft 移动并重命名了 Vista 中的一些特殊文件夹。 %ProgramData%CSIDL_COMMON_APPDATA,你可以在 NSIS 中获得该路径:

    Section
    SetShellVarContext all
    MessageBox MB_OK "$LocalAppData"
    SetOutPath "$LocalAppData\MyAppsData" 
    File /r mydata\*.*
    SectionEnd
    

    【讨论】:

    • SetShellVarContext 仅适用于部分本身还是全局的?
    • @Smile4ever 它是全球性的,直到您再次更改它为止。理想情况下,您只需将其设置在 .onInit 中。如果为单个用户安装,请将其设置为“当前”,如果安装到 $ProgramFiles,请将其设置为“全部”。
    【解决方案2】:

    你可以使用GetKnownFolderPath:

    GetKnownFolderPath $0 {62AB5D82-FDC1-4DC3-A9DD-070D1D495D97} ; FOLDERID_ProgramData
    MessageBox MB_OK $0
    

    【讨论】:

      猜你喜欢
      • 2011-04-13
      • 1970-01-01
      • 1970-01-01
      • 2011-11-18
      • 1970-01-01
      • 2012-05-13
      • 1970-01-01
      • 2016-10-10
      • 1970-01-01
      相关资源
      最近更新 更多