Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Inno setup 在同一台PC上安装多个intances-Inno设置-这是正确的方法吗?_Inno Setup - Fatal编程技术网

Inno setup 在同一台PC上安装多个intances-Inno设置-这是正确的方法吗?

Inno setup 在同一台PC上安装多个intances-Inno设置-这是正确的方法吗?,inno-setup,Inno Setup,我的应用程序可以在同一台电脑上多次安装。不同之处在于执行安装程序的网络路径。 因此,我使用安装程序路径的散列动态生成AppId。通过这种方式,如果您从相同的路径启动安装程序,它将获得相同的appId并进行更新。如果路径不同,将安装新实例 我也有一个小问题。可以更改网络路径。现在,用户需要完全重新安装应用程序,否则在更新后,它将获得一个新的AppId,并将像新应用程序一样安装 因此,我正在考虑将第一个生成的appId保存在文件夹中的某个文件中,安装程序将从那里执行,然后从那里获取它 问题是,这是否

我的应用程序可以在同一台电脑上多次安装。不同之处在于执行安装程序的网络路径。 因此,我使用安装程序路径的散列动态生成AppId。通过这种方式,如果您从相同的路径启动安装程序,它将获得相同的appId并进行更新。如果路径不同,将安装新实例

我也有一个小问题。可以更改网络路径。现在,用户需要完全重新安装应用程序,否则在更新后,它将获得一个新的AppId,并将像新应用程序一样安装

因此,我正在考虑将第一个生成的appId保存在文件夹中的某个文件中,安装程序将从那里执行,然后从那里获取它


问题是,这是否是满足我所有需求的正确方法。

您的用户不应该更改安装目录(或您所说的网络路径)。安装Windows应用程序后,我不希望能够将文件夹名称和/或路径C:/ProgramFiles/MyApp更改为C:/ProFil/MyAppChangedName,并希望该应用程序仍能正常运行

既然您说AppId当前不在应用程序的安装目录中,那么您的AppId当前存在于何处(注册表?)

您当前的“设置”是否适用于多个安装,或者由于AppId仅存在一次,且适用于多个安装,因此该设置是否也已中断

拥有安装程序并期望能够在一台计算机上安装多个实例的情况并不常见。通常,注册表更改和AppData目录将无法正常运行。但有些应用程序似乎并不介意(Eclipse等)

您可以将应用程序ID放入AppData文件夹中的文件/文件夹中,并在该文件中列出所有应用程序ID以用于更新。这样,您的AppID位于一个不变的文件夹路径(网络路径)中

除此之外,看起来您使用的是第三方应用程序安装包“Inno Setup”。我不熟悉,但在第二次运行安装程序时,它不应该向用户显示“修复”、“更新”、“重新安装”、“卸载”等选项

我假设问题是,当您运行安装程序时,您希望它知道是否在没有用户交互的情况下更新和安装“new”

通常,更新应用程序是在应用程序内完成的。示例:在应用程序中,单击文件->更新

您还可以添加一个任务调度程序(Google添加了一个带有Chrome的)任务,以便每周自动运行更新等


我希望应用程序在用户每次打开应用程序时检查更新。如果需要更新,您可以在该点检查文件夹路径(因为它应该位于exe当前运行的位置),如果找不到,用户可以将您指向所需的应用程序实例网络路径(文件夹路径)进行更新。

请解释这一切。为什么您要从不同的位置安装相同的应用程序,并将它们视为不同的应用程序?您所说的“正确”方式是什么意思?您是否针对您的每个需求进行了测试?如果是这样的话,它是否满足了这些要求/通过了呢?您最好在软件工程方面提出这个问题,而不是堆栈溢出;这是一个高层次的设计问题,并不像目前的措辞那样要求客观的答案。@MartinPrikryl,我们有一个windows应用程序。它用于处理某些公司的某些数据。一个应用程序只能与一家公司合作。通常应用程序位于共享驱动器上,因此许多用户都可以使用它。为了让它工作得更快,我创建了一个安装程序(inno setup),它将应用程序的大部分复制到本地用户。我们还为每个公司在共享驱动器上安装了不同的设备。如果用户在同一台电脑上与多家公司合作,他也可以使用安装程序复制此安装中的大部件。@TylerH,是的,这更多是设计问题,但使用的inno安装程序也非常详细,软件工程中没有特别的标签。详细答案请向您咨询。AppId通常存储在注册表和卸载日志文件中,如果使用相同的AppId启动此安装程序,将执行更新。AppId保存在“setup.exe”中是不可变的,但也可以通过启动此“setup.exe”来计算,我的情况就是如此。我喜欢您将AppId保存在AppData文件夹中的建议。我会考虑做的。非常感谢。