我想在[Icons]使用Inno Setup的部分中使用命令提示符重新启动Windows服务.请帮我解决问题.
如果需要特权提升,Inno Setup安装程序具有可用于控制安装程序启动时的PrivilegesRequired指令.我希望我的安装程序甚至可以为非管理员用户工作(没有问题将我的应用程序安装到用户文件夹,而不是Program Files).所以我设置PrivilegesRequired为none(未记录的值).这使得UAC仅为管理员用户提示弹出,因此他们甚至可以安装到Program Files.没有UAC提示非管理员用户,所以即使他们可以安装应用程序(到用户文件夹).
这有一些缺点:
是否有一些方法可以在需要时(当用户选择仅由管理员帐户写入的安装文件夹时)使Inno Setup请求权限提升?
我假设在Inno Setup中没有这个设置.但可能有一个程序化的解决方案(Inno Setup Pascal脚本)或某种插件/ DLL.
请注意,即将推出的Inno Setup 6具有对非管理安装模式的内置支持.
Inno安装程序无法在卸载期间删除组件,因为我的程序仍在运行,并且无法删除可执行文件.在允许卸载之前,如何检查它是否正在运行?
我在inno安装程序中为一个应用程序创建了安装程序,我正在尝试在安装后运行应用程序,但是我在Windows 7下收到此消息:
请求的操作需要提升.
我知道这是因为管理员权限.有没有办法克服这个问题(除了以管理员身份运行setup.exe)?
我使用[run]部分使用支持commandeline的commandmerit.exe修改某些编解码器的优值.
所以语法是:
Commandmerit.exe "{E2B7DF46-38C5-11D5-91F6-00104BDB8FF9}" "0x800000"
Run Code Online (Sandbox Code Playgroud)
{E2B7DF46-38C5-11D5-91F6-00104BDB8FF9}是编解码器的CLSID,
0x800000是新优点的值,但是当我把这一行放在[run]部分中时:
Filename: "{app}\Commandmerit.exe"; Parameters: ""{F8FC6C1F-DE81-41A8-90FF-0316FDD439FD}" "0x10000000""; WorkingDir: "{app}"
Run Code Online (Sandbox Code Playgroud)
显示流动错误:
参数的状态不匹配或错位.
如果我把这一行:
Filename: "{app}\Commandmerit.exe"; Parameters: """{F8FC6C1F-DE81-41A8-90FF-0316FDD439FD}" "0x10000000"""; WorkingDir: "{app}"
Run Code Online (Sandbox Code Playgroud)
显示流动错误:
未知的常数......如果......使用两个连续的"{"
如果我把这一行:
Filename: "{app}\Commandmerit.exe"; Parameters: """{{F8FC6C1F-DE81-41A8-90FF-0316FDD439FD}}" "0x10000000"""; WorkingDir: "{app}"
Run Code Online (Sandbox Code Playgroud)
然后没有显示错误,但似乎commandmerite.exe不理解参数,所以在安装程序完成后,优点仍然没有改变
我正在扩展我的Inno-Setup脚本,其中包含我最好在托管DLL中的C#中实现的代码.我已经知道如何从托管DLL导出方法作为在非托管进程中使用的函数.它可以通过IL编织来完成,并且有一些工具可以实现自动化:
因此,在导出后,我可以在Inno-Setup安装程序中从Pascal脚本调用我的函数.但是有一个问题:DLL似乎不再被卸载了.使用Inno-Setup UnloadDLL(...)无效,文件将保持锁定状态,直到安装程序退出.因此,安装程序等待2秒,然后无法从临时目录(或安装目录)中删除我的DLL文件.事实上,它确实存在,直到有人清理驱动器.
我知道无法再从AppDomain卸载托管程序集,除非整个AppDomain关闭(进程退出).但是对于非托管主机进程意味着什么呢?
是否有更好的方法允许Inno-Setup在加载和使用后卸载或删除我的DLL文件?
问题:
当我运行Inno安装批处理执行时,我收到Maven错误"JAVA_HOME环境变量未正确定义".但是,我能够在Inno Setup之外成功运行.(例如命令行,批处理文件,Vbs).我无法确定问题.
Inno Setup Invoked Prompt:
C:\>mvn -version
The JAVA_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: JAVA_HOME should point to a JDK not a JRE
Run Code Online (Sandbox Code Playgroud)
常规命令提示符:
C:\>mvn -version
C:\
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-04T01:09:06+05:30)
Maven home: C:\Program Files\apache-maven-3.5.0\bin\..
Java version: 1.8.0_131, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_131\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"
Run Code Online (Sandbox Code Playgroud)
来自InnoSetup的Maven Command:
[Files]
Source: "C:\@Setup\MavenInstaller.bat"; …Run Code Online (Sandbox Code Playgroud) 如何通过Innosetup删除桌面快捷方式?它是由以前的版本创建的,不再需要了.我尝试在[InstallDelete]中删除它
[InstallDelete]
Type: files; Name: {userdesktop}\Shortcut Name
Run Code Online (Sandbox Code Playgroud)
并删除CurStepChanged事件处理程序的"ssInstall"中的文件
DeleteFile(ExpandConstant('{userdesktop}\Shortcut Name'));
Run Code Online (Sandbox Code Playgroud)
但它们不起作用.任何建议表示赞赏!
我用Inno Setup创建了一个安装程序.用于桌面快捷方式和开始菜单的图标嵌入在应用程序可执行文件中.
最初创建安装程序时,我没有设计团队的最终产品图标.当我完成安装程序时,我使用了临时图标.
一切都按原样运作,直到我更改了最后一个图标.现在桌面快捷方式和开始菜单图标始终显示旧图标,即使图标正确无处不在.
这是脚本的Icon声明部分.
[Icons]
Name: {group}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; WorkingDir: {app}
Name: {group}\{cm:UninstallProgram,{#MyAppName}}; Filename: {uninstallexe}; IconFilename: {app}\Icons\stop.ico
Name: {commondesktop}\{#MyAppVersionName}; Filename: {app}\{#MyAppExeName}; Tasks: desktopicon; WorkingDir: {app}
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的:(这是一个Windows 7系统)
如果我查看快捷方式属性,并选择"更改图标",我会看到正确的图标.重新选择它没有任何效果.我也尝试过选择一个不相关的图标然后重新选择正确的...仍然显示旧图标.
我遵循建议删除IconCache.db并重新启动机器,但这也没有效果.
世界上哪里有旧图标?安装程序中没有任何地方.
想法有人吗?
inno-setup ×10
privileges ×2
.net ×1
c# ×1
com ×1
icons ×1
installer ×1
maven ×1
pascalscript ×1
uac ×1
unmanaged ×1
windows-7 ×1