我正在刪除Windows啓動菜單中的一個快捷方式作爲刪除/創建的一部分基於應用程序中的設置自動啓動。QFile :: remove()工作並不起作用
我最初通過安裝創建快捷方式(我正在使用InnoSetup)。問題是我的代碼不會刪除快捷方式。但是,如果自己刪除快捷方式並讓我的代碼創建它,那麼它會將其刪除。但是快捷方式的名稱完全一樣,我甚至在代碼中檢查它是否存在,並且每次都是這樣。我需要做什麼以便在作爲安裝的一部分創建時刪除它?
void SettingsDialog::on_checkBoxAutoStart_clicked()
{
QSettings settings;
QString startupFolder = QStandardPaths::writableLocation(QStandardPaths::ApplicationsLocation) + "/Startup";
QString installPath = settings.value(INSTALL_PATH, "").toString();
// if path is empty, return
if (installPath.isEmpty())
return;
QString appPath = installPath+ "\\MyApp.exe";
// if the exe doesn't exist for any reason, return
if(!QFile(appPath).exists())
return;
QString shortcutName = startupFolder + "/MyApp.lnk";
if (ui->checkBoxAutoStart->checkState() == Qt::Checked)
{
QFile::link(appPath, shortcutName);
settings.setValue(AUTO_START, "true");
}
else
{
QFile shortcut(shortcutName);
if (!shortcut.exists())
qDebug() << "shortcut don't exist";
int shortcut_permissions = shortcut.permissions();
shortcut.setPermissions(QFile::ReadUser | QFile::WriteUser | QFile::ExeUser | QFile::ExeUser);
shortcut_permissions = shortcut.permissions();
shortcut.remove();
qDebug() << shortcut.errorString();
settings.setValue(AUTO_START, "false");
}
}
我在Windows 7
更新
它創建快捷方式的INNO-設置線運行,這是這個(我已經改名爲我的應用程序名稱通用)。
[Icons]
Name: "{commonstartup}\MyApp"; Filename: "{app}\MyApp.exe"
@KubaOber安裝程序會將其安裝在當前用戶配置文件中。我的系統也擁有管理員權限。這只是將文件複製到程序文件並在開始菜單中創建快捷方式的標準安裝。我會必須有一種方法來刪除應用程序的快捷方式,以便它自動啓動或不啓動,這是非常標準的。 – zar
@KubaOber我已經將inno-setup行添加到OP,它在開始菜單中創建快捷方式。其餘的是非常標準的文件。 – zar
你有記錄錯誤的代碼,但是我沒有看到你的問題中的任何地方,你已經說過它輸出的內容。這將是有用的信息。 –